%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/deps/v8/test/mjsunit/harmony/
Upload File :
Create Path :
Current File : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/deps/v8/test/mjsunit/harmony/set-union.js

// Copyright 2023 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Flags: --harmony-set-methods

(function TestUnionSet() {
  const firstSet = new Set();
  firstSet.add(42);
  firstSet.add(43);
  firstSet.add(44);

  const otherSet = new Set();
  otherSet.add(45);
  otherSet.add(46);
  otherSet.add(47);

  const resultSet = new Set();
  resultSet.add(42);
  resultSet.add(43);
  resultSet.add(44);
  resultSet.add(45);
  resultSet.add(46);
  resultSet.add(47);

  const resultArray = Array.from(resultSet);
  const unionArray = Array.from(firstSet.union(otherSet));

  assertEquals(resultArray, unionArray);
})();

(function TestUnionSetWithDuplicates() {
  const firstSet = new Set();
  firstSet.add(42);
  firstSet.add(43);
  firstSet.add(44);

  const otherSet = new Set();
  otherSet.add(45);
  otherSet.add(44);
  otherSet.add(43);

  const resultSet = new Set();
  resultSet.add(42);
  resultSet.add(43);
  resultSet.add(44);
  resultSet.add(45);

  const resultArray = Array.from(resultSet);
  const unionArray = Array.from(firstSet.union(otherSet));

  assertEquals(resultArray, unionArray);
})();

(function TestUnionMap() {
  const firstSet = new Set();
  firstSet.add(42);
  firstSet.add(43);
  firstSet.add(44);

  const other = new Map();
  other.set(45);
  other.set(46);
  other.set(47);

  const resultSet = new Set();
  resultSet.add(42);
  resultSet.add(43);
  resultSet.add(44);
  resultSet.add(45);
  resultSet.add(46);
  resultSet.add(47);

  const resultArray = Array.from(resultSet);
  const unionArray = Array.from(firstSet.union(other));

  assertEquals(resultArray, unionArray);
})();

(function TestUnionSetLikeObject() {
  const SetLike = {
    arr: [45, 46, 47],
    size: 3,
    keys() {
      return this.arr[Symbol.iterator]();
    },
    has(key) {
      return this.arr.indexOf(key) != -1;
    }
  };

  const firstSet = new Set();
  firstSet.add(42);
  firstSet.add(43);
  firstSet.add(44);

  const resultSet = new Set();
  resultSet.add(42);
  resultSet.add(43);
  resultSet.add(44);
  resultSet.add(45);
  resultSet.add(46);
  resultSet.add(47);

  const resultArray = Array.from(resultSet);
  const unionArray = Array.from(firstSet.union(SetLike));

  assertEquals(resultArray, unionArray);
})();

(function TestUnionSetLikeObjectNotIterableKeys() {
  const SetLike = {
    arr: [45, 46, 47],
    size: 3,
    keys() {
      return 42;
    },
    has(key) {
      return this.arr.indexOf(key) != -1;
    }
  };

  const firstSet = new Set();
  firstSet.add(42);
  firstSet.add(43);
  firstSet.add(44);

  assertThrows(() => {
    firstSet.union(SetLike);
  });
})();

(function TestUnionSetLikeObjectNotCallableKeys() {
  const SetLike = {
    arr: [45, 46, 47],
    size: 3,
    keys: 42,
    has(key) {
      return this.arr.indexOf(key) != -1;
    }
  };

  const firstSet = new Set();
  firstSet.add(42);
  firstSet.add(43);
  firstSet.add(44);

  assertThrows(() => {
    firstSet.union(SetLike);
  });
})();

(function TestUnionSetLikeObjectNotCallableHas() {
  const SetLike = {
    arr: [45, 46, 47],
    size: 3,
    keys() {
      return this.arr[Symbol.iterator]();
    },
    has: 42
  };

  const firstSet = new Set();
  firstSet.add(42);
  firstSet.add(43);
  firstSet.add(44);

  assertThrows(() => {
    firstSet.union(SetLike);
  });
})();

(function TestUnionAfterClearingTheReceiver() {
  const firstSet = new Set();
  firstSet.add(42);
  firstSet.add(43);
  firstSet.add(44);

  const otherSet = new Set();
  otherSet.add(45);
  otherSet.add(46);
  otherSet.add(47);

  Object.defineProperty(otherSet, 'size', {
    get: function() {
      firstSet.clear();
      return 3;
    },

  });

  const resultSet = new Set();
  resultSet.add(45);
  resultSet.add(46);
  resultSet.add(47);

  const resultArray = Array.from(resultSet);
  const unionArray = Array.from(firstSet.union(otherSet));

  assertEquals(resultArray, unionArray);
})();

Zerion Mini Shell 1.0