function test_matchObject() { var f = true; obj1 = {foo:"hey", bar:"ho"} obj2 = {a:"1", b:"2"} p1 = {foo:"hey"} p2 = {bar:"ho"} p3 = {a:"1"} p4 = {b:"2"} /* true, single pattern, and it matches */ f &= matchObject (obj1, p1); /* false, single pattern matches, negated */ f &= !matchObject (obj1, p1, true); /* false, single pattern doesn't match */ f &= !matchObject (obj1, p3); /* true, single pattern doesn't match, negated */ f &= matchObject (obj1, p3, true); /* true, p1 matches */ f &= matchObject (obj1, [p1, p3]); /* false, p1 matches, negated */ f &= !matchObject (obj1, [p1, p3], true); /* true, both paterns match */ f &= matchObject (obj2, [p3, p4]); /* false, both patterns match, negated */ f &= !matchObject (obj2, [p3, p4], true); /* false, neither pattern matches */ f &= !matchObject (obj1, [p3, p4]); /* true, neither pattern matches, negated */ f &= matchObject (obj1, [p3, p4], true); return Boolean(f); /* you've got to find any problems by hand :) */ }