1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- import assert from 'assert';
- import { push, remove, toggle } from 'misago/utils/sets';
- describe("Sets Utils", function() {
- it("push", function() {
- let set = [];
- set = push(set, 2);
- assert.equal(set.length, 1, "array length changed");
- assert.equal(set[0], 2, "array contains pushed value");
- set = push(set, 2);
- assert.equal(set.length, 1, "array length didn't change");
- assert.equal(set[0], 2, "array contains pushed value");
- set = push(set, 1);
- assert.equal(set.length, 2, "array length changed");
- assert.equal(set[0], 2, "array contains original item");
- assert.equal(set[1], 1, "array contains pushed item");
- });
- it("push is immutable", function() {
- let set = [];
- let newSet = push(set, 2);
- assert.equal(set.length, 0, "operation didn't change old value");
- assert.ok(set !== newSet, "operation created new value");
- assert.ok(push(newSet, 2) === newSet, "no change returned old value");
- });
- it("remove", function() {
- let set = [1, 2, 3];
- set = remove(set, 2);
- assert.equal(set.length, 2, "array length changed");
- assert.equal(set[1], 3, "removed value is no longer in array");
- set = remove(set, 2);
- assert.equal(set.length, 2, "array length didn't change");
- });
- it("remove is immutable", function() {
- let set = [1, 2, 3];
- let newSet = remove(set, 2);
- assert.equal(set.length, 3, "operation didn't change old value");
- assert.ok(set !== newSet, "operation created new value");
- assert.ok(remove(newSet, 2) === newSet, "no change returned old value");
- });
- it("toggle", function() {
- let set = [];
- set = toggle(set, 2);
- assert.equal(set.length, 1, "array length changed");
- assert.equal(set[0], 2, "array contains toggled value");
- set = toggle(set, 2);
- assert.equal(set.length, 0, "array was emptied");
- set = toggle(set, 2);
- assert.equal(set.length, 1, "array length changed");
- assert.equal(set[0], 2, "array contains toggled item again");
- });
- it("toggle is immutable", function() {
- let set = [1, 2, 3];
- let newSet = toggle(set, 2);
- assert.equal(set.length, 3, "operation didn't change old value");
- assert.ok(set !== newSet, "operation created new value");
- assert.ok(toggle(newSet, 2) !== newSet, "toggle always mutates state");
- });
- });
|