@rogolev/value 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. package/.prettierignore +4 -4
  2. package/CHANGELOG.md +82 -56
  3. package/LICENSE +41 -41
  4. package/README.md +118 -91
  5. package/babel.config.json +20 -20
  6. package/docs/classes/Convert/toArray.md +100 -0
  7. package/docs/classes/Convert/toAssoc.md +90 -0
  8. package/docs/classes/Convert/toBool.md +72 -0
  9. package/docs/classes/Convert/toBoolean.md +72 -0
  10. package/docs/classes/Convert/toFloat.md +69 -0
  11. package/docs/classes/Convert/toInt.md +86 -0
  12. package/docs/classes/Convert/toInteger.md +86 -0
  13. package/docs/classes/Convert/toList.md +73 -0
  14. package/docs/classes/Convert/toObject.md +76 -0
  15. package/docs/classes/Convert/toString.md +125 -0
  16. package/docs/classes/Convert.md +44 -0
  17. package/docs/classes/Type/isArray.md +106 -0
  18. package/docs/classes/Type/isAssoc.md +57 -0
  19. package/docs/classes/Type/isBigInt.md +49 -0
  20. package/docs/classes/Type/isBool.md +51 -0
  21. package/docs/classes/Type/isBoolean.md +51 -0
  22. package/docs/classes/Type/isClass.md +60 -0
  23. package/docs/classes/Type/isEmpty.md +53 -0
  24. package/docs/classes/Type/isFloat.md +77 -0
  25. package/docs/classes/Type/isFunction.md +64 -0
  26. package/docs/classes/Type/isInfinity.md +59 -0
  27. package/docs/classes/Type/isInt.md +77 -0
  28. package/docs/classes/Type/isInteger.md +77 -0
  29. package/docs/classes/Type/isList.md +49 -0
  30. package/docs/classes/Type/isNaN.md +57 -0
  31. package/docs/classes/Type/isNull.md +49 -0
  32. package/docs/classes/Type/isNumber.md +60 -0
  33. package/docs/classes/Type/isNumeric.md +58 -0
  34. package/docs/classes/Type/isObject.md +53 -0
  35. package/docs/classes/Type/isScalar.md +54 -0
  36. package/docs/classes/Type/isString.md +54 -0
  37. package/docs/classes/Type/isSymbol.md +56 -0
  38. package/docs/classes/Type/isUndefined.md +52 -0
  39. package/docs/classes/Type.md +74 -0
  40. package/docs/classes/Value/constructor.md +48 -0
  41. package/docs/classes/Value/get.md +51 -0
  42. package/docs/classes/Value/getType.md +71 -0
  43. package/docs/classes/Value/isArray.md +67 -0
  44. package/docs/classes/Value/isAssoc.md +68 -0
  45. package/docs/classes/Value/isBigInt.md +52 -0
  46. package/docs/classes/Value/isBool.md +60 -0
  47. package/docs/classes/Value/isBoolean.md +60 -0
  48. package/docs/classes/Value/isClass.md +55 -0
  49. package/docs/classes/Value/isEmpty.md +84 -0
  50. package/docs/classes/Value/isFloat.md +52 -0
  51. package/docs/classes/Value/isFunction.md +60 -0
  52. package/docs/classes/Value/isInfinity.md +60 -0
  53. package/docs/classes/Value/isInt.md +52 -0
  54. package/docs/classes/Value/isInteger.md +52 -0
  55. package/docs/classes/Value/isList.md +59 -0
  56. package/docs/classes/Value/isNaN.md +79 -0
  57. package/docs/classes/Value/isNull.md +59 -0
  58. package/docs/classes/Value/isNumber.md +80 -0
  59. package/docs/classes/Value/isNumeric.md +79 -0
  60. package/docs/classes/Value/isObject.md +68 -0
  61. package/docs/classes/Value/isScalar.md +72 -0
  62. package/docs/classes/Value/isString.md +67 -0
  63. package/docs/classes/Value/isSymbol.md +75 -0
  64. package/docs/classes/Value/isUndefined.md +67 -0
  65. package/docs/classes/Value/print.md +164 -0
  66. package/docs/classes/Value/printType.md +158 -0
  67. package/docs/classes/Value/setType.md +79 -0
  68. package/docs/classes/Value/toArray.md +85 -0
  69. package/docs/classes/Value/toAssoc.md +85 -0
  70. package/docs/classes/Value/toBool.md +71 -0
  71. package/docs/classes/Value/toBoolean.md +71 -0
  72. package/docs/classes/Value/toFloat.md +72 -0
  73. package/docs/classes/Value/toInt.md +72 -0
  74. package/docs/classes/Value/toInteger.md +72 -0
  75. package/docs/classes/Value/toList.md +77 -0
  76. package/docs/classes/Value/toObject.md +78 -0
  77. package/docs/classes/Value/toPrint.md +115 -0
  78. package/docs/classes/Value/toPrintType.md +110 -0
  79. package/docs/classes/Value/toString.md +134 -0
  80. package/docs/classes/Value.md +113 -0
  81. package/docs/classes.md +11 -0
  82. package/docs/constants.md +47 -0
  83. package/docs/helpers/array.md +80 -80
  84. package/docs/helpers/empty.md +77 -77
  85. package/docs/helpers/gettype.md +69 -69
  86. package/docs/helpers/is_array.md +105 -105
  87. package/docs/helpers/is_assoc.md +59 -59
  88. package/docs/helpers/is_bigint.md +57 -57
  89. package/docs/helpers/is_bool.md +50 -50
  90. package/docs/helpers/is_boolean.md +50 -50
  91. package/docs/helpers/is_class.md +73 -73
  92. package/docs/helpers/is_float.md +71 -71
  93. package/docs/helpers/is_function.md +62 -62
  94. package/docs/helpers/is_infinity.md +61 -61
  95. package/docs/helpers/is_int.md +81 -81
  96. package/docs/helpers/is_integer.md +82 -82
  97. package/docs/helpers/is_list.md +51 -51
  98. package/docs/helpers/is_nan.md +59 -59
  99. package/docs/helpers/is_null.md +49 -49
  100. package/docs/helpers/is_number.md +67 -67
  101. package/docs/helpers/is_numeric.md +76 -76
  102. package/docs/helpers/is_object.md +69 -69
  103. package/docs/helpers/is_scalar.md +60 -60
  104. package/docs/helpers/is_string.md +58 -58
  105. package/docs/helpers/is_symbol.md +58 -58
  106. package/docs/helpers/is_undefined.md +56 -56
  107. package/docs/helpers/print.md +187 -187
  108. package/docs/helpers/print_type.md +225 -225
  109. package/docs/helpers/settype.md +78 -78
  110. package/docs/helpers/to_array.md +106 -106
  111. package/docs/helpers/to_assoc.md +91 -91
  112. package/docs/helpers/to_bool.md +76 -76
  113. package/docs/helpers/to_boolean.md +77 -77
  114. package/docs/helpers/to_float.md +70 -70
  115. package/docs/helpers/to_int.md +87 -87
  116. package/docs/helpers/to_integer.md +87 -87
  117. package/docs/helpers/to_list.md +47 -47
  118. package/docs/helpers/to_object.md +76 -76
  119. package/docs/helpers/to_string.md +134 -134
  120. package/docs/helpers/value.md +95 -0
  121. package/docs/helpers.md +53 -51
  122. package/docs/types/NaN.md +30 -30
  123. package/docs/types/array.md +252 -252
  124. package/docs/types/bigint.md +34 -34
  125. package/docs/types/boolean.md +47 -47
  126. package/docs/types/class.md +36 -36
  127. package/docs/types/float.md +35 -35
  128. package/docs/types/function.md +121 -121
  129. package/docs/types/infinity.md +32 -32
  130. package/docs/types/integer.md +35 -35
  131. package/docs/types/null.md +23 -23
  132. package/docs/types/object.md +62 -62
  133. package/docs/types/string.md +33 -33
  134. package/docs/types/symbol.md +29 -29
  135. package/docs/types/undefined.md +25 -25
  136. package/docs/types.md +44 -44
  137. package/eslint.config.mjs +1664 -1664
  138. package/index.mjs +43 -37
  139. package/jest.config.mjs +31 -31
  140. package/package.json +48 -47
  141. package/prettier.config.mjs +224 -224
  142. package/src/classes/Convert.mjs +818 -0
  143. package/src/classes/Type.mjs +1284 -0
  144. package/src/classes/Value.mjs +2846 -0
  145. package/src/constants.mjs +14 -0
  146. package/src/helpers/gettype.mjs +30 -14
  147. package/src/helpers/value.mjs +92 -0
  148. package/tests/classes/Convert.test.mjs +398 -0
  149. package/tests/classes/Type.test.mjs +1262 -0
  150. package/tests/classes/Value.test.mjs +423 -0
  151. package/tests/constants.test.mjs +75 -0
  152. package/tests/helpers/value.test.mjs +68 -0
