tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Set-forEach.js (1343B)


      1 /* test Set.prototype.forEach */
      2 
      3 load(libdir + 'asserts.js');
      4 load(libdir + 'iteration.js');
      5 
      6 // testing success conditions of Set.prototype.forEach
      7 
      8 var testSet = new Set();
      9 
     10 function callback(value, key, set) {
     11    assertEq(value, key);
     12    testSet.add(value);
     13    assertEq(set.has(key), true);
     14 }
     15 
     16 var initialSet = new Set(['a', 1, undefined]);
     17 initialSet.forEach(callback);
     18 
     19 // test that both the Sets are equal and are in same order
     20 var iterator = initialSet[Symbol.iterator]();
     21 var count = 0;
     22 for (var v of testSet) {
     23    assertEq(initialSet.has(v), true);
     24    assertIteratorNext(iterator, v);
     25    count++;
     26 }
     27 
     28 //check both the Sets we have are equal in size
     29 assertEq(initialSet.size, testSet.size);
     30 assertEq(initialSet.size, count);
     31 
     32 var x = { abc: 'test'};
     33 function callback2(value, key, set) {
     34    assertEq(x, this);
     35 }
     36 initialSet = new Set(['a']);
     37 initialSet.forEach(callback2, x);
     38 
     39 // testing failure conditions of Set.prototype.forEach
     40 
     41 var m = new Map([['a', 1], ['b', 2.3], ['c', undefined]]);
     42 assertThrowsInstanceOf(function() {
     43    Set.prototype.forEach.call(m, callback);
     44 }, TypeError, "Set.prototype.forEach should raise TypeError if not a used on a Set");
     45 
     46 var fn = 2;
     47 assertThrowsInstanceOf(function() {
     48    initialSet.forEach(fn);
     49 }, TypeError, "Set.prototype.forEach should raise TypeError if callback is not a function");