atomic-fns 0.3.5 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/README.md +2 -2
  2. package/{core → dist}/collections/BTree.d.ts +6 -6
  3. package/{core → dist}/collections/BTree.js +17 -17
  4. package/{core → dist}/collections/Heap.d.ts +3 -3
  5. package/{core → dist}/collections/Heap.js +0 -0
  6. package/dist/collections/LRUCache.d.ts +80 -0
  7. package/dist/collections/LRUCache.js +126 -0
  8. package/{core → dist}/collections/SortedMap.d.ts +2 -2
  9. package/{core → dist}/collections/SortedMap.js +0 -0
  10. package/{core → dist}/collections/SortedSet.d.ts +3 -3
  11. package/{core → dist}/collections/SortedSet.js +1 -1
  12. package/{core → dist}/collections/SortedTree.d.ts +3 -3
  13. package/{core → dist}/collections/SortedTree.js +1 -1
  14. package/{core → dist}/collections/SplayTree.d.ts +5 -5
  15. package/{core → dist}/collections/SplayTree.js +0 -0
  16. package/{core → dist}/collections/abc.d.ts +0 -0
  17. package/{core → dist}/collections/abc.js +0 -0
  18. package/{core → dist}/collections/deque.d.ts +6 -6
  19. package/{core → dist}/collections/deque.js +0 -0
  20. package/{core → dist}/collections/frozenset.d.ts +0 -0
  21. package/{core → dist}/collections/frozenset.js +3 -6
  22. package/{core → dist}/collections/index.d.ts +4 -4
  23. package/{core → dist}/collections/index.js +0 -0
  24. package/{core → dist}/functools/index.d.ts +27 -13
  25. package/{core → dist}/functools/index.js +34 -12
  26. package/{core → dist}/globals/index.d.ts +7 -10
  27. package/{core → dist}/globals/index.js +7 -14
  28. package/dist/i18n/date/index.d.ts +204 -0
  29. package/dist/i18n/date/index.js +530 -0
  30. package/dist/i18n/date/utils.d.ts +65 -0
  31. package/dist/i18n/date/utils.js +312 -0
  32. package/dist/i18n/duration.d.ts +112 -0
  33. package/dist/i18n/duration.js +392 -0
  34. package/dist/i18n/format.d.ts +26 -0
  35. package/dist/i18n/format.js +495 -0
  36. package/{core → dist}/i18n/index.d.ts +1 -1
  37. package/{core → dist}/i18n/index.js +1 -1
  38. package/{core → dist}/index.d.ts +0 -0
  39. package/{core → dist}/index.js +0 -0
  40. package/{core → dist}/itertools/index.d.ts +27 -27
  41. package/{core → dist}/itertools/index.js +24 -24
  42. package/{core → dist}/math/index.d.ts +3 -3
  43. package/{core → dist}/math/index.js +0 -0
  44. package/{core → dist}/operators/index.d.ts +2 -2
  45. package/{core → dist}/operators/index.js +2 -2
  46. package/{core → dist}/random/index.d.ts +1 -1
  47. package/{core → dist}/random/index.js +3 -3
  48. package/package.json +28 -42
  49. package/.editorconfig +0 -12
  50. package/.esdoc.json +0 -27
  51. package/.eslintignore +0 -1
  52. package/.eslintrc.json +0 -35
  53. package/.firebaserc +0 -5
  54. package/.prettierrc +0 -19
  55. package/core/collections/BTree.ts +0 -1340
  56. package/core/collections/Heap.ts +0 -189
  57. package/core/collections/LRUCache.d.ts +0 -152
  58. package/core/collections/LRUCache.js +0 -409
  59. package/core/collections/LRUCache.ts +0 -486
  60. package/core/collections/SortedMap.ts +0 -146
  61. package/core/collections/SortedSet.ts +0 -110
  62. package/core/collections/SortedTree.ts +0 -160
  63. package/core/collections/SplayTree.ts +0 -354
  64. package/core/collections/abc.ts +0 -176
  65. package/core/collections/deque.ts +0 -338
  66. package/core/collections/frozenset.ts +0 -37
  67. package/core/collections/index.ts +0 -1024
  68. package/core/collections/test.html +0 -10
  69. package/core/collections/typedArrays.d.ts +0 -31
  70. package/core/collections/typedArrays.js +0 -143
  71. package/core/collections/typedArrays.ts +0 -163
  72. package/core/functools/index.ts +0 -260
  73. package/core/globals/index.ts +0 -481
  74. package/core/i18n/date/format.d.ts +0 -16
  75. package/core/i18n/date/format.js +0 -307
  76. package/core/i18n/date/format.ts +0 -343
  77. package/core/i18n/date/index.d.ts +0 -224
  78. package/core/i18n/date/index.js +0 -387
  79. package/core/i18n/date/index.ts +0 -471
  80. package/core/i18n/date/test.html +0 -67
  81. package/core/i18n/index.ts +0 -8
  82. package/core/index.ts +0 -8
  83. package/core/itertools/index.ts +0 -494
  84. package/core/math/index.ts +0 -152
  85. package/core/operators/index.ts +0 -310
  86. package/core/random/index.ts +0 -66
  87. package/firebase.json +0 -10
  88. package/jasmine.json +0 -14
  89. package/tests/BTree.spec.ts +0 -143
  90. package/tests/Cache.spec.ts +0 -161
  91. package/tests/Heap.spec.ts +0 -66
  92. package/tests/SortedMap.spec.ts +0 -144
  93. package/tests/SortedSet.spec.ts +0 -84
  94. package/tests/SortedTree.spec.ts +0 -164
  95. package/tests/SplayTree.spec.ts +0 -121
  96. package/tests/collections.spec.ts +0 -288
  97. package/tests/deque.spec.ts +0 -107
  98. package/tests/globals.spec.ts +0 -270
  99. package/tests/itertools.spec.ts +0 -266
  100. package/tests/math.spec.ts +0 -25
  101. package/tests/operators.spec.ts +0 -40
  102. package/tests/random.spec.ts +0 -46
  103. package/tsconfig.json +0 -126
  104. package/tsconfig.node.json +0 -18
  105. package/tsconfig.xo.json +0 -9
