source: frontend/node_modules/side-channel-list/test/index.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 4.0 KB
Line 
1'use strict';
2
3var test = require('tape');
4
5var getSideChannelList = require('../');
6
7test('getSideChannelList', function (t) {
8 t.test('export', function (st) {
9 st.equal(typeof getSideChannelList, 'function', 'is a function');
10
11 st.equal(getSideChannelList.length, 0, 'takes no arguments');
12
13 var channel = getSideChannelList();
14 st.ok(channel, 'is truthy');
15 st.equal(typeof channel, 'object', 'is an object');
16 st.end();
17 });
18
19 t.test('assert', function (st) {
20 var channel = getSideChannelList();
21 st['throws'](
22 function () { channel.assert({}); },
23 TypeError,
24 'nonexistent value throws'
25 );
26
27 var o = {};
28 channel.set(o, 'data');
29 st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops');
30
31 st.end();
32 });
33
34 t.test('has', function (st) {
35 var channel = getSideChannelList();
36 /** @type {unknown[]} */ var o = [];
37
38 st.equal(channel.has(o), false, 'nonexistent value yields false');
39
40 channel.set(o, 'foo');
41 st.equal(channel.has(o), true, 'existent value yields true');
42
43 st.equal(channel.has('abc'), false, 'non object value non existent yields false');
44
45 channel.set('abc', 'foo');
46 st.equal(channel.has('abc'), true, 'non object value that exists yields true');
47
48 st.end();
49 });
50
51 t.test('get', function (st) {
52 var channel = getSideChannelList();
53 var o = {};
54 st.equal(channel.get(o), undefined, 'nonexistent value yields undefined');
55
56 var data = {};
57 channel.set(o, data);
58 st.equal(channel.get(o), data, '"get" yields data set by "set"');
59
60 st.end();
61 });
62
63 t.test('set', function (st) {
64 var channel = getSideChannelList();
65 var o = function () {};
66 st.equal(channel.get(o), undefined, 'value not set');
67
68 channel.set(o, 42);
69 st.equal(channel.get(o), 42, 'value was set');
70
71 channel.set(o, Infinity);
72 st.equal(channel.get(o), Infinity, 'value was set again');
73
74 var o2 = {};
75 channel.set(o2, 17);
76 st.equal(channel.get(o), Infinity, 'o is not modified');
77 st.equal(channel.get(o2), 17, 'o2 is set');
78
79 channel.set(o, 14);
80 st.equal(channel.get(o), 14, 'o is modified');
81 st.equal(channel.get(o2), 17, 'o2 is not modified');
82
83 st.end();
84 });
85
86 t.test('delete', function (st) {
87 var channel = getSideChannelList();
88 var o = {};
89 st.equal(channel['delete']({}), false, 'nonexistent value yields false');
90
91 channel.set(o, 42);
92 st.equal(channel.has(o), true, 'value is set');
93
94 st.equal(channel['delete']({}), false, 'nonexistent value still yields false');
95
96 st.equal(channel['delete'](o), true, 'deleted value yields true');
97
98 st.equal(channel.has(o), false, 'value is no longer set');
99
100 st.end();
101 });
102
103 t.test('delete: first node in a multi-node list', function (st) {
104 var channel = getSideChannelList();
105
106 channel.set('a', 1);
107 channel.set('b', 2);
108
109 st.equal(channel['delete']('b'), true, 'deleting first data node yields true');
110
111 st.equal(channel.has('a'), true, 'second node is still present after deleting first');
112 st.equal(channel.get('a'), 1, 'second node value is intact after deleting first');
113 st.equal(channel.has('b'), false, 'deleted node is gone');
114
115 st.end();
116 });
117
118 t.test('delete: last remaining node empties the list', function (st) {
119 var channel = getSideChannelList();
120
121 channel.set('a', 1);
122 channel.set('b', 2);
123
124 st.equal(channel['delete']('b'), true, 'delete first node');
125 st.equal(channel['delete']('a'), true, 'delete second (last) node');
126
127 st.equal(channel.has('a'), false, 'a is gone');
128 st.equal(channel.has('b'), false, 'b is gone');
129 st.equal(channel.get('a'), undefined, 'get a yields undefined');
130
131 channel.set('c', 3);
132 st.equal(channel.get('c'), 3, 'can set new values after emptying');
133
134 st.end();
135 });
136
137 t.test('delete: middle node in a multi-node list', function (st) {
138 var channel = getSideChannelList();
139
140 channel.set('a', 1);
141 channel.set('b', 2);
142 channel.set('c', 3);
143
144 st.equal(channel['delete']('b'), true, 'deleting middle node yields true');
145
146 st.equal(channel.get('a'), 1, 'first node still intact');
147 st.equal(channel.has('b'), false, 'middle node is gone');
148 st.equal(channel.get('c'), 3, 'last node still intact');
149
150 st.end();
151 });
152
153 t.end();
154});
Note: See TracBrowser for help on using the repository browser.