load("test-common.js"); try { ["foo", 123, null, undefined].forEach(value => { assertThrowsError( () => { "prop" in value; }, { error: TypeError, message: "'in' operator must be used on an object", } ); }); var o = { foo: "bar", bar: undefined }; assert("" in o === false); assert("foo" in o === true); assert("bar" in o === true); assert("baz" in o === false); assert("toString" in o === true); var a = ["hello", "friends"]; assert(0 in a === true); assert(1 in a === true); assert(2 in a === false); assert("0" in a === true); assert("hello" in a === false); assert("friends" in a === false); assert("length" in a === true); var s = new String("foo"); assert("length" in s); console.log("PASS"); } catch (e) { console.log("FAIL: " + e); }