Reflect.ownKeys.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. test("length is 1", () => {
  2. expect(Reflect.ownKeys).toHaveLength(1);
  3. });
  4. describe("errors", () => {
  5. test("target must be an object", () => {
  6. [null, undefined, "foo", 123, NaN, Infinity].forEach(value => {
  7. expect(() => {
  8. Reflect.ownKeys(value);
  9. }).toThrowWithMessage(TypeError, "First argument of Reflect.ownKeys() must be an object");
  10. });
  11. });
  12. });
  13. describe("normal behavior", () => {
  14. test("regular empty object has no own keys", () => {
  15. var objectOwnKeys = Reflect.ownKeys({});
  16. expect(objectOwnKeys instanceof Array).toBeTrue();
  17. expect(objectOwnKeys).toHaveLength(0);
  18. });
  19. test("regular object with some properties has own keys", () => {
  20. var objectOwnKeys = Reflect.ownKeys({ foo: "bar", bar: "baz", 0: 42 });
  21. expect(objectOwnKeys instanceof Array).toBeTrue();
  22. expect(objectOwnKeys).toHaveLength(3);
  23. expect(objectOwnKeys[0]).toBe("0");
  24. expect(objectOwnKeys[1]).toBe("foo");
  25. expect(objectOwnKeys[2]).toBe("bar");
  26. });
  27. test("empty array has only 'length' own key", () => {
  28. var arrayOwnKeys = Reflect.ownKeys([]);
  29. expect(arrayOwnKeys instanceof Array).toBeTrue();
  30. expect(arrayOwnKeys).toHaveLength(1);
  31. expect(arrayOwnKeys[0]).toBe("length");
  32. });
  33. test("array with some values has 'lenght' and indices own keys", () => {
  34. var arrayOwnKeys = Reflect.ownKeys(["foo", [], 123, undefined]);
  35. expect(arrayOwnKeys instanceof Array).toBeTrue();
  36. expect(arrayOwnKeys).toHaveLength(5);
  37. expect(arrayOwnKeys[0]).toBe("0");
  38. expect(arrayOwnKeys[1]).toBe("1");
  39. expect(arrayOwnKeys[2]).toBe("2");
  40. expect(arrayOwnKeys[3]).toBe("3");
  41. expect(arrayOwnKeys[4]).toBe("length");
  42. });
  43. });