def hash_with_keys(*keys)
      key_assertion = clause("contains keys #{keys.inspect}") do |o|
        ( o.keys - keys ).empty?
      end
      all? Hash, key_assertion
    end
def hash_with_keys(*keys)
      key_assertion = clause("contains keys #{keys.inspect}") do |o|
        ( o.keys - keys ).empty?
      end
      all? Hash, key_assertion
    end
Passes only if argument is a hash and does not contain any keys except
 those given.
 E.g. <tt>hash_with_keys(:foo, :bar, :baz)</tt>:

   :foo => 3                                     # passes
   :foo => 10, :bar => "foo"                     # passes
   :foo => "eight", :chunky_bacon => "delicious" # fails