TAP version 13 # as a function # bad array/this value ok 1 undefined is not an object ok 2 null is not an object # error cases ok 3 target must be an object ok 4 target must be an object ok 5 target must be an object ok 6 target must be an object # non-object target, no sources ok 7 bool is object ok 8 bool coerces to `true` ok 9 number is object ok 10 number coerces to `1` ok 11 number is object ok 12 number coerces to `"1"` # non-object target, with sources # boolean ok 13 bool is object ok 14 bool coerces to `true` ok 15 source properties copied # number ok 16 number is object ok 17 number coerces to `1` ok 18 source properties copied # string ok 19 number is object ok 20 number coerces to `"1"` ok 21 source properties copied # non-object sources ok 22 ignores null source ok 23 ignores undefined source # returns the modified target object ok 24 returned object is the same reference as the target object # has the right length ok 25 length is 2 => 2 required arguments # merge two objects ok 26 returned object has properties from both # works with functions ok 27 returned object is target ok 28 should be strictly equal ok 29 should be strictly equal # works with primitives ok 30 returned is object form of number primitive ok 31 returned and target have same valueOf ok 32 should be strictly equal # works with window.location ok 33 ancestorOrigins is copied ok 34 href is copied ok 35 origin is copied ok 36 protocol is copied ok 37 host is copied ok 38 hostname is copied ok 39 port is copied ok 40 pathname is copied ok 41 search is copied ok 42 hash is copied ok 43 assign is copied ok 44 reload is copied ok 45 replace is copied ok 46 toString is copied # merge N objects ok 47 returned object has properties from all sources # only iterates over own keys ok 48 returned object is the same reference as the target object ok 49 returned object has only own properties from both # includes enumerable symbols, after keys ok 50 key is visited first, then symbol ok 51 target.a is 42 ok 52 target[symbol] is Infinity ok 53 target[nonEnumSymbol] is not -Infinity # does not fail when symbols are not present ok 54 assign visits expected keys ok 55 target.a is 42 ok 56 should be strictly equal # preserves correct property enumeration order # run the next test 5 times ok 57 property enumeration order should be followed ok 58 property enumeration order should be followed ok 59 property enumeration order should be followed ok 60 property enumeration order should be followed ok 61 property enumeration order should be followed # checks enumerability and existence, in case of modification during [[Get]] ok 62 sanity check: result is === target ok 63 target key not overwritten by deleted source key ok 64 target key not overwritten by non-enumerable source key 1..64 # tests 64 # pass 64 # ok