@@ -0,0 +1,423 @@
1
+ import { expect, test, describe, jest } from '@jest/globals';
2
+ import { Value } from '../../index.mjs';
3
+
4
+ describe('Класс Value', () => {
5
+ describe('Метод get', () => {
6
+ test('должен возвращать значение', () => {
7
+ const value = new Value('test');
8
+ expect(value.get()).toBe('test');
9
+ });
10
+ });
11
+
12
+ describe('Метод getType', () => {
13
+ test('должен возвращать тип значения', () => {
14
+ const value = new Value('test');
15
+ expect(value.getType()).toBe('string');
16
+ });
17
+ });
18
+
19
+ describe('Метод isEmpty', () => {
20
+ test('должен возвращать логическое значение', () => {
21
+ const value = new Value('test');
22
+ expect(value.isEmpty()).toBe(false);
23
+ });
24
+
25
+ test('должен возвращать true для пустых значений', () => {
26
+ const value1 = new Value(null);
27
+ const value2 = new Value(undefined);
28
+ const value3 = new Value('');
29
+ const value4 = new Value(0);
30
+ const value5 = new Value(false);
31
+ const value6 = new Value([]);
32
+ const value7 = new Value({});
33
+
34
+ expect(value1.isEmpty()).toBe(true);
35
+ expect(value2.isEmpty()).toBe(true);
36
+ expect(value3.isEmpty()).toBe(true);
37
+ expect(value4.isEmpty()).toBe(true);
38
+ expect(value5.isEmpty()).toBe(true);
39
+ expect(value6.isEmpty()).toBe(true);
40
+ expect(value7.isEmpty()).toBe(true);
41
+ });
42
+ });
43
+
44
+ describe('Метод print', () => {
45
+ test('должен распечатывать значение в консоль и возвращать текущий экземпляр класса Value', () => {
46
+ const logSpy = jest.spyOn(console, 'log');
47
+ const value = new Value('test');
48
+
49
+ expect(value.print()).toBe(value);
50
+ expect(logSpy).toHaveBeenCalledWith('"test"');
51
+ });
52
+ });
53
+
54
+ describe('Метод toPrint', () => {
55
+ test('должен возвращать распечатанное значение в виде экземпляра Value', () => {
56
+ const value = new Value('test');
57
+ const result = value.toPrint();
58
+
59
+ expect(result).toBeInstanceOf(Value);
60
+ expect(result.get()).toBe('"test"');
61
+ });
62
+ });
63
+
64
+ describe('Метод printType', () => {
65
+ test('должен распечатывать значение в консоль и возвращать текущий экземпляр класса Value', () => {
66
+ const logSpy = jest.spyOn(console, 'log');
67
+ const value = new Value('test');
68
+
69
+ expect(value.printType()).toBe(value);
70
+ expect(logSpy).toHaveBeenCalledWith('string(4) "test"');
71
+ });
72
+ });
73
+
74
+ describe('Метод toPrintType', () => {
75
+ test('должен возвращать распечатанное значение в виде экземпляра Value', () => {
76
+ const value = new Value('test');
77
+ const result = value.toPrintType();
78
+
79
+ expect(result).toBeInstanceOf(Value);
80
+ expect(result.get()).toBe('string(4) "test"');
81
+ });
82
+ });
83
+
84
+ describe('Метод isArray', () => {
85
+ test('должен проверять, является ли значение массивом', () => {
86
+ const value1 = new Value([1, 2, 3]);
87
+ const value2 = new Value({ foo: 'bar' });
88
+
89
+ expect(value1.isArray()).toBe(true);
90
+ expect(value2.isArray()).toBe(true);
91
+ });
92
+ });
93
+
94
+ describe('Метод isAssoc', () => {
95
+ test('должен проверять, является ли значение ассоциативным массивом', () => {
96
+ const value1 = new Value({ foo: 'bar' });
97
+ const value2 = new Value([1, 2, 3]);
98
+
99
+ expect(value1.isAssoc()).toBe(true);
100
+ expect(value2.isAssoc()).toBe(false);
101
+ });
102
+ });
103
+
104
+ describe('Метод isBigInt', () => {
105
+ test('должен проверять, является ли значение типом bigint', () => {
106
+ const value1 = new Value(BigInt(123456));
107
+ const value2 = new Value(123456);
108
+
109
+ expect(value1.isBigInt()).toBe(true);
110
+ expect(value2.isBigInt()).toBe(false);
111
+ });
112
+ });
113
+
114
+ describe('Метод isBool', () => {
115
+ test('должен проверять, является ли значение логическим типом', () => {
116
+ const value1 = new Value(true);
117
+ const value2 = new Value('true');
118
+
119
+ expect(value1.isBool()).toBe(true);
120
+ expect(value2.isBool()).toBe(false);
121
+ });
122
+ });
123
+
124
+ describe('Метод isBoolean', () => {
125
+ test('должен проверять, является ли значение логическим типом', () => {
126
+ const value1 = new Value(true);
127
+ const value2 = new Value('true');
128
+
129
+ expect(value1.isBoolean()).toBe(true);
130
+ expect(value2.isBoolean()).toBe(false);
131
+ });
132
+ });
133
+
134
+ describe('Метод isClass', () => {
135
+ test('должен проверять, является ли значение классом', () => {
136
+ class MyClass {}
137
+ function MyFunction() {}
138
+
139
+ const value1 = new Value(MyClass);
140
+ const value2 = new Value(MyFunction);
141
+
142
+ expect(value1.isClass()).toBe(true);
143
+ expect(value2.isClass()).toBe(false);
144
+ });
145
+ });
146
+
147
+ describe('Метод isFloat', () => {
148
+ test('должен проверять, является ли значение числом с плавающей точкой', () => {
149
+ const value1 = new Value(3.14);
150
+ const value2 = new Value(42);
151
+
152
+ expect(value1.isFloat()).toBe(true);
153
+ expect(value2.isFloat()).toBe(false);
154
+ });
155
+ });
156
+
157
+ describe('Метод isFunction', () => {
158
+ test('должен проверять, является ли значение функцией', () => {
159
+ function MyFunction() {}
160
+ class MyClass {}
161
+
162
+ const value1 = new Value(MyFunction);
163
+ const value2 = new Value(MyClass);
164
+
165
+ expect(value1.isFunction()).toBe(true);
166
+ expect(value2.isFunction()).toBe(false);
167
+ });
168
+ });
169
+
170
+ describe('Метод isInfinity', () => {
171
+ test('должен проверять, является ли значение бесконечностью', () => {
172
+ const value1 = new Value(Infinity);
173
+ const value2 = new Value(42);
174
+
175
+ expect(value1.isInfinity()).toBe(true);
176
+ expect(value2.isInfinity()).toBe(false);
177
+ });
178
+ });
179
+
180
+ describe('Метод isInt', () => {
181
+ test('должен проверять, является ли значение целым числом', () => {
182
+ const value1 = new Value(42);
183
+ const value2 = new Value(3.14);
184
+
185
+ expect(value1.isInt()).toBe(true);
186
+ expect(value2.isInt()).toBe(false);
187
+ });
188
+ });
189
+
190
+ describe('Метод isInteger', () => {
191
+ test('должен проверять, является ли значение целым числом', () => {
192
+ const value1 = new Value(42);
193
+ const value2 = new Value(3.14);
194
+
195
+ expect(value1.isInteger()).toBe(true);
196
+ expect(value2.isInteger()).toBe(false);
197
+ });
198
+ });
199
+
200
+ describe('Метод isList', () => {
201
+ test('должен проверять, является ли значение списком', () => {
202
+ const value1 = new Value([1, 2, 3]);
203
+ const value2 = new Value({ foo: 'bar' });
204
+
205
+ expect(value1.isList()).toBe(true);
206
+ expect(value2.isList()).toBe(false);
207
+ });
208
+ });
209
+
210
+ describe('Метод isNaN', () => {
211
+ test('должен проверять, является ли значение NaN', () => {
212
+ const value1 = new Value(NaN);
213
+ const value2 = new Value(42);
214
+
215
+ expect(value1.isNaN()).toBe(true);
216
+ expect(value2.isNaN()).toBe(false);
217
+ });
218
+ });
219
+
220
+ describe('Метод isNull', () => {
221
+ test('должен проверять, является ли значение null', () => {
222
+ const value1 = new Value(null);
223
+ const value2 = new Value(undefined);
224
+
225
+ expect(value1.isNull()).toBe(true);
226
+ expect(value2.isNull()).toBe(false);
227
+ });
228
+ });
229
+
230
+ describe('Метод isNumber', () => {
231
+ test('должен проверять, является ли значение числом', () => {
232
+ const value1 = new Value(42);
233
+ const value2 = new Value('42');
234
+
235
+ expect(value1.isNumber()).toBe(true);
236
+ expect(value2.isNumber()).toBe(false);
237
+ });
238
+ });
239
+
240
+ describe('Метод isNumeric', () => {
241
+ test('должен проверять, является ли значение числом или числовой строкой', () => {
242
+ const value1 = new Value(42);
243
+ const value2 = new Value('42');
244
+ const value3 = new Value('hello');
245
+
246
+ expect(value1.isNumeric()).toBe(true);
247
+ expect(value2.isNumeric()).toBe(true);
248
+ expect(value3.isNumeric()).toBe(false);
249
+ });
250
+ });
251
+
252
+ describe('Метод isObject', () => {
253
+ test('должен проверять, является ли значение объектом', () => {
254
+ const value1 = new Value(new (class {})());
255
+ const value2 = new Value(42);
256
+
257
+ expect(value1.isObject()).toBe(true);
258
+ expect(value2.isObject()).toBe(false);
259
+ });
260
+ });
261
+
262
+ describe('Метод isScalar', () => {
263
+ test('должен проверять, является ли значение скалярным', () => {
264
+ const value1 = new Value(42);
265
+ const value2 = new Value({});
266
+ const value3 = new Value('hello');
267
+
268
+ expect(value1.isScalar()).toBe(true);
269
+ expect(value2.isScalar()).toBe(false);
270
+ expect(value3.isScalar()).toBe(true);
271
+ });
272
+ });
273
+
274
+ describe('Метод isString', () => {
275
+ test('должен проверять, является ли значение строкой', () => {
276
+ const value1 = new Value('hello');
277
+ const value2 = new Value(42);
278
+
279
+ expect(value1.isString()).toBe(true);
280
+ expect(value2.isString()).toBe(false);
281
+ });
282
+ });
283
+
284
+ describe('Метод isSymbol', () => {
285
+ test('должен проверять, является ли значение символом', () => {
286
+ const value1 = new Value(Symbol('symbol'));
287
+ const value2 = new Value('symbol');
288
+
289
+ expect(value1.isSymbol()).toBe(true);
290
+ expect(value2.isSymbol()).toBe(false);
291
+ });
292
+ });
293
+
294
+ describe('Метод isUndefined', () => {
295
+ test('должен проверять, является ли значение undefined', () => {
296
+ const value1 = new Value(undefined);
297
+ const value2 = new Value(null);
298
+
299
+ expect(value1.isUndefined()).toBe(true);
300
+ expect(value2.isUndefined()).toBe(false);
301
+ });
302
+ });
303
+
304
+ describe('Метод toArray', () => {
305
+ test('должен преобразовывать значение в массив', () => {
306
+ const value1 = new Value('test');
307
+ const value2 = new Value(123);
308
+ const value3 = new Value({ key: 'value' });
309
+
310
+ expect(value1.toArray().get()).toEqual(['test']);
311
+ expect(value2.toArray().get()).toEqual([123]);
312
+ expect(value3.toArray().get()).toEqual({ key: 'value' });
313
+ });
314
+ });
315
+
316
+ describe('Метод toAssoc', () => {
317
+ test('должен преобразовывать значение в ассоциативный массив', () => {
318
+ const value1 = new Value('test');
319
+ const value2 = new Value(123);
320
+ const value3 = new Value([1, 2, 3]);
321
+
322
+ expect(value1.toAssoc().get()).toEqual({ 0: 'test' });
323
+ expect(value2.toAssoc().get()).toEqual({ 0: 123 });
324
+ expect(value3.toAssoc().get()).toEqual({ 0: 1, 1: 2, 2: 3 });
325
+ });
326
+ });
327
+
328
+ describe('Метод toBool', () => {
329
+ test('должен преобразовывать значение в логическое значение', () => {
330
+ const value1 = new Value('test');
331
+ const value2 = new Value(0);
332
+ const value3 = new Value(null);
333
+
334
+ expect(value1.toBool().get()).toBe(true);
335
+ expect(value2.toBool().get()).toBe(false);
336
+ expect(value3.toBool().get()).toBe(false);
337
+ });
338
+ });
339
+
340
+ describe('Метод toBoolean', () => {
341
+ test('должен преобразовывать значение в логическое значение', () => {
342
+ const value1 = new Value('test');
343
+ const value2 = new Value(0);
344
+ const value3 = new Value(null);
345
+
346
+ expect(value1.toBoolean().get()).toBe(true);
347
+ expect(value2.toBoolean().get()).toBe(false);
348
+ expect(value3.toBoolean().get()).toBe(false);
349
+ });
350
+ });
351
+
352
+ describe('Метод toFloat', () => {
353
+ test('должен преобразовывать значение в число с плавающей точкой', () => {
354
+ const value1 = new Value('123.45');
355
+ const value2 = new Value(123);
356
+ const value3 = new Value('test');
357
+
358
+ expect(value1.toFloat().get()).toBe(123.45);
359
+ expect(value2.toFloat().get()).toBe(123.0);
360
+ expect(value3.toFloat().get()).toBe(0.0);
361
+ });
362
+ });
363
+
364
+ describe('Метод toInt', () => {
365
+ test('должен преобразовывать значение в целое число', () => {
366
+ const value1 = new Value('123');
367
+ const value2 = new Value(123.45);
368
+ const value3 = new Value('test');
369
+
370
+ expect(value1.toInt().get()).toBe(123);
371
+ expect(value2.toInt().get()).toBe(123);
372
+ expect(value3.toInt().get()).toBe(0);
373
+ });
374
+ });
375
+
376
+ describe('Метод toInteger', () => {
377
+ test('должен преобразовывать значение в целое число', () => {
378
+ const value1 = new Value('123');
379
+ const value2 = new Value(123.45);
380
+ const value3 = new Value('test');
381
+
382
+ expect(value1.toInteger().get()).toBe(123);
383
+ expect(value2.toInteger().get()).toBe(123);
384
+ expect(value3.toInteger().get()).toBe(0);
385
+ });
386
+ });
387
+
388
+ describe('Метод toList', () => {
389
+ test('должен преобразовывать значение в список', () => {
390
+ const value1 = new Value('test');
391
+ const value2 = new Value(123);
392
+ const value3 = new Value({ key: 'value' });
393
+
394
+ expect(value1.toList().get()).toEqual(['test']);
395
+ expect(value2.toList().get()).toEqual([123]);
396
+ expect(value3.toList().get()).toEqual(['value']);
397
+ });
398
+ });
399
+
400
+ describe('Метод toObject', () => {
401
+ test('должен преобразовывать значение в объект', () => {
402
+ const value1 = new Value('test');
403
+ const value2 = new Value(123);
404
+ const value3 = new Value([1, 2, 3]);
405
+
406
+ expect(value1.toObject().get()).toEqual({ value: 'test' });
407
+ expect(value2.toObject().get()).toEqual({ value: 123 });
408
+ expect(value3.toObject().get()).toEqual({ 0: 1, 1: 2, 2: 3 });
409
+ });
410
+ });
411
+
412
+ describe('Метод toString', () => {
413
+ test('должен преобразовывать значение в строку', () => {
414
+ const value1 = new Value(123);
415
+ const value2 = new Value(true);
416
+ const value3 = new Value({ key: 'value' });
417
+
418
+ expect(value1.toString().get()).toBe('123');
419
+ expect(value2.toString().get()).toBe('true');
420
+ expect(value3.toString().get()).toBe("{\n key: 'value',\n}");
421
+ });
422
+ });
423
+ });
@@ -0,0 +1,75 @@
1
+ import { describe, test, expect } from '@jest/globals';
2
+ import {
3
+ TYPE_ARRAY,
4
+ TYPE_BIGINT,
5
+ TYPE_BOOLEAN,
6
+ TYPE_CLASS,
7
+ TYPE_FLOAT,
8
+ TYPE_FUNCTION,
9
+ TYPE_INFINITY,
10
+ TYPE_INTEGER,
11
+ TYPE_NAN,
12
+ TYPE_NULL,
13
+ TYPE_OBJECT,
14
+ TYPE_STRING,
15
+ TYPE_SYMBOL,
16
+ TYPE_UNDEFINED,
17
+ } from '../index.mjs';
18
+
19
+ describe('Константы', () => {
20
+ test('TYPE_NULL должно быть "null"', () => {
21
+ expect(TYPE_NULL).toBe('null');
22
+ });
23
+
24
+ test('TYPE_NAN должно быть "NaN"', () => {
25
+ expect(TYPE_NAN).toBe('NaN');
26
+ });
27
+
28
+ test('TYPE_UNDEFINED должно быть "undefined"', () => {
29
+ expect(TYPE_UNDEFINED).toBe('undefined');
30
+ });
31
+
32
+ test('TYPE_INFINITY должно быть "infinity"', () => {
33
+ expect(TYPE_INFINITY).toBe('infinity');
34
+ });
35
+
36
+ test('TYPE_BOOLEAN должно быть "boolean"', () => {
37
+ expect(TYPE_BOOLEAN).toBe('boolean');
38
+ });
39
+
40
+ test('TYPE_INTEGER должно быть "integer"', () => {
41
+ expect(TYPE_INTEGER).toBe('integer');
42
+ });
43
+
44
+ test('TYPE_BIGINT должно быть "bigint"', () => {
45
+ expect(TYPE_BIGINT).toBe('bigint');
46
+ });
47
+
48
+ test('TYPE_FLOAT должно быть "float"', () => {
49
+ expect(TYPE_FLOAT).toBe('float');
50
+ });
51
+
52
+ test('TYPE_STRING должно быть "string"', () => {
53
+ expect(TYPE_STRING).toBe('string');
54
+ });
55
+
56
+ test('TYPE_SYMBOL должно быть "symbol"', () => {
57
+ expect(TYPE_SYMBOL).toBe('symbol');
58
+ });
59
+
60
+ test('TYPE_CLASS должно быть "class"', () => {
61
+ expect(TYPE_CLASS).toBe('class');
62
+ });
63
+
64
+ test('TYPE_FUNCTION должно быть "function"', () => {
65
+ expect(TYPE_FUNCTION).toBe('function');
66
+ });
67
+
68
+ test('TYPE_ARRAY должно быть "array"', () => {
69
+ expect(TYPE_ARRAY).toBe('array');
70
+ });
71
+
72
+ test('TYPE_OBJECT должно быть "object"', () => {
73
+ expect(TYPE_OBJECT).toBe('object');
74
+ });
75
+ });
@@ -0,0 +1,68 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Value, value } from '../../index.mjs';
3
+
4
+ describe('Функция value', () => {
5
+ test('Должна создавать экземпляр класса Value с числом', () => {
6
+ const val = 123;
7
+ const result = value(val);
8
+ expect(result).toBeInstanceOf(Value);
9
+ expect(result.get()).toBe(val);
10
+ expect(result.getType()).toBe('integer');
11
+ expect(result.isNumber()).toBe(true);
12
+ });
13
+
14
+ test('Должна создавать экземпляр класса Value со строкой', () => {
15
+ const val = 'example';
16
+ const result = value(val);
17
+ expect(result).toBeInstanceOf(Value);
18
+ expect(result.get()).toBe(val);
19
+ expect(result.getType()).toBe('string');
20
+ expect(result.isString()).toBe(true);
21
+ });
22
+
23
+ test('Должна создавать экземпляр класса Value с ассоциативным массивом', () => {
24
+ const val = { key: 'value' };
25
+ const result = value(val);
26
+ expect(result).toBeInstanceOf(Value);
27
+ expect(result.get()).toEqual(val);
28
+ expect(result.getType()).toBe('array');
29
+ expect(result.isAssoc()).toBe(true);
30
+ });
31
+
32
+ test('Должна создавать экземпляр класса Value с массивом', () => {
33
+ const val = [1, 2, 3];
34
+ const result = value(val);
35
+ expect(result).toBeInstanceOf(Value);
36
+ expect(result.get()).toEqual(val);
37
+ expect(result.getType()).toBe('array');
38
+ expect(result.isArray()).toBe(true);
39
+ });
40
+
41
+ test('Должна создавать экземпляр класса Value с булевым значением', () => {
42
+ const val = true;
43
+ const result = value(val);
44
+ expect(result).toBeInstanceOf(Value);
45
+ expect(result.get()).toBe(val);
46
+ expect(result.getType()).toBe('boolean');
47
+ expect(result.isBool()).toBe(true);
48
+ });
49
+
50
+ test('Должна создавать экземпляр класса Value с null', () => {
51
+ const val = null;
52
+ const result = value(val);
53
+ expect(result).toBeInstanceOf(Value);
54
+ expect(result.get()).toBe(val);
55
+ expect(result.getType()).toBe('null');
56
+ expect(result.isNull()).toBe(true);
57
+ });
58
+
59
+ test('Должна создавать экземпляр класса Value с undefined', () => {
60
+ const val = undefined;
61
+ const result = value(val);
62
+ expect(result).toBeInstanceOf(Value);
63
+ expect(result.get()).toBe(val);
64
+ expect(result.getType()).toBe('undefined');
65
+ expect(result.isUndefined()).toBe(true);
66
+ });
67
+ });
68
+