@rogolev/value 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. package/.prettierignore +4 -0
  2. package/CHANGELOG.md +56 -0
  3. package/LICENSE +41 -0
  4. package/README.md +91 -0
  5. package/babel.config.json +20 -0
  6. package/docs/helpers/array.md +80 -0
  7. package/docs/helpers/empty.md +77 -0
  8. package/docs/helpers/gettype.md +69 -0
  9. package/docs/helpers/is_array.md +105 -0
  10. package/docs/helpers/is_assoc.md +59 -0
  11. package/docs/helpers/is_bigint.md +57 -0
  12. package/docs/helpers/is_bool.md +50 -0
  13. package/docs/helpers/is_boolean.md +50 -0
  14. package/docs/helpers/is_class.md +73 -0
  15. package/docs/helpers/is_float.md +71 -0
  16. package/docs/helpers/is_function.md +62 -0
  17. package/docs/helpers/is_infinity.md +61 -0
  18. package/docs/helpers/is_int.md +81 -0
  19. package/docs/helpers/is_integer.md +82 -0
  20. package/docs/helpers/is_list.md +51 -0
  21. package/docs/helpers/is_nan.md +59 -0
  22. package/docs/helpers/is_null.md +49 -0
  23. package/docs/helpers/is_number.md +67 -0
  24. package/docs/helpers/is_numeric.md +76 -0
  25. package/docs/helpers/is_object.md +69 -0
  26. package/docs/helpers/is_scalar.md +60 -0
  27. package/docs/helpers/is_string.md +58 -0
  28. package/docs/helpers/is_symbol.md +58 -0
  29. package/docs/helpers/is_undefined.md +56 -0
  30. package/docs/helpers/print.md +187 -0
  31. package/docs/helpers/print_type.md +225 -0
  32. package/docs/helpers/settype.md +78 -0
  33. package/docs/helpers/to_array.md +106 -0
  34. package/docs/helpers/to_assoc.md +91 -0
  35. package/docs/helpers/to_bool.md +76 -0
  36. package/docs/helpers/to_boolean.md +77 -0
  37. package/docs/helpers/to_float.md +70 -0
  38. package/docs/helpers/to_int.md +87 -0
  39. package/docs/helpers/to_integer.md +87 -0
  40. package/docs/helpers/to_list.md +47 -0
  41. package/docs/helpers/to_object.md +76 -0
  42. package/docs/helpers/to_string.md +134 -0
  43. package/docs/helpers.md +51 -0
  44. package/docs/types/NaN.md +30 -0
  45. package/docs/types/array.md +252 -0
  46. package/docs/types/bigint.md +34 -0
  47. package/docs/types/boolean.md +47 -0
  48. package/docs/types/class.md +36 -0
  49. package/docs/types/float.md +35 -0
  50. package/docs/types/function.md +121 -0
  51. package/docs/types/infinity.md +32 -0
  52. package/docs/types/integer.md +35 -0
  53. package/docs/types/null.md +23 -0
  54. package/docs/types/object.md +62 -0
  55. package/docs/types/string.md +33 -0
  56. package/docs/types/symbol.md +29 -0
  57. package/docs/types/undefined.md +25 -0
  58. package/docs/types.md +44 -0
  59. package/eslint.config.mjs +1664 -0
  60. package/index.mjs +37 -0
  61. package/jest.config.mjs +31 -0
  62. package/package.json +47 -0
  63. package/prettier.config.mjs +224 -0
  64. package/src/helpers/array.mjs +107 -0
  65. package/src/helpers/empty.mjs +70 -0
  66. package/src/helpers/gettype.mjs +133 -0
  67. package/src/helpers/is_array.mjs +128 -0
  68. package/src/helpers/is_assoc.mjs +51 -0
  69. package/src/helpers/is_bigint.mjs +47 -0
  70. package/src/helpers/is_bool.mjs +43 -0
  71. package/src/helpers/is_boolean.mjs +43 -0
  72. package/src/helpers/is_class.mjs +87 -0
  73. package/src/helpers/is_float.mjs +67 -0
  74. package/src/helpers/is_function.mjs +74 -0
  75. package/src/helpers/is_infinity.mjs +52 -0
  76. package/src/helpers/is_int.mjs +57 -0
  77. package/src/helpers/is_integer.mjs +74 -0
  78. package/src/helpers/is_list.mjs +43 -0
  79. package/src/helpers/is_nan.mjs +51 -0
  80. package/src/helpers/is_null.mjs +37 -0
  81. package/src/helpers/is_number.mjs +49 -0
  82. package/src/helpers/is_numeric.mjs +64 -0
  83. package/src/helpers/is_object.mjs +72 -0
  84. package/src/helpers/is_scalar.mjs +45 -0
  85. package/src/helpers/is_string.mjs +46 -0
  86. package/src/helpers/is_symbol.mjs +46 -0
  87. package/src/helpers/is_undefined.mjs +44 -0
  88. package/src/helpers/print.mjs +245 -0
  89. package/src/helpers/print_type.mjs +261 -0
  90. package/src/helpers/settype.mjs +101 -0
  91. package/src/helpers/to_array.mjs +118 -0
  92. package/src/helpers/to_assoc.mjs +98 -0
  93. package/src/helpers/to_bool.mjs +68 -0
  94. package/src/helpers/to_boolean.mjs +64 -0
  95. package/src/helpers/to_float.mjs +72 -0
  96. package/src/helpers/to_int.mjs +93 -0
  97. package/src/helpers/to_integer.mjs +81 -0
  98. package/src/helpers/to_list.mjs +56 -0
  99. package/src/helpers/to_object.mjs +94 -0
  100. package/src/helpers/to_string.mjs +157 -0
  101. package/tests/helpers/array.test.mjs +58 -0
  102. package/tests/helpers/empty.test.mjs +22 -0
  103. package/tests/helpers/gettype.test.mjs +74 -0
  104. package/tests/helpers/is_array.test.mjs +404 -0
  105. package/tests/helpers/is_assoc.test.mjs +42 -0
  106. package/tests/helpers/is_bigint.test.mjs +51 -0
  107. package/tests/helpers/is_bool.test.mjs +43 -0
  108. package/tests/helpers/is_boolean.test.mjs +43 -0
  109. package/tests/helpers/is_class.test.mjs +84 -0
  110. package/tests/helpers/is_float.test.mjs +87 -0
  111. package/tests/helpers/is_function.test.mjs +83 -0
  112. package/tests/helpers/is_infinity.test.mjs +46 -0
  113. package/tests/helpers/is_int.test.mjs +45 -0
  114. package/tests/helpers/is_integer.test.mjs +64 -0
  115. package/tests/helpers/is_list.test.mjs +42 -0
  116. package/tests/helpers/is_nan.test.mjs +43 -0
  117. package/tests/helpers/is_null.test.mjs +17 -0
  118. package/tests/helpers/is_number.test.mjs +25 -0
  119. package/tests/helpers/is_numeric.test.mjs +30 -0
  120. package/tests/helpers/is_object.test.mjs +52 -0
  121. package/tests/helpers/is_scalar.test.mjs +21 -0
  122. package/tests/helpers/is_string.test.mjs +20 -0
  123. package/tests/helpers/is_symbol.test.mjs +20 -0
  124. package/tests/helpers/is_undefined.test.mjs +18 -0
  125. package/tests/helpers/print.test.mjs +62 -0
  126. package/tests/helpers/print_type.test.mjs +62 -0
  127. package/tests/helpers/settype.test.mjs +34 -0
  128. package/tests/helpers/to_array.test.mjs +38 -0
  129. package/tests/helpers/to_assoc.test.mjs +33 -0
  130. package/tests/helpers/to_bool.test.mjs +51 -0
  131. package/tests/helpers/to_boolean.test.mjs +51 -0
  132. package/tests/helpers/to_float.test.mjs +26 -0
  133. package/tests/helpers/to_int.test.mjs +48 -0
  134. package/tests/helpers/to_integer.test.mjs +48 -0
  135. package/tests/helpers/to_list.test.mjs +32 -0
  136. package/tests/helpers/to_object.test.mjs +36 -0
  137. package/tests/helpers/to_string.test.mjs +71 -0
