| 'use strict'; |
| |
| var iteratorSymbol = require('es6-symbol').iterator; |
| |
| module.exports = function (T) { |
| return { |
| Values: function (a) { |
| var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], it; |
| |
| it = new T(x); |
| a(it[iteratorSymbol](), it, "@@iterator"); |
| a.deep(it.next(), { done: false, value: 'raz' }, "#1"); |
| a.deep(it.next(), { done: false, value: 'dwa' }, "#2"); |
| x.splice(1, 0, 'elo'); |
| a.deep(it.next(), { done: false, value: 'dwa' }, "Insert"); |
| a.deep(it.next(), { done: false, value: 'trzy' }, "#3"); |
| a.deep(it.next(), { done: false, value: 'cztery' }, "#4"); |
| x.pop(); |
| a.deep(it.next(), { done: false, value: 'pięć' }, "#5"); |
| a.deep(it.next(), { done: true, value: undefined }, "End"); |
| }, |
| "Keys & Values": function (a) { |
| var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], it; |
| |
| it = new T(x, 'key+value'); |
| a(it[iteratorSymbol](), it, "@@iterator"); |
| a.deep(it.next(), { done: false, value: [0, 'raz'] }, "#1"); |
| a.deep(it.next(), { done: false, value: [1, 'dwa'] }, "#2"); |
| x.splice(1, 0, 'elo'); |
| a.deep(it.next(), { done: false, value: [2, 'dwa'] }, "Insert"); |
| a.deep(it.next(), { done: false, value: [3, 'trzy'] }, "#3"); |
| a.deep(it.next(), { done: false, value: [4, 'cztery'] }, "#4"); |
| x.pop(); |
| a.deep(it.next(), { done: false, value: [5, 'pięć'] }, "#5"); |
| a.deep(it.next(), { done: true, value: undefined }, "End"); |
| }, |
| Keys: function (a) { |
| var x = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], it; |
| |
| it = new T(x, 'key'); |
| a(it[iteratorSymbol](), it, "@@iterator"); |
| a.deep(it.next(), { done: false, value: 0 }, "#1"); |
| a.deep(it.next(), { done: false, value: 1 }, "#2"); |
| x.splice(1, 0, 'elo'); |
| a.deep(it.next(), { done: false, value: 2 }, "Insert"); |
| a.deep(it.next(), { done: false, value: 3 }, "#3"); |
| a.deep(it.next(), { done: false, value: 4 }, "#4"); |
| x.pop(); |
| a.deep(it.next(), { done: false, value: 5 }, "#5"); |
| a.deep(it.next(), { done: true, value: undefined }, "End"); |
| }, |
| Sparse: function (a) { |
| var x = new Array(6), it; |
| |
| x[2] = 'raz'; |
| x[4] = 'dwa'; |
| it = new T(x); |
| a.deep(it.next(), { done: false, value: undefined }, "#1"); |
| a.deep(it.next(), { done: false, value: undefined }, "#2"); |
| a.deep(it.next(), { done: false, value: 'raz' }, "#3"); |
| a.deep(it.next(), { done: false, value: undefined }, "#4"); |
| a.deep(it.next(), { done: false, value: 'dwa' }, "#5"); |
| a.deep(it.next(), { done: false, value: undefined }, "#6"); |
| a.deep(it.next(), { done: true, value: undefined }, "End"); |
| } |
| }; |
| }; |