Array.from.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. test("length is 1", () => {
  2. expect(Array.from).toHaveLength(1);
  3. });
  4. describe("normal behavior", () => {
  5. test("empty array", () => {
  6. var a = Array.from([]);
  7. expect(a instanceof Array).toBeTrue();
  8. expect(a).toHaveLength(0);
  9. });
  10. test("empty string", () => {
  11. var a = Array.from("");
  12. expect(a instanceof Array).toBeTrue();
  13. expect(a).toHaveLength(0);
  14. });
  15. test("non-empty array", () => {
  16. var a = Array.from([5, 8, 1]);
  17. expect(a instanceof Array).toBeTrue();
  18. expect(a).toHaveLength(3);
  19. expect(a[0]).toBe(5);
  20. expect(a[1]).toBe(8);
  21. expect(a[2]).toBe(1);
  22. });
  23. test("non-empty string", () => {
  24. var a = Array.from("what");
  25. expect(a instanceof Array).toBeTrue();
  26. expect(a).toHaveLength(4);
  27. expect(a[0]).toBe("w");
  28. expect(a[1]).toBe("h");
  29. expect(a[2]).toBe("a");
  30. expect(a[3]).toBe("t");
  31. });
  32. test("shallow array copy", () => {
  33. var a = [1, 2, 3];
  34. var b = Array.from([a]);
  35. expect(b instanceof Array).toBeTrue();
  36. expect(b).toHaveLength(1);
  37. b[0][0] = 4;
  38. expect(a[0]).toBe(4);
  39. });
  40. test("from iterator", () => {
  41. function rangeIterator(begin, end) {
  42. return {
  43. [Symbol.iterator]() {
  44. let value = begin - 1;
  45. return {
  46. next() {
  47. if (value < end) {
  48. value += 1;
  49. }
  50. return { value: value, done: value >= end };
  51. },
  52. };
  53. },
  54. };
  55. }
  56. var a = Array.from(rangeIterator(8, 10));
  57. expect(a instanceof Array).toBeTrue();
  58. expect(a).toHaveLength(2);
  59. expect(a[0]).toBe(8);
  60. expect(a[1]).toBe(9);
  61. });
  62. });