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

main
Last change on this file was 79a0317, checked in by stefan toskovski <stefantoska84@…>, 3 days ago

F4 Finalna Verzija

  • Property mode set to 100644
File size: 2.9 KB
Line 
1'use strict';
2
3var test = require('tape');
4
5var getSideChannelWeakMap = require('../');
6
7test('getSideChannelMap', { skip: typeof WeakMap !== 'function' && typeof Map !== 'function' }, function (t) {
8 var getSideChannel = getSideChannelWeakMap || function () {
9 throw new EvalError('should never happen');
10 };
11
12 t.test('export', function (st) {
13 st.equal(typeof getSideChannel, 'function', 'is a function');
14
15 st.equal(getSideChannel.length, 0, 'takes no arguments');
16
17 var channel = getSideChannel();
18 st.ok(channel, 'is truthy');
19 st.equal(typeof channel, 'object', 'is an object');
20 st.end();
21 });
22
23 t.test('assert', function (st) {
24 var channel = getSideChannel();
25 st['throws'](
26 function () { channel.assert({}); },
27 TypeError,
28 'nonexistent value throws'
29 );
30
31 var o = {};
32 channel.set(o, 'data');
33 st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops');
34
35 st.end();
36 });
37
38 t.test('has', function (st) {
39 var channel = getSideChannel();
40 /** @type {unknown[]} */ var o = [];
41
42 st.equal(channel.has(o), false, 'nonexistent value yields false');
43
44 channel.set(o, 'foo');
45 st.equal(channel.has(o), true, 'existent value yields true');
46
47 st.equal(channel.has('abc'), false, 'non object value non existent yields false');
48
49 channel.set('abc', 'foo');
50 st.equal(channel.has('abc'), true, 'non object value that exists yields true');
51
52 st.end();
53 });
54
55 t.test('get', function (st) {
56 var channel = getSideChannel();
57 var o = {};
58 st.equal(channel.get(o), undefined, 'nonexistent value yields undefined');
59
60 var data = {};
61 channel.set(o, data);
62 st.equal(channel.get(o), data, '"get" yields data set by "set"');
63
64 st.end();
65 });
66
67 t.test('set', function (st) {
68 var channel = getSideChannel();
69 var o = function () {};
70 st.equal(channel.get(o), undefined, 'value not set');
71
72 channel.set(o, 42);
73 st.equal(channel.get(o), 42, 'value was set');
74
75 channel.set(o, Infinity);
76 st.equal(channel.get(o), Infinity, 'value was set again');
77
78 var o2 = {};
79 channel.set(o2, 17);
80 st.equal(channel.get(o), Infinity, 'o is not modified');
81 st.equal(channel.get(o2), 17, 'o2 is set');
82
83 channel.set(o, 14);
84 st.equal(channel.get(o), 14, 'o is modified');
85 st.equal(channel.get(o2), 17, 'o2 is not modified');
86
87 st.end();
88 });
89
90 t.test('delete', function (st) {
91 var channel = getSideChannel();
92 var o = {};
93 st.equal(channel['delete']({}), false, 'nonexistent value yields false');
94
95 channel.set(o, 42);
96 st.equal(channel.has(o), true, 'value is set');
97
98 st.equal(channel['delete']({}), false, 'nonexistent value still yields false');
99
100 st.equal(channel['delete'](o), true, 'deleted value yields true');
101
102 st.equal(channel.has(o), false, 'value is no longer set');
103
104 st.end();
105 });
106
107 t.end();
108});
109
110test('getSideChannelMap, no WeakMaps and/or Maps', { skip: typeof WeakMap === 'function' || typeof Map === 'function' }, function (t) {
111 t.equal(getSideChannelWeakMap, false, 'is false');
112
113 t.end();
114});
Note: See TracBrowser for help on using the repository browser.