@@ -0,0 +1,62 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { print } from '../../index.mjs';
3
+
4
+ describe('Функция print', () => {
5
+ test('Должна возвращать строку для строки', () => {
6
+ expect(print('example', true)).toBe('"example"');
7
+ });
8
+
9
+ test('Должна возвращать строку для числа', () => {
10
+ expect(print(123, true)).toBe('123');
11
+ expect(print(123.45, true)).toBe('123.45');
12
+ });
13
+
14
+ test('Должна возвращать строку для булевых значений', () => {
15
+ expect(print(true, true)).toBe('true');
16
+ expect(print(false, true)).toBe('false');
17
+ });
18
+
19
+ test('Должна возвращать строку для null и undefined', () => {
20
+ expect(print(null, true)).toBe('null');
21
+ expect(print(undefined, true)).toBe('undefined');
22
+ });
23
+
24
+ test('Должна возвращать строку для массивов', () => {
25
+ const arr = [1, [2], 3];
26
+ expect(print(arr, true)).toBe(
27
+ '[\n 0: 1,\n 1: [\n 0: 2,\n ],\n 2: 3,\n]',
28
+ );
29
+ });
30
+
31
+ test('Должна возвращать строку для ассоциативных массивов', () => {
32
+ const obj = { key: 'value' };
33
+ expect(print(obj, true)).toBe('{\n key: "value",\n}');
34
+ });
35
+
36
+ test('Должна возвращать строку для функций', () => {
37
+ const func = function () {};
38
+ expect(print(func, true)).toBe('function func() {}');
39
+ });
40
+
41
+ test('Должна возвращать строку для символов', () => {
42
+ const symbol = Symbol('example');
43
+ expect(print(symbol, true)).toBe('Symbol(example)');
44
+ });
45
+
46
+ test('Должна возвращать строку для классов', () => {
47
+ class MyClass {
48
+ static test = 'test';
49
+ }
50
+ expect(print(MyClass, true)).toBe('class MyClass {\n test = "test";\n}');
51
+ });
52
+
53
+ test('Должна возвращать строку для экземпляров классов', () => {
54
+ class MyClass {}
55
+ const instance = new MyClass();
56
+ expect(print(instance, true)).toBe('object MyClass {}');
57
+ });
58
+
59
+ test('Должна выбрасывать исключение для неверного значения параметра return_result', () => {
60
+ expect(() => print('example', 'invalid')).toThrow(TypeError);
61
+ });
62
+ });
@@ -0,0 +1,62 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { print_type } from '../../index.mjs';
3
+
4
+ describe('Функция print_type', () => {
5
+ test('Должна возвращать строку для строки', () => {
6
+ expect(print_type('example', true)).toBe('string(7) "example"');
7
+ });
8
+
9
+ test('Должна возвращать строку для числа', () => {
10
+ expect(print_type(123, true)).toBe('int(123)');
11
+ expect(print_type(123.45, true)).toBe('float(123.45)');
12
+ });
13
+
14
+ test('Должна возвращать строку для булевых значений', () => {
15
+ expect(print_type(true, true)).toBe('bool(true)');
16
+ expect(print_type(false, true)).toBe('bool(false)');
17
+ });
18
+
19
+ test('Должна возвращать строку для null и undefined', () => {
20
+ expect(print_type(null, true)).toBe('null');
21
+ expect(print_type(undefined, true)).toBe('undefined');
22
+ });
23
+
24
+ test('Должна возвращать строку для массивов', () => {
25
+ const arr = [1, [2], 3];
26
+ expect(print_type(arr, true)).toBe(
27
+ 'array(3) [\n 0: int(1),\n 1: array(1) [\n 0: int(2),\n ],\n 2: int(3),\n]',
28
+ );
29
+ });
30
+
31
+ test('Должна возвращать строку для ассоциативных массивов', () => {
32
+ const obj = { key: 'value' };
33
+ expect(print_type(obj, true)).toBe('array(1) {\n key: string(5) "value",\n}');
34
+ });
35
+
36
+ test('Должна возвращать строку для функций', () => {
37
+ const func = function () {};
38
+ expect(print_type(func, true)).toBe('function func() {}');
39
+ });
40
+
41
+ test('Должна возвращать строку для символов', () => {
42
+ const symbol = Symbol('example');
43
+ expect(print_type(symbol, true)).toBe('Symbol(example)');
44
+ });
45
+
46
+ test('Должна возвращать строку для классов', () => {
47
+ class MyClass {
48
+ static test = 'test';
49
+ }
50
+ expect(print_type(MyClass, true)).toBe('class MyClass {\n test = string(4) "test";\n}');
51
+ });
52
+
53
+ test('Должна возвращать строку для экземпляров классов', () => {
54
+ class MyClass {
55
+ test = 'test';
56
+ }
57
+ const instance = new MyClass();
58
+ expect(print_type(instance, true)).toBe(
59
+ 'object(MyClass) (1) {\n test = string(4) "test";\n}',
60
+ );
61
+ });
62
+ });
@@ -0,0 +1,34 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { settype } from '../../index.mjs';
3
+
4
+ describe('Функция settype', () => {
5
+ test('Должна возвращать булевое значение', () => {
6
+ expect(settype('string', 'boolean')).toBe(true);
7
+ expect(settype('', 'boolean')).toBe(false);
8
+ });
9
+
10
+ test('Должна возвращать целое число', () => {
11
+ expect(settype('123', 'integer')).toBe(123);
12
+ expect(settype('123', 'int')).toBe(123);
13
+ });
14
+
15
+ test('Должна возвращать число с плавающей точкой', () => {
16
+ expect(settype('123.45', 'float')).toBe(123.45);
17
+ });
18
+
19
+ test('Должна возвращать строку', () => {
20
+ expect(settype(123, 'string')).toBe('123');
21
+ });
22
+
23
+ test('Должна возвращать массив', () => {
24
+ expect(settype('example', 'array')).toEqual(['example']);
25
+ });
26
+
27
+ test('Должна возвращать объект', () => {
28
+ expect(settype('example', 'object')).toEqual({ value: 'example' });
29
+ });
30
+
31
+ test('Должна возвращать исходное значение для неизвестного типа', () => {
32
+ expect(settype('example', 'unknown')).toBe('example');
33
+ });
34
+ });
@@ -0,0 +1,38 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { to_array } from '../../index.mjs';
3
+
4
+ describe('Функция to_array', () => {
5
+ test('Должна возвращать пустой массив для null и undefined', () => {
6
+ expect(to_array(null)).toEqual([]);
7
+ expect(to_array(undefined)).toEqual([]);
8
+ });
9
+
10
+ test('Должна возвращать исходный массив, если он передан', () => {
11
+ const input = [1, 2, 3];
12
+ expect(to_array(input)).toBe(input);
13
+ });
14
+
15
+ test('Должна возвращать ассоциативный массив без прототипа и с итератором Symbol.iterator при передаче объекта', () => {
16
+ const result = to_array({ key: 'value' });
17
+
18
+ expect(Object.getPrototypeOf(result)).toBeNull();
19
+
20
+ for (const entry of result) {
21
+ expect(entry).toEqual(['key', 'value']);
22
+ }
23
+ });
24
+
25
+ test('Должна возвращать массив с примитивными значениями', () => {
26
+ expect(to_array(true)).toEqual([true]);
27
+ expect(to_array(false)).toEqual([false]);
28
+ expect(to_array('example')).toEqual(['example']);
29
+ expect(to_array(123)).toEqual([123]);
30
+ });
31
+
32
+ test('Должна оборачивать экземпляр класса в массив', () => {
33
+ class MyClass {}
34
+
35
+ const instance = new MyClass();
36
+ expect(to_array(instance)).toEqual([instance]);
37
+ });
38
+ });
@@ -0,0 +1,33 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { to_assoc } from '../../index.mjs';
3
+
4
+ describe('Функция to_assoc', () => {
5
+ test('Должна возвращать пустой ассоциативный массив для null и undefined', () => {
6
+ expect(to_assoc(null)).toEqual({});
7
+ expect(to_assoc(undefined)).toEqual({});
8
+ });
9
+
10
+ test('Должна преобразовывать список в ассоциативный массив', () => {
11
+ const input = [1, 2, 3];
12
+ expect(to_assoc(input)).toEqual({ 0: 1, 1: 2, 2: 3 });
13
+ });
14
+
15
+ test('Должна возвращать исходный ассоциативный массив, если он передан', () => {
16
+ const input = { key: 'value' };
17
+ expect(to_assoc(input)).toBe(input);
18
+ });
19
+
20
+ test('Должна возвращать ассоциативный массив с ключом 0 и переданным значением для примитивов', () => {
21
+ expect(to_assoc(true)).toEqual({ 0: true });
22
+ expect(to_assoc(false)).toEqual({ 0: false });
23
+ expect(to_assoc('example')).toEqual({ 0: 'example' });
24
+ expect(to_assoc(123)).toEqual({ 0: 123 });
25
+ });
26
+
27
+ test('Должна оборачивать экземпляр класса в ассоциативный массив с ключом 0', () => {
28
+ class MyClass {}
29
+
30
+ const instance = new MyClass();
31
+ expect(to_assoc(instance)).toEqual({ 0: instance });
32
+ });
33
+ });
@@ -0,0 +1,51 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { to_bool } from '../../index.mjs';
3
+
4
+ describe('Функция to_bool', () => {
5
+ test('Должна возвращать false для пустого массива', () => {
6
+ expect(to_bool([])).toBe(false);
7
+ });
8
+
9
+ test('Должна возвращать true для непустого массива', () => {
10
+ expect(to_bool([1, 2, 3])).toBe(true);
11
+ });
12
+
13
+ test('Должна возвращать false для пустого ассоциативного массива', () => {
14
+ expect(to_bool({})).toBe(false);
15
+ });
16
+
17
+ test('Должна возвращать true для непустого ассоциативного массива', () => {
18
+ expect(to_bool({ key: 'value' })).toBe(true);
19
+ });
20
+
21
+ test('Должна возвращать true для строки', () => {
22
+ expect(to_bool('example')).toBe(true);
23
+ });
24
+
25
+ test('Должна возвращать true для числа', () => {
26
+ expect(to_bool(123)).toBe(true);
27
+ });
28
+
29
+ test('Должна возвращать false для null и undefined', () => {
30
+ expect(to_bool(null)).toBe(false);
31
+ expect(to_bool(undefined)).toBe(false);
32
+ });
33
+
34
+ test('Должна возвращать true для булевых значений', () => {
35
+ expect(to_bool(true)).toBe(true);
36
+ expect(to_bool(false)).toBe(false);
37
+ });
38
+
39
+ test('Должна возвращать true для экземпляров класса', () => {
40
+ class MyClass {}
41
+
42
+ const instance = new MyClass();
43
+ expect(to_bool(instance)).toBe(true);
44
+ });
45
+
46
+ test('Должна возвращать true для классов', () => {
47
+ class MyClass {}
48
+
49
+ expect(to_bool(MyClass)).toBe(true);
50
+ });
51
+ });
@@ -0,0 +1,51 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { to_boolean } from '../../index.mjs';
3
+
4
+ describe('Функция to_boolean', () => {
5
+ test('Должна возвращать false для пустого массива', () => {
6
+ expect(to_boolean([])).toBe(false);
7
+ });
8
+
9
+ test('Должна возвращать true для непустого массива', () => {
10
+ expect(to_boolean([1, 2, 3])).toBe(true);
11
+ });
12
+
13
+ test('Должна возвращать false для пустого ассоциативного массива', () => {
14
+ expect(to_boolean({})).toBe(false);
15
+ });
16
+
17
+ test('Должна возвращать true для непустого ассоциативного массива', () => {
18
+ expect(to_boolean({ key: 'value' })).toBe(true);
19
+ });
20
+
21
+ test('Должна возвращать true для строки', () => {
22
+ expect(to_boolean('example')).toBe(true);
23
+ });
24
+
25
+ test('Должна возвращать true для числа', () => {
26
+ expect(to_boolean(123)).toBe(true);
27
+ });
28
+
29
+ test('Должна возвращать false для null и undefined', () => {
30
+ expect(to_boolean(null)).toBe(false);
31
+ expect(to_boolean(undefined)).toBe(false);
32
+ });
33
+
34
+ test('Должна возвращать true для булевых значений', () => {
35
+ expect(to_boolean(true)).toBe(true);
36
+ expect(to_boolean(false)).toBe(false);
37
+ });
38
+
39
+ test('Должна возвращать true для экземпляров класса', () => {
40
+ class MyClass {}
41
+
42
+ const instance = new MyClass();
43
+ expect(to_boolean(instance)).toBe(true);
44
+ });
45
+
46
+ test('Должна возвращать true для классов', () => {
47
+ class MyClass {}
48
+
49
+ expect(to_boolean(MyClass)).toBe(true);
50
+ });
51
+ });
@@ -0,0 +1,26 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { to_float } from '../../index.mjs';
3
+
4
+ describe('Функция to_float', () => {
5
+ test('Должна возвращать число с плавающей точкой для строки', () => {
6
+ expect(to_float('123.45')).toBe(123.45);
7
+ });
8
+
9
+ test('Должна возвращать число с плавающей точкой для целого числа', () => {
10
+ expect(to_float(123)).toBe(123.0);
11
+ });
12
+
13
+ test('Должна возвращать 1 для true и 0 для false', () => {
14
+ expect(to_float(true)).toBe(1.0);
15
+ expect(to_float(false)).toBe(0.0);
16
+ });
17
+
18
+ test('Должна возвращать 0 для null и undefined', () => {
19
+ expect(to_float(null)).toBe(0.0);
20
+ expect(to_float(undefined)).toBe(0.0);
21
+ });
22
+
23
+ test('Должна возвращать 0 для нечисловых строк', () => {
24
+ expect(to_float('example')).toBe(0.0);
25
+ });
26
+ });
@@ -0,0 +1,48 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { to_int } from '../../index.mjs';
3
+
4
+ describe('Функция to_int', () => {
5
+ test('Должна возвращать целое число для строки', () => {
6
+ expect(to_int('123')).toBe(123);
7
+ });
8
+
9
+ test('Должна возвращать целое число для числа с плавающей точкой', () => {
10
+ expect(to_int(123.45)).toBe(123);
11
+ });
12
+
13
+ test('Должна возвращать 1 для true и 0 для false', () => {
14
+ expect(to_int(true)).toBe(1);
15
+ expect(to_int(false)).toBe(0);
16
+ });
17
+
18
+ test('Должна возвращать 0 для null и undefined', () => {
19
+ expect(to_int(null)).toBe(0);
20
+ expect(to_int(undefined)).toBe(0);
21
+ });
22
+
23
+ test('Должна возвращать 0 для нечисловых строк', () => {
24
+ expect(to_int('example')).toBe(0);
25
+ });
26
+
27
+ test('Должна возвращать целое число для строки с основанием системы счисления', () => {
28
+ expect(to_int('10', 2)).toBe(2);
29
+ expect(to_int('A', 16)).toBe(10);
30
+ expect(to_int('7', 8)).toBe(7);
31
+ });
32
+
33
+ test('Должна возвращать целое число для строки с основанием системы счисления 2', () => {
34
+ expect(to_int('1010', 2)).toBe(10);
35
+ });
36
+
37
+ test('Должна возвращать целое число для строки с основанием системы счисления 16', () => {
38
+ expect(to_int('A', 16)).toBe(10);
39
+ });
40
+
41
+ test('Должна возвращать целое число для строки с основанием системы счисления 8', () => {
42
+ expect(to_int('7', 8)).toBe(7);
43
+ });
44
+
45
+ test('Должна выбрасывать исключение для неверного значения параметра base', () => {
46
+ expect(() => to_int('123', 'invalid')).toThrow(TypeError);
47
+ });
48
+ });
@@ -0,0 +1,48 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { to_integer } from '../../index.mjs';
3
+
4
+ describe('Функция to_integer', () => {
5
+ test('Должна возвращать целое число для строки', () => {
6
+ expect(to_integer('123')).toBe(123);
7
+ });
8
+
9
+ test('Должна возвращать целое число для числа с плавающей точкой', () => {
10
+ expect(to_integer(123.45)).toBe(123);
11
+ });
12
+
13
+ test('Должна возвращать 1 для true и 0 для false', () => {
14
+ expect(to_integer(true)).toBe(1);
15
+ expect(to_integer(false)).toBe(0);
16
+ });
17
+
18
+ test('Должна возвращать 0 для null и undefined', () => {
19
+ expect(to_integer(null)).toBe(0);
20
+ expect(to_integer(undefined)).toBe(0);
21
+ });
22
+
23
+ test('Должна возвращать 0 для нечисловых строк', () => {
24
+ expect(to_integer('example')).toBe(0);
25
+ });
26
+
27
+ test('Должна возвращать целое число для строки с основанием системы счисления', () => {
28
+ expect(to_integer('10', 2)).toBe(2);
29
+ expect(to_integer('A', 16)).toBe(10);
30
+ expect(to_integer('7', 8)).toBe(7);
31
+ });
32
+
33
+ test('Должна возвращать целое число для строки с основанием системы счисления 2', () => {
34
+ expect(to_integer('1010', 2)).toBe(10);
35
+ });
36
+
37
+ test('Должна возвращать целое число для строки с основанием системы счисления 16', () => {
38
+ expect(to_integer('A', 16)).toBe(10);
39
+ });
40
+
41
+ test('Должна возвращать целое число для строки с основанием системы счисления 8', () => {
42
+ expect(to_integer('7', 8)).toBe(7);
43
+ });
44
+
45
+ test('Должна выбрасывать исключение для неверного значения параметра base', () => {
46
+ expect(() => to_integer('123', 'invalid')).toThrow(TypeError);
47
+ });
48
+ });
@@ -0,0 +1,32 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { to_list } from '../../index.mjs';
3
+
4
+ describe('Функция to_list', () => {
5
+ test('должна возвращать пустой массив для null и undefined', () => {
6
+ expect(to_list(null)).toEqual([]);
7
+ expect(to_list(undefined)).toEqual([]);
8
+ });
9
+
10
+ test('должна возвращать исходный массив, если он передан', () => {
11
+ const input = [1, 2, 3];
12
+ expect(to_list(input)).toBe(input);
13
+ });
14
+
15
+ test('должна возвращать массив значений объекта, если передан ассоциативный массив', () => {
16
+ const input = { key1: 'value1', key2: 'value2' };
17
+ expect(to_list(input)).toEqual(['value1', 'value2']);
18
+ });
19
+
20
+ test('должна возвращать массив с примитивными значениями', () => {
21
+ expect(to_list(true)).toEqual([true]);
22
+ expect(to_list(false)).toEqual([false]);
23
+ expect(to_list('example')).toEqual(['example']);
24
+ expect(to_list(123)).toEqual([123]);
25
+ });
26
+
27
+ test('должна оборачивать экземпляр класса в массив', () => {
28
+ class MyClass {}
29
+ const instance = new MyClass();
30
+ expect(to_list(instance)).toEqual([instance]);
31
+ });
32
+ });
@@ -0,0 +1,36 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import to_object from '../../src/helpers/to_object.mjs';
3
+
4
+ describe('Функция to_object', () => {
5
+ test('Должна возвращать объект для объекта', () => {
6
+ class MyClass {}
7
+ const obj = new MyClass();
8
+ expect(to_object(obj)).toBe(obj);
9
+ });
10
+
11
+ test('Должна возвращать экземпляр класса для класса', () => {
12
+ class MyClass {}
13
+ const instance = to_object(MyClass);
14
+ expect(instance).toBeInstanceOf(MyClass);
15
+ });
16
+
17
+ test('Должна возвращать экземпляр анонимного класса для null и undefined', () => {
18
+ expect(Object.getPrototypeOf(to_object(null)).constructor.name).toBe('');
19
+ expect(Object.getPrototypeOf(to_object(undefined)).constructor.name).toBe('');
20
+ });
21
+
22
+ test('Должна возвращать объект с элементами массива для массива', () => {
23
+ const arr = [1, 2, 3];
24
+ const obj = to_object(arr);
25
+ expect(Object.getPrototypeOf(obj).constructor.name).toBe('');
26
+ expect(obj[0]).toBe(1);
27
+ expect(obj[1]).toBe(2);
28
+ expect(obj[2]).toBe(3);
29
+ });
30
+
31
+ test('Должна возвращать объект с полем value для других значений', () => {
32
+ const obj = to_object('example');
33
+ expect(Object.getPrototypeOf(obj).constructor.name).toBe('');
34
+ expect(obj.value).toBe('example');
35
+ });
36
+ });
@@ -0,0 +1,71 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { to_string } from '../../index.mjs';
3
+
4
+ describe('Функция to_string', () => {
5
+ test('Должна возвращать строку для строки', () => {
6
+ expect(to_string('example')).toBe('example');
7
+ });
8
+
9
+ test('Должна возвращать строку для числа', () => {
10
+ expect(to_string(123)).toBe('123');
11
+ expect(to_string(123.45)).toBe('123.45');
12
+ });
13
+
14
+ test('Должна возвращать строку для булевых значений', () => {
15
+ expect(to_string(true)).toBe('true');
16
+ expect(to_string(false)).toBe('false');
17
+ });
18
+
19
+ test('Должна возвращать строку для null и undefined', () => {
20
+ expect(to_string(null)).toBe('null');
21
+ expect(to_string(undefined)).toBe('undefined');
22
+ });
23
+
24
+ test('Должна возвращать строку для ассоциативных массивов', () => {
25
+ const obj = { key: 'value' };
26
+ expect(to_string(obj)).toBe("{\n key: 'value',\n}");
27
+ expect(to_string({})).toBe('{}');
28
+ });
29
+
30
+ test('Должна возвращать строку для массивов', () => {
31
+ const arr = [1, [2], 3];
32
+ expect(to_string(arr)).toBe('[\n 1,\n [\n 2,\n ],\n 3,\n]');
33
+ expect(to_string([])).toBe('[]');
34
+ });
35
+
36
+ test('Должна возвращать строку для именованной функции', () => {
37
+ const func = function () {};
38
+ expect(to_string(func)).toBe('function func() {}');
39
+ });
40
+
41
+ test('Должна возвращать строку для безымянной функции', () => {
42
+ expect(to_string(() => {})).toBe('function () {}');
43
+ });
44
+
45
+ test('Должна возвращать строку для символов', () => {
46
+ const symbol = Symbol('example');
47
+ expect(to_string(symbol)).toBe('Symbol(example)');
48
+ });
49
+
50
+ test('Должна возвращать строку для BigInt', () => {
51
+ const bigInt = BigInt(123);
52
+ expect(to_string(bigInt)).toBe('123');
53
+ });
54
+
55
+ test('Должна возвращать строку для именованного класса', () => {
56
+ class MyClass {
57
+ static test = 'test';
58
+ }
59
+ expect(to_string(MyClass)).toBe('class MyClass {}');
60
+ });
61
+
62
+ test('Должна возвращать строку для безымянного класса', () => {
63
+ expect(to_string(class {})).toBe('class {}');
64
+ });
65
+
66
+ test('Должна возвращать строку для экземпляров классов', () => {
67
+ class MyClass {}
68
+ const instance = new MyClass();
69
+ expect(to_string(instance)).toBe('object MyClass');
70
+ });
71
+ });