UNPKG

observable-set

Version:
68 lines (52 loc) 2.13 kB
'use strict'; var remove = require('es5-ext/array/#/remove') , isSet = require('es6-set/is-set') , toArray = require('es5-ext/array/to-array') , filterMap = require('./filter-map').tests , first = require('./first').tests , last = require('./last').tests , size = require('./size').tests , andOrNot = require('./and-or-not').tests , oToArray = require('./to-array').tests; module.exports = function (ObservableSet, a) { var arr = ['foo', 'bar', 23] , set = new ObservableSet(arr), adds = 0, deletes = 0, clears = 0; a(isSet(set), true, "Is set"); a(set instanceof ObservableSet, true, "Subclassed"); a.deep(toArray(set.values()), arr, "Constructor"); set.on('change', function (event) { if (event.type === 'add') ++adds; else if (event.type === 'delete') ++deletes; else ++clears; }); set.delete('bar'); remove.call(arr, 'bar'); a.deep(toArray(set.values()), arr, "Delete: value"); a.deep([adds, deletes, clears], [0, 1, 0], "Delete: event"); set.delete('elo'); a.deep(toArray(set.values()), arr, "Delete non existing: value"); a.deep([adds, deletes, clears], [0, 1, 0], "Delete non existing: event"); set.add('muszka'); arr.push('muszka'); a.deep(toArray(set.values()), arr, "Add: value"); a.deep([adds, deletes, clears], [1, 1, 0], "Add: event"); set.add('muszka'); a.deep(toArray(set.values()), arr, "Add same: value"); a.deep([adds, deletes, clears], [1, 1, 0], "Add same: event"); set.clear(); a.deep(toArray(set.values()), [], "Clear: value"); a.deep([adds, deletes, clears], [1, 1, 1], "Clear: event"); set.clear(); a.deep(toArray(set.values()), [], "Clear on empty: value"); a.deep([adds, deletes, clears], [1, 1, 1], "Clear on empty: event"); set.reload(['foo', 2, 3]); a.deep(toArray(set.values()), ['foo', 2, 3], "Reload on empty"); set.reload(['foo', 'marko', 3, 'elo']); a.deep(toArray(set.values()), ['foo', 3, 'marko', 'elo'], "Reload containing"); filterMap(ObservableSet, a); first(ObservableSet, a); last(ObservableSet, a); size(ObservableSet, a); andOrNot(ObservableSet, a); oToArray(ObservableSet, a); };