TAP version 13
#
# function-call-before-declaration
#
# object isolation
TAP version 13
#
# function-call-before-declaration
#
# object isolation
not ok 1 should be equivalent
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mfoo\u001b[39m\u001b[93m:\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[32m,\u001b[39m \u001b[37mbar\u001b[39m\u001b[93m:\u001b[39m \u001b[33m{\u001b[39m \u001b[33m}\u001b[39m \u001b[33m}\u001b[39m \u001b[90m// + o: { foo: {}, bar: {} }\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"foo\" : {\n },\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"bar\" : {\n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m2: \u001b[32m,\u001b[39m \u001b[37mfoo\u001b[39m \u001b[93m=\u001b[39m \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mfoo\u001b[39m \u001b[90m// + foo: {}\u001b[39m","\u001b[92m+\u001b[39m foo: {\n}\n","\u001b[90m3: \u001b[32m,\u001b[39m \u001b[37mbar\u001b[39m \u001b[93m=\u001b[39m \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mbar\u001b[39m\u001b[90m;\u001b[39m \u001b[90m// + bar: {}\u001b[39m","\u001b[92m+\u001b[39m bar: {\n}\n","\u001b[90m4: ","\u001b[90m5: \u001b[37mfoo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mname\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mfirst\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'foo'\u001b[39m\u001b[32m,\u001b[39m \u001b[37mlast\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'oof'\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m foo: {\u001b[32m\u001b[1m\n \"name\" : {\n \"first\" : \"foo\", \n \"last\" : \"oof\" \n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"first\" : \"foo\",\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"last\" : \"oof\"\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m6: \u001b[37mbar\u001b[39m\u001b[32m.\u001b[39m\u001b[37mname\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mfirst\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'bar'\u001b[39m\u001b[32m,\u001b[39m \u001b[37mlast\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'oof'\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m bar: {\u001b[32m\u001b[1m\n \"name\" : {\n \"first\" : \"bar\", \n \"last\" : \"oof\" \n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"first\" : \"bar\",\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"last\" : \"oof\"\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m7: ","\u001b[90m8: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mfoo\u001b[39m\u001b[32m.\u001b[39m\u001b[37maddress\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mcity\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'foo-city'\u001b[39m\u001b[32m,\u001b[39m \u001b[37mstreet\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'foobiloo street'\u001b[39m\u001b[32m,\u001b[39m \u001b[37mnumber\u001b[39m\u001b[93m:\u001b[39m \u001b[34m3\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\n \"foo\" : {\u001b[32m\u001b[1m\n \"address\" : {\n \"city\" : \"foo-city\", \n \"street\" : \"foobiloo street\", \n \"number\" : 3 \n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n },\n \"bar\" : {\n }\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"city\" : \"foo-city\",\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"street\" : \"foobiloo street\",\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"number\" : 3\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mfoo\u001b[39m\u001b[93m:\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[32m,\u001b[39m \u001b[37mbar\u001b[39m\u001b[93m:\u001b[39m \u001b[33m{\u001b[39m \u001b[33m}\u001b[39m \u001b[33m}\u001b[39m \u001b[90m// + o: { foo: {}, bar: {} }\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"foo\" : {\n \"__proto__\" : undefined\n },\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"bar\" : {\n \"__proto__\" : undefined\n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m2: \u001b[32m,\u001b[39m \u001b[37mfoo\u001b[39m \u001b[93m=\u001b[39m \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mfoo\u001b[39m \u001b[90m// + foo: {}\u001b[39m","\u001b[92m+\u001b[39m foo: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined\u001b[0m\n}\n","\u001b[90m3: \u001b[32m,\u001b[39m \u001b[37mbar\u001b[39m \u001b[93m=\u001b[39m \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mbar\u001b[39m\u001b[90m;\u001b[39m \u001b[90m// + bar: {}\u001b[39m","\u001b[92m+\u001b[39m bar: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined\u001b[0m\n}\n","\u001b[90m4: ","\u001b[90m5: \u001b[37mfoo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mname\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mfirst\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'foo'\u001b[39m\u001b[32m,\u001b[39m \u001b[37mlast\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'oof'\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m foo: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"name\" : {\n \"__proto__\" : undefined,\n \"first\" : \"foo\", \n \"last\" : \"oof\" \n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"first\" : \"foo\",\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"last\" : \"oof\"\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m6: \u001b[37mbar\u001b[39m\u001b[32m.\u001b[39m\u001b[37mname\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mfirst\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'bar'\u001b[39m\u001b[32m,\u001b[39m \u001b[37mlast\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'oof'\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m bar: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"name\" : {\n \"__proto__\" : undefined,\n \"first\" : \"bar\", \n \"last\" : \"oof\" \n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"first\" : \"bar\",\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"last\" : \"oof\"\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m7: ","\u001b[90m8: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mfoo\u001b[39m\u001b[32m.\u001b[39m\u001b[37maddress\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mcity\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'foo-city'\u001b[39m\u001b[32m,\u001b[39m \u001b[37mstreet\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'foobiloo street'\u001b[39m\u001b[32m,\u001b[39m \u001b[37mnumber\u001b[39m\u001b[93m:\u001b[39m \u001b[34m3\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\n \"foo\" : {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"address\" : {\n \"__proto__\" : undefined,\n \"city\" : \"foo-city\", \n \"street\" : \"foobiloo street\", \n \"number\" : 3 \n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n },\n \"bar\" : {\u001b[32m\u001b[1m\n \"__proto__\" : undefined\u001b[0m\n }\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"city\" : \"foo-city\",\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"street\" : \"foobiloo street\",\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"number\" : 3\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n"]
...
#
# objects simple
not ok 2 shows diffs of object properties
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"a\" : 1\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m2: ","\u001b[90m3: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\n \"a\" : \u001b[34m\u001b[1m2\u001b[0m\u001b[36m\u001b[1m // != 1\u001b[0m\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m2\u001b[0m\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"a\" : 1\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m2: ","\u001b[90m3: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\n \"a\" : \u001b[34m\u001b[1m2\u001b[0m\u001b[36m\u001b[1m // != 1\u001b[0m\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m2\u001b[0m\n"]
...
#
# changing var
ok 3 shows intermediate results
#
# error
not ok 4 shows intermediate results and shows exceptions
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m3\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m a: \u001b[34m\u001b[1m3\u001b[0m\n","\u001b[90m2: \u001b[37ma\u001b[39m \u001b[93m+\u001b[39m \u001b[37mb\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"ReferenceError: b is not defined\"\u001b[0m\n","\u001b[90m3: ","\u001b[90m4: \u001b[32mvar\u001b[39m \u001b[37mb\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m b: \u001b[34m\u001b[1m2\u001b[0m\n","\u001b[90m5: \u001b[34mconsole\u001b[39m\u001b[32m.\u001b[39m\u001b[34mlog\u001b[39m\u001b[90m(\u001b[39m\u001b[37mb\u001b[39m\u001b[32m.\u001b[39m\u001b[37mhello\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"TypeError: Object 2 has no method 'hello'\"\u001b[0m\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m3\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m a: \u001b[34m\u001b[1m3\u001b[0m\n","\u001b[90m2: \u001b[37ma\u001b[39m \u001b[93m+\u001b[39m \u001b[37mb\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"ReferenceError: 'b' is undefined\"\u001b[0m\n","\u001b[90m3: ","\u001b[90m4: \u001b[32mvar\u001b[39m \u001b[37mb\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m b: \u001b[34m\u001b[1m2\u001b[0m\n","\u001b[90m5: \u001b[34mconsole\u001b[39m\u001b[32m.\u001b[39m\u001b[34mlog\u001b[39m\u001b[90m(\u001b[39m\u001b[37mb\u001b[39m\u001b[32m.\u001b[39m\u001b[37mhello\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"TypeError: Object doesn't support property or method 'hello'\"\u001b[0m\n"]
...
#
# diffing values that were NaN and still are NaN
ok 5 shows diffs of object properties compacted
#
# ensuring that NaN is not coerced to undefined
ok 6 shows intermediate results
#
# strict global without violations
not ok 7 show return values as usual (instead of "use strict" like it did previously)
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[92m'use strict'\u001b[39m\u001b[90m;\u001b[39m","\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m\"use strict\"\u001b[0m\n","\u001b[90m2: ","\u001b[90m3: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37mb\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"a\" : 1,\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"b\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m4: ","\u001b[90m5: \u001b[94mfunction\u001b[39m \u001b[37mfoo\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m \u001b[33m{\u001b[39m","\u001b[90m6: \u001b[31mreturn\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37mb\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m7: \u001b[33m}\u001b[39m","\u001b[92m+\u001b[39m foo: \u001b[34m\u001b[1m[Function: foo]\u001b[0m\n","\u001b[90m8: ","\u001b[90m9: \u001b[37mfoo\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"a\" : 1,\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"b\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n"]
actual:
["\u001b[90m1: \u001b[92m'use strict'\u001b[39m\u001b[90m;\u001b[39m","\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m\"use strict\"\u001b[0m\n","\u001b[90m2: ","\u001b[90m3: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37mb\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"a\" : 1,\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"b\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m4: ","\u001b[90m5: \u001b[94mfunction\u001b[39m \u001b[37mfoo\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m \u001b[33m{\u001b[39m","\u001b[90m6: \u001b[31mreturn\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37mb\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m7: \u001b[33m}\u001b[39m","\u001b[92m+\u001b[39m foo: \u001b[34m\u001b[1m[Function]\u001b[0m\n","\u001b[90m8: ","\u001b[90m9: \u001b[37mfoo\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"a\" : 1,\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"b\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n"]
...
#
# strict local
not ok 8 shows local strict violation inside function and function remains undefined
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"a\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m2: ","\u001b[90m3: \u001b[94mfunction\u001b[39m \u001b[37mstrictOn\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m \u001b[33m{\u001b[39m","\u001b[90m4: \u001b[92m'use strict'\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m5: \u001b[31mreturn\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m6: \u001b[33m}\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"SyntaxError: Duplicate data property in object literal not allowed in strict mode\"\u001b[0m\n","\u001b[90m7: ","\u001b[90m8: \u001b[37mo\u001b[39m","\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"a\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m9: \u001b[37mstrictOn\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"ReferenceError: strictOn is not defined\"\u001b[0m\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"a\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m2: ","\u001b[90m3: \u001b[94mfunction\u001b[39m \u001b[37mstrictOn\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m \u001b[33m{\u001b[39m","\u001b[90m4: \u001b[92m'use strict'\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m5: \u001b[31mreturn\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m6: \u001b[33m}\u001b[39m","\u001b[92m+\u001b[39m strictOn: \u001b[34m\u001b[1m[Function]\u001b[0m\n","\u001b[90m7: ","\u001b[90m8: \u001b[37mo\u001b[39m","\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"a\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m9: \u001b[37mstrictOn\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"a\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n"]
...
#
# function-using-context-vars
not ok 9 should be equivalent
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mbar\u001b[39m \u001b[93m=\u001b[39m \u001b[92m'bar'\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m bar: \u001b[34m\u001b[1m\"bar\"\u001b[0m\n","\u001b[90m2: \u001b[32mvar\u001b[39m \u001b[37mfoo\u001b[39m \u001b[93m=\u001b[39m \u001b[37mbar\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m foo: \u001b[34m\u001b[1m\"bar\"\u001b[0m\n","\u001b[90m3: ","\u001b[90m4: \u001b[94mfunction\u001b[39m \u001b[37mgetFooAndBar\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m \u001b[33m{\u001b[39m","\u001b[90m5: \u001b[31mreturn\u001b[39m \u001b[37mfoo\u001b[39m \u001b[93m+\u001b[39m \u001b[37mbar\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m6: \u001b[33m}\u001b[39m","\u001b[92m+\u001b[39m getFooAndBar: \u001b[34m\u001b[1m[Function: getFooAndBar]\u001b[0m\n","\u001b[90m7: ","\u001b[90m8: \u001b[37mgetFooAndBar\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m\"barbar\"\u001b[0m\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mbar\u001b[39m \u001b[93m=\u001b[39m \u001b[92m'bar'\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m bar: \u001b[34m\u001b[1m\"bar\"\u001b[0m\n","\u001b[90m2: \u001b[32mvar\u001b[39m \u001b[37mfoo\u001b[39m \u001b[93m=\u001b[39m \u001b[37mbar\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m foo: \u001b[34m\u001b[1m\"bar\"\u001b[0m\n","\u001b[90m3: ","\u001b[90m4: \u001b[94mfunction\u001b[39m \u001b[37mgetFooAndBar\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m \u001b[33m{\u001b[39m","\u001b[90m5: \u001b[31mreturn\u001b[39m \u001b[37mfoo\u001b[39m \u001b[93m+\u001b[39m \u001b[37mbar\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m6: \u001b[33m}\u001b[39m","\u001b[92m+\u001b[39m getFooAndBar: \u001b[34m\u001b[1m[Function]\u001b[0m\n","\u001b[90m7: ","\u001b[90m8: \u001b[37mgetFooAndBar\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"ReferenceError: 'foo' is undefined\"\u001b[0m\n"]
...
#
# object isolation
not ok 10 shows object changes without future changes affecting previous ones
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mfoo\u001b[39m\u001b[93m:\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"foo\" : {\n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m2: \u001b[32mvar\u001b[39m \u001b[37mbar\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m bar: {\n}\n","\u001b[90m3: ","\u001b[90m4: \u001b[37mbar\u001b[39m\u001b[32m.\u001b[39m\u001b[37mname\u001b[39m \u001b[93m=\u001b[39m \u001b[92m'hey'\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m bar: {\u001b[32m\u001b[1m\n \"name\" : \"hey\"\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m\"hey\"\u001b[0m\n","\u001b[90m5: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mfoo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mbar\u001b[39m \u001b[93m=\u001b[39m \u001b[37mbar\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\n \"foo\" : {\u001b[32m\u001b[1m\n \"bar\" : {\n \"name\" : \"hey\" \n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n }\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"name\" : \"hey\"\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mfoo\u001b[39m\u001b[93m:\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"foo\" : {\n \"__proto__\" : undefined\n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m2: \u001b[32mvar\u001b[39m \u001b[37mbar\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m bar: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined\u001b[0m\n}\n","\u001b[90m3: ","\u001b[90m4: \u001b[37mbar\u001b[39m\u001b[32m.\u001b[39m\u001b[37mname\u001b[39m \u001b[93m=\u001b[39m \u001b[92m'hey'\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m bar: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"name\" : \"hey\"\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m\"hey\"\u001b[0m\n","\u001b[90m5: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mfoo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mbar\u001b[39m \u001b[93m=\u001b[39m \u001b[37mbar\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\n \"foo\" : {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"bar\" : {\n \"__proto__\" : undefined,\n \"name\" : \"hey\" \n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n }\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"name\" : \"hey\"\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n"]
...
#
# strict global
not ok 11 shows global strict violation at root level and inside function and violating var and function remain undefined
---
operator: deepEqual
expected:
["\u001b[90m 1: \u001b[92m'use strict'\u001b[39m\u001b[90m;\u001b[39m","\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m\"use strict\"\u001b[0m\n","\u001b[90m 2: ","\u001b[90m 3: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"Error: Line 1: Duplicate data property in object literal not allowed in strict mode\"\u001b[0m\n","\u001b[90m 4: ","\u001b[90m 5: \u001b[94mfunction\u001b[39m \u001b[37mfoo\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m \u001b[33m{\u001b[39m","\u001b[90m 6: \u001b[31mreturn\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m 7: \u001b[33m}\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"Error: Line 2: Duplicate data property in object literal not allowed in strict mode\"\u001b[0m\n","\u001b[90m 8: ","\u001b[90m 9: \u001b[37mo\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"ReferenceError: o is not defined\"\u001b[0m\n","\u001b[90m10: \u001b[37mfoo\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"ReferenceError: foo is not defined\"\u001b[0m\n"]
actual:
["\u001b[90m 1: \u001b[92m'use strict'\u001b[39m\u001b[90m;\u001b[39m","\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m\"use strict\"\u001b[0m\n","\u001b[90m 2: ","\u001b[90m 3: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"Error: Line 1: Duplicate data property in object literal not allowed in strict mode\"\u001b[0m\n","\u001b[90m 4: ","\u001b[90m 5: \u001b[94mfunction\u001b[39m \u001b[37mfoo\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m \u001b[33m{\u001b[39m","\u001b[90m 6: \u001b[31mreturn\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m 7: \u001b[33m}\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"Error: Line 2: Duplicate data property in object literal not allowed in strict mode\"\u001b[0m\n","\u001b[90m 8: ","\u001b[90m 9: \u001b[37mo\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"ReferenceError: 'o' is undefined\"\u001b[0m\n","\u001b[90m10: \u001b[37mfoo\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"ReferenceError: 'foo' is undefined\"\u001b[0m\n"]
...
#
# compacting
not ok 12 shows diffs of object properties compacted
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\"a\":1\u001b[0m}\n","\u001b[90m2: ","\u001b[90m3: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\"a\":\u001b[34m\u001b[1m2\u001b[0m}\n\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m2\u001b[0m\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\"__proto__\":undefined,\u001b[0m\u001b[32m\u001b[1m\"a\":1\u001b[0m}\n","\u001b[90m2: ","\u001b[90m3: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\u001b[32m\u001b[1m\"__proto__\":undefined,\u001b[0m\"a\":\u001b[34m\u001b[1m2\u001b[0m}\n\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m2\u001b[0m\n"]
...
#
# max line length
not ok 13 shows diffs of object properties with lines cut off at length 20
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"a\" : 1\u001b[0m\u001b[36m\u001b[....\n}\n","\u001b[90m2: ","\u001b[90m3: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\n \"a\" : \u001b[34m\u001b[1m2\u001b[....\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m2\u001b[0m\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : unde....\n \"a\" : 1\u001b[0m\u001b[36m\u001b[....\n}\n","\u001b[90m2: ","\u001b[90m3: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : unde....\n \"a\" : \u001b[34m\u001b[1m2\u001b[....\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m2\u001b[0m\n"]
...
#
# compacting and max line length
not ok 14 shows diffs of object properties compacted and lines cut off
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\"a\":1....\n","\u001b[90m2: ","\u001b[90m3: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\"a\":\u001b[34m\u001b[1m2....\n\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m2\u001b[0m\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\"__pr....\n","\u001b[90m2: ","\u001b[90m3: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\u001b[32m\u001b[1m\"__pr....\n\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m2\u001b[0m\n"]
...
#
# return value false
ok 15 shows intermediate results
1..15
# tests 15
# pass 4
# fail 11
not ok 1 should be equivalent
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mfoo\u001b[39m\u001b[93m:\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[32m,\u001b[39m \u001b[37mbar\u001b[39m\u001b[93m:\u001b[39m \u001b[33m{\u001b[39m \u001b[33m}\u001b[39m \u001b[33m}\u001b[39m \u001b[90m// + o: { foo: {}, bar: {} }\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"foo\" : {\n },\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"bar\" : {\n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m2: \u001b[32m,\u001b[39m \u001b[37mfoo\u001b[39m \u001b[93m=\u001b[39m \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mfoo\u001b[39m \u001b[90m// + foo: {}\u001b[39m","\u001b[92m+\u001b[39m foo: {\n}\n","\u001b[90m3: \u001b[32m,\u001b[39m \u001b[37mbar\u001b[39m \u001b[93m=\u001b[39m \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mbar\u001b[39m\u001b[90m;\u001b[39m \u001b[90m// + bar: {}\u001b[39m","\u001b[92m+\u001b[39m bar: {\n}\n","\u001b[90m4: ","\u001b[90m5: \u001b[37mfoo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mname\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mfirst\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'foo'\u001b[39m\u001b[32m,\u001b[39m \u001b[37mlast\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'oof'\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m foo: {\u001b[32m\u001b[1m\n \"name\" : {\n \"first\" : \"foo\", \n \"last\" : \"oof\" \n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"first\" : \"foo\",\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"last\" : \"oof\"\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m6: \u001b[37mbar\u001b[39m\u001b[32m.\u001b[39m\u001b[37mname\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mfirst\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'bar'\u001b[39m\u001b[32m,\u001b[39m \u001b[37mlast\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'oof'\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m bar: {\u001b[32m\u001b[1m\n \"name\" : {\n \"first\" : \"bar\", \n \"last\" : \"oof\" \n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"first\" : \"bar\",\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"last\" : \"oof\"\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m7: ","\u001b[90m8: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mfoo\u001b[39m\u001b[32m.\u001b[39m\u001b[37maddress\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mcity\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'foo-city'\u001b[39m\u001b[32m,\u001b[39m \u001b[37mstreet\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'foobiloo street'\u001b[39m\u001b[32m,\u001b[39m \u001b[37mnumber\u001b[39m\u001b[93m:\u001b[39m \u001b[34m3\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\n \"foo\" : {\u001b[32m\u001b[1m\n \"address\" : {\n \"city\" : \"foo-city\", \n \"street\" : \"foobiloo street\", \n \"number\" : 3 \n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n },\n \"bar\" : {\n }\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"city\" : \"foo-city\",\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"street\" : \"foobiloo street\",\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"number\" : 3\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mfoo\u001b[39m\u001b[93m:\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[32m,\u001b[39m \u001b[37mbar\u001b[39m\u001b[93m:\u001b[39m \u001b[33m{\u001b[39m \u001b[33m}\u001b[39m \u001b[33m}\u001b[39m \u001b[90m// + o: { foo: {}, bar: {} }\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"foo\" : {\n \"__proto__\" : undefined\n },\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"bar\" : {\n \"__proto__\" : undefined\n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m2: \u001b[32m,\u001b[39m \u001b[37mfoo\u001b[39m \u001b[93m=\u001b[39m \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mfoo\u001b[39m \u001b[90m// + foo: {}\u001b[39m","\u001b[92m+\u001b[39m foo: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined\u001b[0m\n}\n","\u001b[90m3: \u001b[32m,\u001b[39m \u001b[37mbar\u001b[39m \u001b[93m=\u001b[39m \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mbar\u001b[39m\u001b[90m;\u001b[39m \u001b[90m// + bar: {}\u001b[39m","\u001b[92m+\u001b[39m bar: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined\u001b[0m\n}\n","\u001b[90m4: ","\u001b[90m5: \u001b[37mfoo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mname\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mfirst\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'foo'\u001b[39m\u001b[32m,\u001b[39m \u001b[37mlast\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'oof'\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m foo: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"name\" : {\n \"__proto__\" : undefined,\n \"first\" : \"foo\", \n \"last\" : \"oof\" \n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"first\" : \"foo\",\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"last\" : \"oof\"\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m6: \u001b[37mbar\u001b[39m\u001b[32m.\u001b[39m\u001b[37mname\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mfirst\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'bar'\u001b[39m\u001b[32m,\u001b[39m \u001b[37mlast\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'oof'\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m bar: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"name\" : {\n \"__proto__\" : undefined,\n \"first\" : \"bar\", \n \"last\" : \"oof\" \n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"first\" : \"bar\",\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"last\" : \"oof\"\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m7: ","\u001b[90m8: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mfoo\u001b[39m\u001b[32m.\u001b[39m\u001b[37maddress\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mcity\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'foo-city'\u001b[39m\u001b[32m,\u001b[39m \u001b[37mstreet\u001b[39m\u001b[93m:\u001b[39m \u001b[92m'foobiloo street'\u001b[39m\u001b[32m,\u001b[39m \u001b[37mnumber\u001b[39m\u001b[93m:\u001b[39m \u001b[34m3\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\n \"foo\" : {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"address\" : {\n \"__proto__\" : undefined,\n \"city\" : \"foo-city\", \n \"street\" : \"foobiloo street\", \n \"number\" : 3 \n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n },\n \"bar\" : {\u001b[32m\u001b[1m\n \"__proto__\" : undefined\u001b[0m\n }\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"city\" : \"foo-city\",\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"street\" : \"foobiloo street\",\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"number\" : 3\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n"]
...
#
# objects simple
not ok 2 shows diffs of object properties
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"a\" : 1\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m2: ","\u001b[90m3: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\n \"a\" : \u001b[34m\u001b[1m2\u001b[0m\u001b[36m\u001b[1m // != 1\u001b[0m\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m2\u001b[0m\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"a\" : 1\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m2: ","\u001b[90m3: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\n \"a\" : \u001b[34m\u001b[1m2\u001b[0m\u001b[36m\u001b[1m // != 1\u001b[0m\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m2\u001b[0m\n"]
...
#
# changing var
ok 3 shows intermediate results
#
# error
not ok 4 shows intermediate results and shows exceptions
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m3\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m a: \u001b[34m\u001b[1m3\u001b[0m\n","\u001b[90m2: \u001b[37ma\u001b[39m \u001b[93m+\u001b[39m \u001b[37mb\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"ReferenceError: b is not defined\"\u001b[0m\n","\u001b[90m3: ","\u001b[90m4: \u001b[32mvar\u001b[39m \u001b[37mb\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m b: \u001b[34m\u001b[1m2\u001b[0m\n","\u001b[90m5: \u001b[34mconsole\u001b[39m\u001b[32m.\u001b[39m\u001b[34mlog\u001b[39m\u001b[90m(\u001b[39m\u001b[37mb\u001b[39m\u001b[32m.\u001b[39m\u001b[37mhello\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"TypeError: Object 2 has no method 'hello'\"\u001b[0m\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m3\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m a: \u001b[34m\u001b[1m3\u001b[0m\n","\u001b[90m2: \u001b[37ma\u001b[39m \u001b[93m+\u001b[39m \u001b[37mb\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"ReferenceError: 'b' is undefined\"\u001b[0m\n","\u001b[90m3: ","\u001b[90m4: \u001b[32mvar\u001b[39m \u001b[37mb\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m b: \u001b[34m\u001b[1m2\u001b[0m\n","\u001b[90m5: \u001b[34mconsole\u001b[39m\u001b[32m.\u001b[39m\u001b[34mlog\u001b[39m\u001b[90m(\u001b[39m\u001b[37mb\u001b[39m\u001b[32m.\u001b[39m\u001b[37mhello\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"TypeError: Object doesn't support property or method 'hello'\"\u001b[0m\n"]
...
#
# diffing values that were NaN and still are NaN
ok 5 shows diffs of object properties compacted
#
# ensuring that NaN is not coerced to undefined
ok 6 shows intermediate results
#
# strict global without violations
not ok 7 show return values as usual (instead of "use strict" like it did previously)
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[92m'use strict'\u001b[39m\u001b[90m;\u001b[39m","\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m\"use strict\"\u001b[0m\n","\u001b[90m2: ","\u001b[90m3: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37mb\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"a\" : 1,\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"b\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m4: ","\u001b[90m5: \u001b[94mfunction\u001b[39m \u001b[37mfoo\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m \u001b[33m{\u001b[39m","\u001b[90m6: \u001b[31mreturn\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37mb\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m7: \u001b[33m}\u001b[39m","\u001b[92m+\u001b[39m foo: \u001b[34m\u001b[1m[Function: foo]\u001b[0m\n","\u001b[90m8: ","\u001b[90m9: \u001b[37mfoo\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"a\" : 1,\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"b\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n"]
actual:
["\u001b[90m1: \u001b[92m'use strict'\u001b[39m\u001b[90m;\u001b[39m","\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m\"use strict\"\u001b[0m\n","\u001b[90m2: ","\u001b[90m3: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37mb\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"a\" : 1,\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"b\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m4: ","\u001b[90m5: \u001b[94mfunction\u001b[39m \u001b[37mfoo\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m \u001b[33m{\u001b[39m","\u001b[90m6: \u001b[31mreturn\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37mb\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m7: \u001b[33m}\u001b[39m","\u001b[92m+\u001b[39m foo: \u001b[34m\u001b[1m[Function]\u001b[0m\n","\u001b[90m8: ","\u001b[90m9: \u001b[37mfoo\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"a\" : 1,\u001b[0m\u001b[36m\u001b[1m \u001b[0m\u001b[32m\u001b[1m\n \"b\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n"]
...
#
# strict local
not ok 8 shows local strict violation inside function and function remains undefined
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"a\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m2: ","\u001b[90m3: \u001b[94mfunction\u001b[39m \u001b[37mstrictOn\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m \u001b[33m{\u001b[39m","\u001b[90m4: \u001b[92m'use strict'\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m5: \u001b[31mreturn\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m6: \u001b[33m}\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"SyntaxError: Duplicate data property in object literal not allowed in strict mode\"\u001b[0m\n","\u001b[90m7: ","\u001b[90m8: \u001b[37mo\u001b[39m","\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"a\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m9: \u001b[37mstrictOn\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"ReferenceError: strictOn is not defined\"\u001b[0m\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"a\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m2: ","\u001b[90m3: \u001b[94mfunction\u001b[39m \u001b[37mstrictOn\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m \u001b[33m{\u001b[39m","\u001b[90m4: \u001b[92m'use strict'\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m5: \u001b[31mreturn\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m6: \u001b[33m}\u001b[39m","\u001b[92m+\u001b[39m strictOn: \u001b[34m\u001b[1m[Function]\u001b[0m\n","\u001b[90m7: ","\u001b[90m8: \u001b[37mo\u001b[39m","\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"a\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m9: \u001b[37mstrictOn\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"a\" : 2\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n"]
...
#
# function-using-context-vars
not ok 9 should be equivalent
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mbar\u001b[39m \u001b[93m=\u001b[39m \u001b[92m'bar'\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m bar: \u001b[34m\u001b[1m\"bar\"\u001b[0m\n","\u001b[90m2: \u001b[32mvar\u001b[39m \u001b[37mfoo\u001b[39m \u001b[93m=\u001b[39m \u001b[37mbar\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m foo: \u001b[34m\u001b[1m\"bar\"\u001b[0m\n","\u001b[90m3: ","\u001b[90m4: \u001b[94mfunction\u001b[39m \u001b[37mgetFooAndBar\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m \u001b[33m{\u001b[39m","\u001b[90m5: \u001b[31mreturn\u001b[39m \u001b[37mfoo\u001b[39m \u001b[93m+\u001b[39m \u001b[37mbar\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m6: \u001b[33m}\u001b[39m","\u001b[92m+\u001b[39m getFooAndBar: \u001b[34m\u001b[1m[Function: getFooAndBar]\u001b[0m\n","\u001b[90m7: ","\u001b[90m8: \u001b[37mgetFooAndBar\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m\"barbar\"\u001b[0m\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mbar\u001b[39m \u001b[93m=\u001b[39m \u001b[92m'bar'\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m bar: \u001b[34m\u001b[1m\"bar\"\u001b[0m\n","\u001b[90m2: \u001b[32mvar\u001b[39m \u001b[37mfoo\u001b[39m \u001b[93m=\u001b[39m \u001b[37mbar\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m foo: \u001b[34m\u001b[1m\"bar\"\u001b[0m\n","\u001b[90m3: ","\u001b[90m4: \u001b[94mfunction\u001b[39m \u001b[37mgetFooAndBar\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m \u001b[33m{\u001b[39m","\u001b[90m5: \u001b[31mreturn\u001b[39m \u001b[37mfoo\u001b[39m \u001b[93m+\u001b[39m \u001b[37mbar\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m6: \u001b[33m}\u001b[39m","\u001b[92m+\u001b[39m getFooAndBar: \u001b[34m\u001b[1m[Function]\u001b[0m\n","\u001b[90m7: ","\u001b[90m8: \u001b[37mgetFooAndBar\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"ReferenceError: 'foo' is undefined\"\u001b[0m\n"]
...
#
# object isolation
not ok 10 shows object changes without future changes affecting previous ones
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mfoo\u001b[39m\u001b[93m:\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"foo\" : {\n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m2: \u001b[32mvar\u001b[39m \u001b[37mbar\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m bar: {\n}\n","\u001b[90m3: ","\u001b[90m4: \u001b[37mbar\u001b[39m\u001b[32m.\u001b[39m\u001b[37mname\u001b[39m \u001b[93m=\u001b[39m \u001b[92m'hey'\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m bar: {\u001b[32m\u001b[1m\n \"name\" : \"hey\"\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m\"hey\"\u001b[0m\n","\u001b[90m5: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mfoo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mbar\u001b[39m \u001b[93m=\u001b[39m \u001b[37mbar\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\n \"foo\" : {\u001b[32m\u001b[1m\n \"bar\" : {\n \"name\" : \"hey\" \n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n }\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"name\" : \"hey\"\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37mfoo\u001b[39m\u001b[93m:\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"foo\" : {\n \"__proto__\" : undefined\n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n","\u001b[90m2: \u001b[32mvar\u001b[39m \u001b[37mbar\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m\u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m bar: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined\u001b[0m\n}\n","\u001b[90m3: ","\u001b[90m4: \u001b[37mbar\u001b[39m\u001b[32m.\u001b[39m\u001b[37mname\u001b[39m \u001b[93m=\u001b[39m \u001b[92m'hey'\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m bar: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"name\" : \"hey\"\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m\"hey\"\u001b[0m\n","\u001b[90m5: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mfoo\u001b[39m\u001b[32m.\u001b[39m\u001b[37mbar\u001b[39m \u001b[93m=\u001b[39m \u001b[37mbar\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\n \"foo\" : {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"bar\" : {\n \"__proto__\" : undefined,\n \"name\" : \"hey\" \n }\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n }\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m {\u001b[32m\u001b[1m\n \"__proto__\" : undefined,\u001b[0m\u001b[32m\u001b[1m\n \"name\" : \"hey\"\u001b[0m\u001b[36m\u001b[1m \u001b[0m\n}\n"]
...
#
# strict global
not ok 11 shows global strict violation at root level and inside function and violating var and function remain undefined
---
operator: deepEqual
expected:
["\u001b[90m 1: \u001b[92m'use strict'\u001b[39m\u001b[90m;\u001b[39m","\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m\"use strict\"\u001b[0m\n","\u001b[90m 2: ","\u001b[90m 3: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"Error: Line 1: Duplicate data property in object literal not allowed in strict mode\"\u001b[0m\n","\u001b[90m 4: ","\u001b[90m 5: \u001b[94mfunction\u001b[39m \u001b[37mfoo\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m \u001b[33m{\u001b[39m","\u001b[90m 6: \u001b[31mreturn\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m 7: \u001b[33m}\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"Error: Line 2: Duplicate data property in object literal not allowed in strict mode\"\u001b[0m\n","\u001b[90m 8: ","\u001b[90m 9: \u001b[37mo\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"ReferenceError: o is not defined\"\u001b[0m\n","\u001b[90m10: \u001b[37mfoo\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"ReferenceError: foo is not defined\"\u001b[0m\n"]
actual:
["\u001b[90m 1: \u001b[92m'use strict'\u001b[39m\u001b[90m;\u001b[39m","\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m\"use strict\"\u001b[0m\n","\u001b[90m 2: ","\u001b[90m 3: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"Error: Line 1: Duplicate data property in object literal not allowed in strict mode\"\u001b[0m\n","\u001b[90m 4: ","\u001b[90m 5: \u001b[94mfunction\u001b[39m \u001b[37mfoo\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m \u001b[33m{\u001b[39m","\u001b[90m 6: \u001b[31mreturn\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m\u001b[32m,\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m2\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[90m 7: \u001b[33m}\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"Error: Line 2: Duplicate data property in object literal not allowed in strict mode\"\u001b[0m\n","\u001b[90m 8: ","\u001b[90m 9: \u001b[37mo\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"ReferenceError: 'o' is undefined\"\u001b[0m\n","\u001b[90m10: \u001b[37mfoo\u001b[39m\u001b[90m(\u001b[39m\u001b[90m)\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m \u001b[31m!\u001b[39m: \u001b[34m\u001b[1m\"ReferenceError: 'foo' is undefined\"\u001b[0m\n"]
...
#
# compacting
not ok 12 shows diffs of object properties compacted
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\"a\":1\u001b[0m}\n","\u001b[90m2: ","\u001b[90m3: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\"a\":\u001b[34m\u001b[1m2\u001b[0m}\n\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m2\u001b[0m\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\"__proto__\":undefined,\u001b[0m\u001b[32m\u001b[1m\"a\":1\u001b[0m}\n","\u001b[90m2: ","\u001b[90m3: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\u001b[32m\u001b[1m\"__proto__\":undefined,\u001b[0m\"a\":\u001b[34m\u001b[1m2\u001b[0m}\n\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m2\u001b[0m\n"]
...
#
# max line length
not ok 13 shows diffs of object properties with lines cut off at length 20
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"a\" : 1\u001b[0m\u001b[36m\u001b[....\n}\n","\u001b[90m2: ","\u001b[90m3: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\n \"a\" : \u001b[34m\u001b[1m2\u001b[....\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m2\u001b[0m\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : unde....\n \"a\" : 1\u001b[0m\u001b[36m\u001b[....\n}\n","\u001b[90m2: ","\u001b[90m3: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\u001b[32m\u001b[1m\n \"__proto__\" : unde....\n \"a\" : \u001b[34m\u001b[1m2\u001b[....\n}\u001b[90m\n--------\n\u001b[39m\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m2\u001b[0m\n"]
...
#
# compacting and max line length
not ok 14 shows diffs of object properties compacted and lines cut off
---
operator: deepEqual
expected:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\"a\":1....\n","\u001b[90m2: ","\u001b[90m3: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\"a\":\u001b[34m\u001b[1m2....\n\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m2\u001b[0m\n"]
actual:
["\u001b[90m1: \u001b[32mvar\u001b[39m \u001b[37mo\u001b[39m \u001b[93m=\u001b[39m \u001b[33m{\u001b[39m \u001b[37ma\u001b[39m\u001b[93m:\u001b[39m \u001b[34m1\u001b[39m \u001b[33m}\u001b[39m\u001b[90m;\u001b[39m","\u001b[92m+\u001b[39m o: {\u001b[32m\u001b[1m\"__pr....\n","\u001b[90m2: ","\u001b[90m3: \u001b[37mo\u001b[39m\u001b[32m.\u001b[39m\u001b[37ma\u001b[39m \u001b[93m=\u001b[39m \u001b[34m2\u001b[39m\u001b[90m;\u001b[39m","\u001b[94m~\u001b[39m o: {\u001b[32m\u001b[1m\"__pr....\n\u001b[36m=>\u001b[39m \u001b[34m\u001b[1m2\u001b[0m\n"]
...
#
# return value false
ok 15 shows intermediate results
1..15
# tests 15
# pass 4
# fail 11