@@ -1,288 +0,0 @@
1
- import assert from 'assert'
2
- import {
3
- clone,
4
- compact,
5
- count,
6
- difference,
7
- filter,
8
- find,
9
- findRight,
10
- flatten,
11
- forEach,
12
- groupBy,
13
- intersection,
14
- merge,
15
- omit,
16
- pick,
17
- remove,
18
- sortedUniq,
19
- union,
20
- uniq
21
- } from '../core/collections/index.js'
22
-
23
- describe('collections', () => {
24
- it('compact', () => {
25
- let filtered = compact([0, 1, false, 2, '', 3])
26
- assert.deepEqual(filtered, [1, 2, 3])
27
- assert.deepEqual(compact({ a: 1, b: undefined, c: false, d: [] }), { a: 1 })
28
- })
29
-
30
- it('count', () => {
31
- let counters = count([0, 1, false, 2, '', 3], (x) => !!x)
32
- assert(counters['true'] === 3)
33
- assert(counters['false'] === 3)
34
- })
35
-
36
- it('clone array', () => {
37
- let arr = [4, 7, 1, 9]
38
- assert.deepEqual(clone(arr), arr)
39
- let target = { user: 'fred', age: 40, active: false }
40
- assert.deepEqual(clone(target), target)
41
- })
42
-
43
- it('clone object', () => {
44
- let target = { user: 'fred', age: 40, active: false }
45
- assert.deepEqual(clone(target), target)
46
- })
47
-
48
- it('difference', () => {
49
- let a = [1, 2, 5]
50
- let b = [3, 4, 5]
51
- assert.deepEqual(sortedUniq(difference(a, b)), [1, 2, 3, 4])
52
- })
53
-
54
- it('intersection', () => {
55
- let a = [1, 2, 5]
56
- let b = [3, 4, 5]
57
- assert.deepEqual([...intersection(a, b)], [5])
58
- })
59
-
60
- it('union', () => {
61
- let a = [1, 2, 5]
62
- let b = [3, 4, 5]
63
- assert.deepEqual(sortedUniq(union(a, b)), [1, 2, 3, 4, 5])
64
- })
65
-
66
- it('filter', () => {
67
- assert(filter(null) == undefined)
68
- let users = [
69
- { user: 'barney', age: 36, active: true },
70
- { user: 'fred', age: 40, active: false }
71
- ]
72
- assert.deepEqual(
73
- filter(users, (o) => o.active),
74
- [users[0]]
75
- )
76
- })
77
-
78
- it('filter matches', () => {
79
- assert(filter(null) == undefined)
80
- let users = [
81
- { user: 'barney', age: 36, active: true },
82
- { user: 'fred', age: 40, active: false }
83
- ]
84
- assert.deepEqual(filter(users, { age: 36 }), [users[0]])
85
- })
86
-
87
- it('filter property', () => {
88
- assert(filter(null) == undefined)
89
- let users = [
90
- { user: 'barney', age: 36, active: true },
91
- { user: 'fred', age: 40, active: false }
92
- ]
93
- assert.deepEqual(filter(users, 'active'), [users[0]])
94
- })
95
-
96
- it('find', () => {
97
- let users = [
98
- { user: 'barney', age: 36, active: true },
99
- { user: 'fred', age: 40, active: false }
100
- ]
101
- assert(find(users, (o) => o.active) === users[0])
102
- })
103
-
104
- it('find matches', () => {
105
- let users = [
106
- { user: 'barney', age: 36, active: true },
107
- { user: 'fred', age: 40, active: false }
108
- ]
109
- assert(find(users, { age: 36 }) === users[0])
110
- })
111
-
112
- it('find property', () => {
113
- let users = [
114
- { user: 'barney', age: 36, active: true },
115
- { user: 'fred', age: 40, active: false }
116
- ]
117
- assert(find(users, 'active') === users[0])
118
- })
119
-
120
- it('findRight', () => {
121
- let users = [
122
- { user: 'barney', age: 36, active: true },
123
- { user: 'fred', age: 40, active: false },
124
- { user: 'barney', age: 36, active: true }
125
- ]
126
- assert(findRight(users, { age: 36 }) === users[2])
127
- })
128
-
129
- it('findRight matches', () => {
130
- let users = [
131
- { user: 'barney', age: 36, active: true },
132
- { user: 'fred', age: 40, active: false },
133
- { user: 'barney', age: 36, active: true }
134
- ]
135
- assert(findRight(users, { age: 36 }) === users[2])
136
- })
137
-
138
- it('findRight property', () => {
139
- let users = [
140
- { user: 'barney', age: 36, active: true },
141
- { user: 'fred', age: 40, active: false },
142
- { user: 'barney', age: 36, active: true }
143
- ]
144
- assert(findRight(users, 'active') === users[2])
145
- })
146
-
147
- it('forEach', () => {
148
- let users = [
149
- { user: 'barney', age: 36, active: true },
150
- { user: 'fred', age: 40, active: false }
151
- ]
152
- let result = [] as any
153
- forEach(users, (value, key) => result.push([key, value]))
154
- assert.deepEqual(
155
- result,
156
- users.map((x, i) => [i, x])
157
- )
158
- })
159
-
160
- it('forEach object key', () => {
161
- let target = { user: 'fred', age: 40, active: false }
162
- let objs = []
163
- // @ts-expect-error
164
- forEach(target, (value, key) => objs.push([key, value]))
165
- assert.deepEqual(objs, Object.entries(target))
166
- })
167
-
168
- it('flatten Array', () => {
169
- let data = flatten([1, 2, [3, 4], 5])
170
- assert.deepEqual(data, [1, 2, 3, 4, 5])
171
- })
172
-
173
- it('flatten Array deep', () => {
174
- let data = flatten([1, 2, [3, [4]], [5]], true)
175
- assert.deepEqual(data, [1, 2, 3, 4, 5])
176
- })
177
-
178
- it('flatten Object', () => {
179
- const data = {
180
- dates: {
181
- expiry_date: '30 sep 2018',
182
- available: '30 sep 2017',
183
- min_contract_period: [
184
- {
185
- id: 1,
186
- name: '1 month'
187
- }
188
- ]
189
- },
190
- price: {
191
- currency: 'RM',
192
- value: 1500
193
- }
194
- }
195
- assert.deepEqual(flatten(data), {
196
- 'dates.expiry_date': '30 sep 2018',
197
- 'dates.available': '30 sep 2017',
198
- 'dates.min_contract_period[0].id': 1,
199
- 'dates.min_contract_period[0].name': '1 month',
200
- 'price.currency': 'RM',
201
- 'price.value': 1500
202
- })
203
- })
204
-
205
- it('groupBy', () => {
206
- assert.deepEqual(groupBy([6.1, 4.2, 6.3], Math.floor), { '4': [4.2], '6': [6.1, 6.3] })
207
- })
208
-
209
- it('merge', () => {
210
- let object = {
211
- a: [{ b: 2 }, { d: 4 }]
212
- }
213
- let other = {
214
- a: [{ c: 3 }, { e: 5 }],
215
- foo: null,
216
- bar: true,
217
- noop: undefined
218
- }
219
- assert.deepEqual(merge(object, other), {
220
- a: [
221
- { b: 2, c: 3 },
222
- { d: 4, e: 5 }
223
- ],
224
- foo: null,
225
- bar: true
226
- })
227
- })
228
-
229
- it('pick', () => {
230
- let target = { user: 'fred', age: 40, active: false }
231
- assert.deepEqual(pick(target, ['user']), { user: 'fred' })
232
- assert.deepEqual(
233
- pick(target, (x) => x >= 40),
234
- { age: 40 }
235
- )
236
- })
237
-
238
- it('pickBy', () => {
239
- let target = { user: 'fred', age: 40, active: false }
240
- assert.deepEqual(
241
- pick(target, (x) => x >= 40),
242
- { age: 40 }
243
- )
244
- })
245
-
246
- it('omit', () => {
247
- let target = { user: 'fred', age: 40, active: false }
248
- assert.deepEqual(omit(target, ['age', 'active']), { user: 'fred' })
249
- })
250
-
251
- it('omitBy', () => {
252
- let target = { user: 'fred', age: 40, active: false }
253
- assert.deepEqual(
254
- omit(target, (x) => !x),
255
- { user: 'fred', age: 40 }
256
- )
257
- })
258
-
259
- it('remove', () => {
260
- assert.deepEqual(remove([1, 2, 3, 4], 1), [2, 3, 4])
261
- assert.deepEqual(remove([1, 2, 3, 4], [3, 4]), [1, 2])
262
- })
263
-
264
- it('removeBy', () => {
265
- assert.deepEqual(
266
- remove([1, 2, 3, 4], (x) => x % 2 === 0),
267
- [1, 3]
268
- )
269
- })
270
-
271
- it('sortedUniq', () => {
272
- let arr = [4, 7, 1, 9, 1, 7, 4]
273
- let sort = sortedUniq(arr)
274
- assert.deepEqual(sort, [1, 4, 7, 9])
275
- })
276
-
277
- it('uniq', () => {
278
- let arr = [4, 7, 1, 1, 9, 4, 7]
279
- let distinct = uniq(arr)
280
- assert.deepEqual(distinct, [4, 7, 1, 9])
281
- })
282
-
283
- it('uniqBy', () => {
284
- let arr = [4, 7, 1, 1, 9, 4, 7]
285
- let distinct = uniq(arr, (x) => x * 2)
286
- assert.deepEqual(distinct, [8, 14, 2, 18])
287
- })
288
- })
@@ -1,107 +0,0 @@
1
- import assert from 'assert'
2
- import { Deque } from '../core/collections/deque.js'
3
-
4
- describe('deque', () => {
5
- const print = (x) => console.log(x.toArray())
6
-
7
- it('empty', () => {
8
- let deque = new Deque()
9
- assert(deque.size === 0)
10
- })
11
-
12
- it('iterable', () => {
13
- let values = [1, 2, 3, 4]
14
- let deque = new Deque(values)
15
- let elements = [] as any[]
16
- for (const value of deque.values()) {
17
- elements.push(value)
18
- }
19
- assert.deepEqual(values, elements)
20
- })
21
-
22
- it('append', () => {
23
- let values = [1, 2, 3, 4]
24
- let deque = new Deque(values)
25
- assert(deque.size === values.length)
26
- assert.deepEqual(deque.toArray(), values)
27
- deque.append(5)
28
- assert(deque.size === 5)
29
- assert.deepEqual(deque.toArray(), [1, 2, 3, 4, 5])
30
- })
31
-
32
- it('appendleft', () => {
33
- let values = [1, 2, 3, 4]
34
- let deque = new Deque(values)
35
- deque.appendleft(0)
36
- deque.appendleft(1)
37
- deque.appendleft(1)
38
- deque.appendleft(0)
39
- assert.deepEqual(deque.toArray(), [0, 1, 1, 0, 1, 2, 3, 4])
40
- assert(deque.size === 8)
41
- })
42
-
43
- it('pop', () => {
44
- let values = [1, 2, 3, 4]
45
- let deque = new Deque(values)
46
- assert(deque.pop() === 4)
47
- assert(deque.pop() === 3)
48
- assert(deque.pop() === 2)
49
- assert(deque.pop() === 1)
50
- assert(deque.size === 0)
51
- assert.deepEqual(deque.toArray(), [])
52
- // assert.throws(() => deque.pop())
53
- })
54
-
55
- it('popleft', () => {
56
- let values = [1, 2, 3, 4]
57
- let deque = new Deque(values)
58
- assert(deque.popleft() === 1)
59
- assert(deque.popleft() === 2)
60
- assert(deque.popleft() === 3)
61
- assert(deque.popleft() === 4)
62
- assert(deque.size === 0)
63
- assert.deepEqual(deque.toArray(), [])
64
- // assert.throws(() => deque.popleft())
65
- })
66
-
67
- it('contains', () => {
68
- let values = [1, 2, 3, 4]
69
- let deque = new Deque(values)
70
- for (const val of values) {
71
- assert(deque.contains(val))
72
- }
73
- })
74
-
75
- it('get', () => {
76
- let values = [1, 2, 3, 4]
77
- let deque = new Deque(values)
78
- for (let i = 0; i < values.length; i++) {
79
- assert(deque.get(i) === values[i])
80
- }
81
- assert(deque.get(-1) === 4)
82
- assert(deque.get(-2) === 3)
83
- })
84
-
85
- it('clear', () => {
86
- let values = [1, 2, 3, 4]
87
- let deque = new Deque(values)
88
- deque.clear()
89
- assert(deque.size === 0)
90
- assert.deepEqual(deque.toArray(), [])
91
- })
92
-
93
- it('reversed', () => {
94
- let values = [4, 3, 2, 0, 1]
95
- let deque = new Deque(values)
96
- values.reverse()
97
- let arr = deque.reversed()
98
- assert.deepEqual(arr, values)
99
- })
100
-
101
- it('toArray', () => {
102
- let values = [1, 2, 3, 4]
103
- let deque = new Deque(values)
104
- assert(deque.size === values.length)
105
- assert.deepEqual(deque.toArray(), values)
106
- })
107
- })
@@ -1,270 +0,0 @@
1
- import assert from 'assert'
2
- import {
3
- bin,
4
- call,
5
- chr,
6
- CustomError,
7
- False,
8
- get,
9
- hash,
10
- hashCode,
11
- HASH_KEY,
12
- hex,
13
- isArray,
14
- isArrayLike,
15
- isAsyncFunction,
16
- isBigint,
17
- isBool,
18
- isEmpty,
19
- isFunction,
20
- isNaN,
21
- isNull,
22
- isNumber,
23
- isObject,
24
- isPromise,
25
- isString,
26
- isSymbol,
27
- keys,
28
- list,
29
- next,
30
- oct,
31
- ord,
32
- str,
33
- True,
34
- type,
35
- uniqueId,
36
- values,
37
- noop
38
- } from '../core/globals/index.js'
39
- import { enumerate } from '../core/itertools/index.js'
40
-
41
- describe('globals', () => {
42
- it('CustomError', () => {
43
- let err = new CustomError('custom')
44
- assert.equal(err.message, 'custom')
45
- })
46
-
47
- it('True', () => assert(True() === true))
48
-
49
- it('False', () => assert(False() === false))
50
-
51
- it('type', () => {
52
- assert(type(null) === 'null')
53
- assert(type(undefined) === 'undefined')
54
- assert(type(true) === 'boolean')
55
- assert(type(Boolean()) === 'boolean')
56
- assert(type(True()) === 'boolean')
57
- assert(type(False()) === 'boolean')
58
- assert(type('') === 'string')
59
- assert(type(String('')) === 'string')
60
- assert(type(NaN) === 'NaN')
61
- assert(type(42) === 'number')
62
- assert(type(Number(42)) === 'number')
63
- assert(type(Number('42')) === 'number')
64
- assert(type(parseFloat('42.0')) === 'number')
65
- assert(type(42n) === 'bigint')
66
- assert(type(BigInt('42')) === 'bigint')
67
- assert(type([]) === 'array')
68
- assert(type({}) === 'object')
69
- assert(type(type) === 'function')
70
- assert(type(Error()) === 'error')
71
- assert(type(new CustomError()) === 'error')
72
- assert(type(Symbol()) === 'symbol')
73
- assert(type(new Map()) === 'Map')
74
- assert(type(new WeakMap()) === 'WeakMap')
75
- assert(type(new Set()) === 'Set')
76
- assert(type(new WeakSet()) === 'WeakSet')
77
- assert(type(new Promise(noop)) === 'Promise')
78
- assert(type(new Int8Array()) === 'Int8Array')
79
- assert(type(new Uint8Array()) === 'Uint8Array')
80
- assert(type(new Uint8ClampedArray()) === 'Uint8ClampedArray')
81
- assert(type(new Int16Array()) === 'Int16Array')
82
- assert(type(new Uint16Array()) === 'Uint16Array')
83
- assert(type(new Int32Array()) === 'Int32Array')
84
- assert(type(new Uint32Array()) === 'Uint32Array')
85
- assert(type(new Float32Array()) === 'Float32Array')
86
- assert(type(new Float64Array()) === 'Float64Array')
87
- assert(type(new ArrayBuffer(8)) === 'ArrayBuffer')
88
- assert(type(new DataView(new ArrayBuffer(8))) === 'DataView')
89
- })
90
-
91
- it('isBool', () => {
92
- assert(isBool(true))
93
- assert(isBool(Boolean()))
94
- assert(!isBool(''))
95
- assert(!isBool({}))
96
- assert(!isBool(undefined))
97
- })
98
-
99
- it('isObject', () => {
100
- assert(isObject({}))
101
- assert(!isObject(''))
102
- assert(!isObject([]))
103
- })
104
-
105
- it('isString', () => {
106
- assert(isString(''))
107
- assert(!isString([]))
108
- })
109
-
110
- it('isArray', () => {
111
- assert(isArray([]))
112
- assert(isArrayLike([]))
113
- assert(!isArray(''))
114
- assert(!isArrayLike(''))
115
- })
116
-
117
- it('isFunction', () => {
118
- assert(isFunction(noop))
119
- assert(!isFunction([]))
120
- })
121
-
122
- it('isAsyncFunction', () => {
123
- assert(isAsyncFunction(async function () {}))
124
- assert(isAsyncFunction(async () => {}))
125
- assert(!isAsyncFunction(noop))
126
- })
127
-
128
- it('isNaN', () => {
129
- assert(isNaN(NaN))
130
- })
131
-
132
- it('isNumber', () => {
133
- assert(!isNumber(NaN))
134
- assert(isNumber(42))
135
- assert(isNumber(Number(42)))
136
- assert(isNumber(Number('42')))
137
- assert(isNumber(parseFloat('42.0')))
138
- })
139
-
140
- it('isBigInt', () => {
141
- assert(isBigint(42n))
142
- assert(isBigint(BigInt('42')))
143
- })
144
-
145
- it('isPromise', () => {
146
- assert(isPromise(new Promise(noop)))
147
- })
148
-
149
- it('isSymbol', () => {
150
- assert(isSymbol(Symbol()))
151
- })
152
-
153
- it('isNull', () => {
154
- assert(isNull(null))
155
- assert(isNull(undefined))
156
- assert(!isNull(''))
157
- assert(!isNull([]))
158
- assert(!isNull({}))
159
- })
160
-
161
- it('str', () => {
162
- assert(str(undefined) === '')
163
- assert(str(null) === '')
164
- assert(str(true) === 'true')
165
- assert(str(false) === 'false')
166
- assert(str(NaN) === 'NaN')
167
- assert(str(42) === '42')
168
- assert(str([]) === '')
169
- assert(str([1, 2, 3]) === '1,2,3')
170
- assert(str({}) === '[object Object]')
171
- })
172
-
173
- it('uniqueId', () => {
174
- const uid = uniqueId()
175
- assert(isNumber(uid))
176
- let prefix = 'user_'
177
- const userId = uniqueId('user_')
178
- assert(userId.startsWith('user_'))
179
- })
180
-
181
- it('call', () => {
182
- const obj = {
183
- foo() {
184
- return 42
185
- }
186
- }
187
- assert(call(obj, 'foo') === 42)
188
- })
189
-
190
- it('chr', () => {
191
- assert(chr(97) === 'a')
192
- assert(chr(8364) === '€')
193
- })
194
-
195
- it('ord', () => {
196
- assert(ord('a') === 97)
197
- assert(ord('€') === 8364)
198
- })
199
-
200
- it('keys', () => {
201
- let obj = { a: 1, b: 2 }
202
- assert.deepEqual(keys(obj), Object.keys(obj))
203
- })
204
-
205
- it('values', () => {
206
- let obj = { a: 1, b: 2 }
207
- assert.deepEqual(values(obj), Object.values(obj))
208
- })
209
-
210
- it('next', () => {
211
- const iter = enumerate([1, 2, 3])
212
- assert.deepEqual(next(iter), [0, 1])
213
- assert.deepEqual(next(iter), [1, 2])
214
- assert.deepEqual(next(iter), [2, 3])
215
- })
216
-
217
- it('hash', () => {
218
- let obj = { a: 1, b: 2 }
219
- let h = hash(obj)
220
- assert(h === hash(obj))
221
- assert(obj[HASH_KEY] === h)
222
- })
223
-
224
- it('hashCode', () => {
225
- let obj = '{ a: 1, b: 2 }'
226
- assert(hash(obj) === hashCode(obj))
227
- })
228
-
229
- it('bin', () => {
230
- assert(bin(42) === (42).toString(2))
231
- })
232
-
233
- it('hex', () => {
234
- assert(hex(42) === (42).toString(16))
235
- })
236
-
237
- it('oct', () => {
238
- assert(oct(42) === (42).toString(8))
239
- })
240
-
241
- it('list', () => {
242
- const arr = [1, 2, 3]
243
- assert.deepEqual(list(arr), arr)
244
- assert.deepEqual(list(), [])
245
- })
246
-
247
- it('get', () => {
248
- const arr = [1, 2, 3]
249
- assert(get('2', arr) === 3)
250
- assert(get('3', arr, false) === false)
251
- assert(get('3', arr, false) === false)
252
- let obj = { foo: { bar: true } }
253
- let h = hash(obj)
254
- assert(get('foo.bar', obj))
255
- assert(get(['foo', 'bar'], obj))
256
- assert(get(HASH_KEY, obj) === h)
257
- assert(get([HASH_KEY], obj) === h)
258
- })
259
-
260
- it('isEmpty', () => {
261
- assert(isEmpty(null))
262
- assert(isEmpty(undefined))
263
- assert(isEmpty([]))
264
- assert(isEmpty(''))
265
- assert(isEmpty({}))
266
- assert(isEmpty(0))
267
- assert(isEmpty(false))
268
- assert(!isEmpty(1))
269
- })
270
- })