@rogolev/value 0.0.4 → 0.0.5

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 (156) hide show
  1. package/CHANGELOG.md +177 -0
  2. package/docs/classes/Expect/toBe.md +61 -0
  3. package/docs/classes/Expect/toBeArray.md +52 -0
  4. package/docs/classes/Expect/toBeAssoc.md +53 -0
  5. package/docs/classes/Expect/toBeBigInt.md +52 -0
  6. package/docs/classes/Expect/toBeBool.md +53 -0
  7. package/docs/classes/Expect/toBeBoolean.md +53 -0
  8. package/docs/classes/Expect/toBeChar.md +53 -0
  9. package/docs/classes/Expect/toBeClass.md +53 -0
  10. package/docs/classes/Expect/toBeFloat.md +53 -0
  11. package/docs/classes/Expect/toBeFunction.md +52 -0
  12. package/docs/classes/Expect/toBeInfinity.md +53 -0
  13. package/docs/classes/Expect/toBeInt.md +53 -0
  14. package/docs/classes/Expect/toBeInteger.md +53 -0
  15. package/docs/classes/Expect/toBeList.md +53 -0
  16. package/docs/classes/Expect/toBeNaN.md +53 -0
  17. package/docs/classes/Expect/toBeNull.md +51 -0
  18. package/docs/classes/Expect/toBeNumber.md +52 -0
  19. package/docs/classes/Expect/toBeNumeric.md +53 -0
  20. package/docs/classes/Expect/toBeObject.md +52 -0
  21. package/docs/classes/Expect/toBeScalar.md +53 -0
  22. package/docs/classes/Expect/toBeString.md +52 -0
  23. package/docs/classes/Expect/toBeSymbol.md +53 -0
  24. package/docs/classes/Expect/toBeUndefined.md +54 -0
  25. package/docs/classes/Expect/toEqual.md +69 -0
  26. package/docs/classes/Expect/toStrictEqual.md +70 -0
  27. package/docs/classes/Expect.md +87 -0
  28. package/docs/classes/Type/expectArray.md +63 -0
  29. package/docs/classes/Type/expectAssoc.md +65 -0
  30. package/docs/classes/Type/expectBigInt.md +63 -0
  31. package/docs/classes/Type/expectBool.md +65 -0
  32. package/docs/classes/Type/expectBoolean.md +65 -0
  33. package/docs/classes/Type/expectChar.md +63 -0
  34. package/docs/classes/Type/expectClass.md +63 -0
  35. package/docs/classes/Type/expectFloat.md +68 -0
  36. package/docs/classes/Type/expectFunction.md +63 -0
  37. package/docs/classes/Type/expectInfinity.md +65 -0
  38. package/docs/classes/Type/expectInt.md +64 -0
  39. package/docs/classes/Type/expectInteger.md +64 -0
  40. package/docs/classes/Type/expectList.md +63 -0
  41. package/docs/classes/Type/expectNaN.md +63 -0
  42. package/docs/classes/Type/expectNull.md +63 -0
  43. package/docs/classes/Type/expectNumber.md +63 -0
  44. package/docs/classes/Type/expectNumeric.md +63 -0
  45. package/docs/classes/Type/expectObject.md +64 -0
  46. package/docs/classes/Type/expectScalar.md +63 -0
  47. package/docs/classes/Type/expectString.md +63 -0
  48. package/docs/classes/Type/expectSymbol.md +63 -0
  49. package/docs/classes/Type/expectUndefined.md +63 -0
  50. package/docs/classes/Type.md +101 -2
  51. package/docs/classes.md +2 -1
  52. package/docs/helpers/expect.md +58 -0
  53. package/docs/helpers/expect_array.md +63 -0
  54. package/docs/helpers/expect_assoc.md +65 -0
  55. package/docs/helpers/expect_bigint.md +63 -0
  56. package/docs/helpers/expect_bool.md +65 -0
  57. package/docs/helpers/expect_boolean.md +65 -0
  58. package/docs/helpers/expect_char.md +63 -0
  59. package/docs/helpers/expect_class.md +63 -0
  60. package/docs/helpers/expect_float.md +65 -0
  61. package/docs/helpers/expect_function.md +63 -0
  62. package/docs/helpers/expect_infinity.md +65 -0
  63. package/docs/helpers/expect_int.md +65 -0
  64. package/docs/helpers/expect_integer.md +65 -0
  65. package/docs/helpers/expect_list.md +63 -0
  66. package/docs/helpers/expect_nan.md +63 -0
  67. package/docs/helpers/expect_null.md +63 -0
  68. package/docs/helpers/expect_number.md +63 -0
  69. package/docs/helpers/expect_numeric.md +63 -0
  70. package/docs/helpers/expect_object.md +64 -0
  71. package/docs/helpers/expect_scalar.md +63 -0
  72. package/docs/helpers/expect_string.md +63 -0
  73. package/docs/helpers/expect_symbol.md +63 -0
  74. package/docs/helpers/expect_undefined.md +64 -0
  75. package/docs/helpers/is_equal.md +75 -0
  76. package/docs/helpers.md +47 -0
  77. package/index.mjs +25 -0
  78. package/package.json +1 -2
  79. package/src/classes/Expect.mjs +1445 -0
  80. package/src/classes/Type.mjs +2739 -1284
  81. package/src/constants.mjs +83 -14
  82. package/src/helpers/expect.mjs +44 -0
  83. package/src/helpers/expect_array.mjs +66 -0
  84. package/src/helpers/expect_assoc.mjs +66 -0
  85. package/src/helpers/expect_bigint.mjs +66 -0
  86. package/src/helpers/expect_bool.mjs +66 -0
  87. package/src/helpers/expect_boolean.mjs +57 -0
  88. package/src/helpers/expect_char.mjs +66 -0
  89. package/src/helpers/expect_class.mjs +66 -0
  90. package/src/helpers/expect_float.mjs +66 -0
  91. package/src/helpers/expect_function.mjs +66 -0
  92. package/src/helpers/expect_infinity.mjs +66 -0
  93. package/src/helpers/expect_int.mjs +66 -0
  94. package/src/helpers/expect_integer.mjs +57 -0
  95. package/src/helpers/expect_list.mjs +66 -0
  96. package/src/helpers/expect_nan.mjs +66 -0
  97. package/src/helpers/expect_null.mjs +66 -0
  98. package/src/helpers/expect_number.mjs +66 -0
  99. package/src/helpers/expect_numeric.mjs +66 -0
  100. package/src/helpers/expect_object.mjs +67 -0
  101. package/src/helpers/expect_scalar.mjs +66 -0
  102. package/src/helpers/expect_string.mjs +65 -0
  103. package/src/helpers/expect_symbol.mjs +66 -0
  104. package/src/helpers/expect_undefined.mjs +66 -0
  105. package/src/helpers/is_equal.mjs +94 -0
  106. package/tests/classes/Expect/toBe.test.mjs +60 -0
  107. package/tests/classes/Expect/toBeArray.test.mjs +46 -0
  108. package/tests/classes/Expect/toBeAssoc.test.mjs +48 -0
  109. package/tests/classes/Expect/toBeBigInt.test.mjs +46 -0
  110. package/tests/classes/Expect/toBeBool.test.mjs +48 -0
  111. package/tests/classes/Expect/toBeBoolean.test.mjs +48 -0
  112. package/tests/classes/Expect/toBeChar.test.mjs +46 -0
  113. package/tests/classes/Expect/toBeClass.test.mjs +48 -0
  114. package/tests/classes/Expect/toBeFloat.test.mjs +48 -0
  115. package/tests/classes/Expect/toBeFunction.test.mjs +51 -0
  116. package/tests/classes/Expect/toBeInfinity.test.mjs +48 -0
  117. package/tests/classes/Expect/toBeInt.test.mjs +48 -0
  118. package/tests/classes/Expect/toBeInteger.test.mjs +48 -0
  119. package/tests/classes/Expect/toBeList.test.mjs +46 -0
  120. package/tests/classes/Expect/toBeNaN.test.mjs +46 -0
  121. package/tests/classes/Expect/toBeNull.test.mjs +46 -0
  122. package/tests/classes/Expect/toBeNumber.test.mjs +46 -0
  123. package/tests/classes/Expect/toBeNumeric.test.mjs +53 -0
  124. package/tests/classes/Expect/toBeObject.test.mjs +47 -0
  125. package/tests/classes/Expect/toBeScalar.test.mjs +63 -0
  126. package/tests/classes/Expect/toBeString.test.mjs +46 -0
  127. package/tests/classes/Expect/toBeSymbol.test.mjs +46 -0
  128. package/tests/classes/Expect/toBeUndefined.test.mjs +50 -0
  129. package/tests/classes/Expect/toEqual.test.mjs +66 -0
  130. package/tests/classes/Expect/toStrictEqual.test.mjs +73 -0
  131. package/tests/classes/Type.test.mjs +1320 -1262
  132. package/tests/helpers/array.test.mjs +58 -58
  133. package/tests/helpers/expect.test.mjs +95 -0
  134. package/tests/helpers/expect_array.test.mjs +71 -0
  135. package/tests/helpers/expect_assoc.test.mjs +61 -0
  136. package/tests/helpers/expect_bigint.test.mjs +63 -0
  137. package/tests/helpers/expect_bool.test.mjs +59 -0
  138. package/tests/helpers/expect_boolean.test.mjs +61 -0
  139. package/tests/helpers/expect_char.test.mjs +63 -0
  140. package/tests/helpers/expect_class.test.mjs +64 -0
  141. package/tests/helpers/expect_float.test.mjs +64 -0
  142. package/tests/helpers/expect_function.test.mjs +65 -0
  143. package/tests/helpers/expect_infinity.test.mjs +62 -0
  144. package/tests/helpers/expect_int.test.mjs +57 -0
  145. package/tests/helpers/expect_integer.test.mjs +59 -0
  146. package/tests/helpers/expect_list.test.mjs +73 -0
  147. package/tests/helpers/expect_nan.test.mjs +57 -0
  148. package/tests/helpers/expect_null.test.mjs +57 -0
  149. package/tests/helpers/expect_number.test.mjs +57 -0
  150. package/tests/helpers/expect_numeric.test.mjs +57 -0
  151. package/tests/helpers/expect_object.test.mjs +63 -0
  152. package/tests/helpers/expect_scalar.test.mjs +72 -0
  153. package/tests/helpers/expect_string.test.mjs +65 -0
  154. package/tests/helpers/expect_symbol.test.mjs +66 -0
  155. package/tests/helpers/expect_undefined.test.mjs +59 -0
  156. package/tests/helpers/is_equal.test.mjs +110 -0
@@ -0,0 +1,66 @@
1
+ import is_scalar from './is_scalar.mjs';
2
+ import is_string from './is_string.mjs';
3
+
4
+ /**
5
+ * Проверяет, является ли значение скалярным, и выбрасывает ошибку с указанным сообщением, если это не так.
6
+ *
7
+ * ### Описание
8
+ *
9
+ * Функция `expect_scalar` используется для проверки, является ли переданное значение скалярным.
10
+ * Если значение не является скалярным, функция выбрасывает ошибку типа `TypeError` с указанным сообщением.
11
+ *
12
+ * ### Параметры
13
+ *
14
+ * - `value` (any): Значение для проверки.
15
+ * - `message` (string): Сообщение об ошибке, если значение не является скалярным. По умолчанию пустая строка.
16
+ *
17
+ * ### Возвращаемое значение
18
+ *
19
+ * Возвращает `true`, если значение является скалярным.
20
+ *
21
+ * ### Примеры использования
22
+ *
23
+ * 1. Проверка значения, являющегося скалярным:
24
+ *
25
+ * ```js
26
+ * const value = 123;
27
+ * const result = expect_scalar(value);
28
+ * console.log(result); // true
29
+ * ```
30
+ *
31
+ * 2. Проверка значения, не являющегося скалярным:
32
+ *
33
+ * ```js
34
+ * try {
35
+ * const result = expect_scalar([1, 2, 3], 'Значение должно быть скалярным.');
36
+ * } catch (e) {
37
+ * console.error(e.message); // Значение должно быть скалярным.
38
+ * }
39
+ * ```
40
+ *
41
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
42
+ *
43
+ * ```js
44
+ * try {
45
+ * const result = expect_scalar({}, 'Ожидалось скалярное значение.');
46
+ * } catch (e) {
47
+ * console.error(e.message); // Ожидалось скалярное значение.
48
+ * }
49
+ * ```
50
+ *
51
+ * @param {any} value Значение для проверки.
52
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является скалярным.
53
+ * @returns {boolean} Возвращает `true`, если значение является скалярным.
54
+ * @throws {TypeError} Если значение не является скалярным или если параметр `message` не является строкой.
55
+ */
56
+ export default function expect_scalar(value, message = '') {
57
+ if (!is_string(message)) {
58
+ throw new TypeError('Параметр "message" должен быть строкой.');
59
+ }
60
+
61
+ if (!is_scalar(value)) {
62
+ throw new TypeError(message);
63
+ }
64
+
65
+ return true;
66
+ }
@@ -0,0 +1,65 @@
1
+ import is_string from './is_string.mjs';
2
+
3
+ /**
4
+ * Проверяет, является ли значение строкой, и выбрасывает ошибку с указанным сообщением, если это не так.
5
+ *
6
+ * ### Описание
7
+ *
8
+ * Функция `expect_string` используется для проверки, является ли переданное значение строкой.
9
+ * Если значение не является строкой, функция выбрасывает ошибку типа `TypeError` с указанным сообщением.
10
+ *
11
+ * ### Параметры
12
+ *
13
+ * - `value` (any): Значение для проверки.
14
+ * - `message` (string): Сообщение об ошибке, если значение не является строкой. По умолчанию пустая строка.
15
+ *
16
+ * ### Возвращаемое значение
17
+ *
18
+ * Возвращает `true`, если значение является строкой.
19
+ *
20
+ * ### Примеры использования
21
+ *
22
+ * 1. Проверка значения, являющегося строкой:
23
+ *
24
+ * ```js
25
+ * const value = 'Hello, world!';
26
+ * const result = expect_string(value);
27
+ * console.log(result); // true
28
+ * ```
29
+ *
30
+ * 2. Проверка значения, не являющегося строкой:
31
+ *
32
+ * ```js
33
+ * try {
34
+ * const result = expect_string(123, 'Значение должно быть строкой.');
35
+ * } catch (e) {
36
+ * console.error(e.message); // Значение должно быть строкой.
37
+ * }
38
+ * ```
39
+ *
40
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
41
+ *
42
+ * ```js
43
+ * try {
44
+ * const result = expect_string({}, 'Ожидалась строка.');
45
+ * } catch (e) {
46
+ * console.error(e.message); // Ожидалась строка.
47
+ * }
48
+ * ```
49
+ *
50
+ * @param {any} value Значение для проверки.
51
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является строкой.
52
+ * @returns {boolean} Возвращает `true`, если значение является строкой.
53
+ * @throws {TypeError} Если значение не является строкой или если параметр `message` не является строкой.
54
+ */
55
+ export default function expect_string(value, message = '') {
56
+ if (!is_string(message)) {
57
+ throw new TypeError('Параметр "message" должен быть строкой.');
58
+ }
59
+
60
+ if (!is_string(value)) {
61
+ throw new TypeError(message);
62
+ }
63
+
64
+ return true;
65
+ }
@@ -0,0 +1,66 @@
1
+ import is_string from './is_string.mjs';
2
+ import is_symbol from './is_symbol.mjs';
3
+
4
+ /**
5
+ * Проверяет, является ли значение символом, и выбрасывает ошибку с указанным сообщением, если это не так.
6
+ *
7
+ * ### Описание
8
+ *
9
+ * Функция `expect_symbol` используется для проверки, является ли переданное значение символом.
10
+ * Если значение не является символом, функция выбрасывает ошибку типа `TypeError` с указанным сообщением.
11
+ *
12
+ * ### Параметры
13
+ *
14
+ * - `value` (any): Значение для проверки.
15
+ * - `message` (string): Сообщение об ошибке, если значение не является символом. По умолчанию пустая строка.
16
+ *
17
+ * ### Возвращаемое значение
18
+ *
19
+ * Возвращает `true`, если значение является символом.
20
+ *
21
+ * ### Примеры использования
22
+ *
23
+ * 1. Проверка значения, являющегося символом:
24
+ *
25
+ * ```js
26
+ * const value = Symbol('example');
27
+ * const result = expect_symbol(value);
28
+ * console.log(result); // true
29
+ * ```
30
+ *
31
+ * 2. Проверка значения, не являющегося символом:
32
+ *
33
+ * ```js
34
+ * try {
35
+ * const result = expect_symbol('not a symbol', 'Значение должно быть символом.');
36
+ * } catch (e) {
37
+ * console.error(e.message); // Значение должно быть символом.
38
+ * }
39
+ * ```
40
+ *
41
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
42
+ *
43
+ * ```js
44
+ * try {
45
+ * const result = expect_symbol(123, 'Ожидался символ.');
46
+ * } catch (e) {
47
+ * console.error(e.message); // Ожидался символ.
48
+ * }
49
+ * ```
50
+ *
51
+ * @param {any} value Значение для проверки.
52
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является символом.
53
+ * @returns {boolean} Возвращает `true`, если значение является символом.
54
+ * @throws {TypeError} Если значение не является символом или если параметр `message` не является строкой.
55
+ */
56
+ export default function expect_symbol(value, message = '') {
57
+ if (!is_string(message)) {
58
+ throw new TypeError('Параметр "message" должен быть строкой.');
59
+ }
60
+
61
+ if (!is_symbol(value)) {
62
+ throw new TypeError(message);
63
+ }
64
+
65
+ return true;
66
+ }
@@ -0,0 +1,66 @@
1
+ import is_string from './is_string.mjs';
2
+ import is_undefined from './is_undefined.mjs';
3
+
4
+ /**
5
+ * Проверяет, является ли значение undefined, и выбрасывает ошибку с указанным сообщением, если это не так.
6
+ *
7
+ * ### Описание
8
+ *
9
+ * Функция `expect_undefined` используется для проверки, является ли переданное значение undefined.
10
+ * Если значение не является undefined, функция выбрасывает ошибку типа `TypeError` с указанным сообщением.
11
+ *
12
+ * ### Параметры
13
+ *
14
+ * - `value` (any): Значение для проверки.
15
+ * - `message` (string): Сообщение об ошибке, если значение не является undefined. По умолчанию пустая строка.
16
+ *
17
+ * ### Возвращаемое значение
18
+ *
19
+ * Возвращает `true`, если значение является undefined.
20
+ *
21
+ * ### Примеры использования
22
+ *
23
+ * 1. Проверка значения, являющегося undefined:
24
+ *
25
+ * ```js
26
+ * let value;
27
+ * const result = expect_undefined(value);
28
+ * console.log(result); // true
29
+ * ```
30
+ *
31
+ * 2. Проверка значения, не являющегося undefined:
32
+ *
33
+ * ```js
34
+ * try {
35
+ * const result = expect_undefined(123, 'Значение должно быть undefined.');
36
+ * } catch (e) {
37
+ * console.error(e.message); // Значение должно быть undefined.
38
+ * }
39
+ * ```
40
+ *
41
+ * 3. Проверка значения с использованием пользовательского сообщения об ошибке:
42
+ *
43
+ * ```js
44
+ * try {
45
+ * const result = expect_undefined('not undefined', 'Ожидалось значение undefined.');
46
+ * } catch (e) {
47
+ * console.error(e.message); // Ожидалось значение undefined.
48
+ * }
49
+ * ```
50
+ *
51
+ * @param {any} value Значение для проверки.
52
+ * @param {string} [message=''] Сообщение об ошибке, если значение не является undefined.
53
+ * @returns {boolean} Возвращает `true`, если значение является undefined.
54
+ * @throws {TypeError} Если значение не является undefined или если параметр `message` не является строкой.
55
+ */
56
+ export default function expect_undefined(value, message = '') {
57
+ if (!is_string(message)) {
58
+ throw new TypeError('Параметр "message" должен быть строкой.');
59
+ }
60
+
61
+ if (!is_undefined(value)) {
62
+ throw new TypeError(message);
63
+ }
64
+
65
+ return true;
66
+ }
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Проверяет, являются ли два значения равными.
3
+ *
4
+ * ### Описание
5
+ *
6
+ * Функция `is_equal` используется для проверки равенства двух значений. Она поддерживает сравнение
7
+ * примитивных типов данных, а также объектов и массивов. Для объектов и массивов функция рекурсивно
8
+ * сравнивает их ключи и значения. Функция также поддерживает строгий режим сравнения, который учитывает типы значений.
9
+ *
10
+ * ### Параметры
11
+ *
12
+ * - `actual` (any): Первое значение для сравнения.
13
+ * - `expected` (any): Второе значение для сравнения.
14
+ * - `strict` (boolean): Флаг строгого сравнения. По умолчанию `false`.
15
+ *
16
+ * ### Возвращаемое значение
17
+ *
18
+ * Возвращает `true`, если значения равны, иначе `false`.
19
+ *
20
+ * ### Примеры использования
21
+ *
22
+ * 1. Проверка равенства чисел:
23
+ *
24
+ * ```js
25
+ * const result = is_equal(1, 1);
26
+ * console.log(result); // true
27
+ * ```
28
+ *
29
+ * 2. Проверка равенства строк:
30
+ *
31
+ * ```js
32
+ * const result = is_equal('hello', 'hello');
33
+ * console.log(result); // true
34
+ * ```
35
+ *
36
+ * 3. Проверка равенства объектов:
37
+ *
38
+ * ```js
39
+ * const obj1 = { a: 1, b: 2 };
40
+ * const obj2 = { a: 1, b: 2 };
41
+ * const result = is_equal(obj1, obj2);
42
+ * console.log(result); // true
43
+ * ```
44
+ *
45
+ * 4. Проверка равенства массивов:
46
+ *
47
+ * ```js
48
+ * const arr1 = [1, 2, 3];
49
+ * const arr2 = [1, 2, 3];
50
+ * const result = is_equal(arr1, arr2);
51
+ * console.log(result); // true
52
+ * ```
53
+ *
54
+ * 5. Проверка равенства с использованием строгого сравнения:
55
+ *
56
+ * ```js
57
+ * const result = is_equal(1, '1', true);
58
+ * console.log(result); // false
59
+ * ```
60
+ *
61
+ * @param {any} actual Первое значение для сравнения.
62
+ * @param {any} expected Второе значение для сравнения.
63
+ * @param {boolean} [strict=false] Флаг строгого сравнения.
64
+ * @returns {boolean} Возвращает `true`, если значения равны, иначе `false`.
65
+ */
66
+ export default function is_equal(actual, expected, strict = false) {
67
+ if (
68
+ typeof actual === 'object' &&
69
+ typeof expected === 'object' &&
70
+ actual !== null &&
71
+ expected !== null
72
+ ) {
73
+ const entriesA = Object.entries(actual);
74
+ const entriesB = Object.entries(expected);
75
+
76
+ if (entriesA.length !== entriesB.length) {
77
+ return false;
78
+ }
79
+
80
+ for (let i = 0; i < entriesA.length; i++) {
81
+ if (entriesA[i][0] !== entriesB[i][0] || !is_equal(entriesA[i][1], entriesB[i][1])) {
82
+ return false;
83
+ }
84
+ }
85
+
86
+ return true;
87
+ }
88
+
89
+ if (strict) {
90
+ return Object.is(actual, expected);
91
+ }
92
+
93
+ return actual == expected;
94
+ }
@@ -0,0 +1,60 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBe класса Expect', () => {
5
+ test('Должен возвращать true, если значения строго равны (числа)', () => {
6
+ const expectInstance = new Expect(5);
7
+ expect(expectInstance.toBe(5)).toBe(true);
8
+ });
9
+
10
+ test('Должен возвращать true, если значения строго равны (строки)', () => {
11
+ const expectInstance = new Expect('hello');
12
+ expect(expectInstance.toBe('hello')).toBe(true);
13
+ });
14
+
15
+ test('Должен выбрасывать ошибку, если значения не равны (числа)', () => {
16
+ const expectInstance = new Expect(5);
17
+ expect(() => expectInstance.toBe(10)).toThrow(TypeError);
18
+ expect(() => expectInstance.toBe(10)).toThrow('');
19
+ });
20
+
21
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значения не равны', () => {
22
+ const expectInstance = new Expect(5);
23
+ expect(() => expectInstance.toBe(10, 'Значения не равны')).toThrow(TypeError);
24
+ expect(() => expectInstance.toBe(10, 'Значения не равны')).toThrow('Значения не равны');
25
+ });
26
+
27
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
28
+ const expectInstance = new Expect(5);
29
+ expect(() => expectInstance.toBe(5, 123)).toThrow(TypeError);
30
+ expect(() => expectInstance.toBe(5, 123)).toThrow(
31
+ 'Параметр "message" должен быть строкой.',
32
+ );
33
+ });
34
+
35
+ test('Должен возвращать true, если значения строго равны (объекты)', () => {
36
+ const obj = { a: 1, b: 2 };
37
+ const expectInstance = new Expect(obj);
38
+ expect(expectInstance.toBe(obj)).toBe(true);
39
+ });
40
+
41
+ test('Должен выбрасывать ошибку, если значения не равны (объекты)', () => {
42
+ const obj1 = { a: 1, b: 2 };
43
+ const obj2 = { a: 1, b: 3 };
44
+ const expectInstance = new Expect(obj1);
45
+ expect(() => expectInstance.toBe(obj2)).toThrow(TypeError);
46
+ });
47
+
48
+ test('Должен возвращать true, если значения строго равны (массивы)', () => {
49
+ const arr = [1, 2, 3];
50
+ const expectInstance = new Expect(arr);
51
+ expect(expectInstance.toBe(arr)).toBe(true);
52
+ });
53
+
54
+ test('Должен выбрасывать ошибку, если значения не равны (массивы)', () => {
55
+ const arr1 = [1, 2, 3];
56
+ const arr2 = [1, 2, 4];
57
+ const expectInstance = new Expect(arr1);
58
+ expect(() => expectInstance.toBe(arr2)).toThrow(TypeError);
59
+ });
60
+ });
@@ -0,0 +1,46 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeArray класса Expect', () => {
5
+ test('Должен возвращать true, если значение является массивом', () => {
6
+ const expectInstance = new Expect([1, 2, 3]);
7
+ expect(expectInstance.toBeArray()).toBe(true);
8
+ });
9
+
10
+ test('Должен выбрасывать ошибку, если значение не является массивом', () => {
11
+ const expectInstance = new Expect('not an array');
12
+ expect(() => expectInstance.toBeArray()).toThrow(TypeError);
13
+ expect(() => expectInstance.toBeArray()).toThrow('');
14
+ });
15
+
16
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является массивом', () => {
17
+ const expectInstance = new Expect('not an array');
18
+ expect(() => expectInstance.toBeArray('Значение должно быть массивом')).toThrow(TypeError);
19
+ expect(() => expectInstance.toBeArray('Значение должно быть массивом')).toThrow(
20
+ 'Значение должно быть массивом',
21
+ );
22
+ });
23
+
24
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
25
+ const expectInstance = new Expect([1, 2, 3]);
26
+ expect(() => expectInstance.toBeArray(123)).toThrow(TypeError);
27
+ expect(() => expectInstance.toBeArray(123)).toThrow(
28
+ 'Параметр "message" должен быть строкой.',
29
+ );
30
+ });
31
+
32
+ test('Должен возвращать true, если значение является пустым массивом', () => {
33
+ const expectInstance = new Expect([]);
34
+ expect(expectInstance.toBeArray()).toBe(true);
35
+ });
36
+
37
+ test('Должен возвращать true, если значение является массивом объектов', () => {
38
+ const expectInstance = new Expect([{ a: 1 }, { b: 2 }]);
39
+ expect(expectInstance.toBeArray()).toBe(true);
40
+ });
41
+
42
+ test('Должен возвращать true, если значение является ассоциативным массивом', () => {
43
+ const expectInstance = new Expect({ a: 1, b: 2 });
44
+ expect(expectInstance.toBeArray()).toBe(true);
45
+ });
46
+ });
@@ -0,0 +1,48 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeAssoc класса Expect', () => {
5
+ test('Должен возвращать true, если значение является ассоциативным массивом', () => {
6
+ const expectInstance = new Expect({ a: 1, b: 2, c: 3 });
7
+ expect(expectInstance.toBeAssoc()).toBe(true);
8
+ });
9
+
10
+ test('Должен выбрасывать ошибку, если значение не является ассоциативным массивом', () => {
11
+ const expectInstance = new Expect([1, 2, 3]);
12
+ expect(() => expectInstance.toBeAssoc()).toThrow(TypeError);
13
+ expect(() => expectInstance.toBeAssoc()).toThrow('');
14
+ });
15
+
16
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является ассоциативным массивом', () => {
17
+ const expectInstance = new Expect([1, 2, 3]);
18
+ expect(() =>
19
+ expectInstance.toBeAssoc('Значение должно быть ассоциативным массивом'),
20
+ ).toThrow(TypeError);
21
+ expect(() =>
22
+ expectInstance.toBeAssoc('Значение должно быть ассоциативным массивом'),
23
+ ).toThrow('Значение должно быть ассоциативным массивом');
24
+ });
25
+
26
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
27
+ const expectInstance = new Expect({ a: 1, b: 2, c: 3 });
28
+ expect(() => expectInstance.toBeAssoc(123)).toThrow(TypeError);
29
+ expect(() => expectInstance.toBeAssoc(123)).toThrow(
30
+ 'Параметр "message" должен быть строкой.',
31
+ );
32
+ });
33
+
34
+ test('Должен возвращать true, если значение является пустым объектом', () => {
35
+ const expectInstance = new Expect({});
36
+ expect(expectInstance.toBeAssoc()).toBe(true);
37
+ });
38
+
39
+ test('Должен возвращать true, если значение является объектом с вложенными объектами', () => {
40
+ const expectInstance = new Expect({ a: { b: 2 }, c: 3 });
41
+ expect(expectInstance.toBeAssoc()).toBe(true);
42
+ });
43
+
44
+ test('Должен выбрасывать ошибку, если значение является массивом, а не ассоциативным массивом', () => {
45
+ const expectInstance = new Expect([1, 2, 3]);
46
+ expect(() => expectInstance.toBeAssoc()).toThrow(TypeError);
47
+ });
48
+ });
@@ -0,0 +1,46 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeBigInt класса Expect', () => {
5
+ test('Должен возвращать true, если значение является BigInt', () => {
6
+ const expectInstance = new Expect(123n);
7
+ expect(expectInstance.toBeBigInt()).toBe(true);
8
+ });
9
+
10
+ test('Должен выбрасывать ошибку, если значение не является BigInt', () => {
11
+ const expectInstance = new Expect(123);
12
+ expect(() => expectInstance.toBeBigInt()).toThrow(TypeError);
13
+ expect(() => expectInstance.toBeBigInt()).toThrow('');
14
+ });
15
+
16
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является BigInt', () => {
17
+ const expectInstance = new Expect(123);
18
+ expect(() => expectInstance.toBeBigInt('Значение должно быть BigInt')).toThrow(TypeError);
19
+ expect(() => expectInstance.toBeBigInt('Значение должно быть BigInt')).toThrow(
20
+ 'Значение должно быть BigInt',
21
+ );
22
+ });
23
+
24
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
25
+ const expectInstance = new Expect(123n);
26
+ expect(() => expectInstance.toBeBigInt(123)).toThrow(TypeError);
27
+ expect(() => expectInstance.toBeBigInt(123)).toThrow(
28
+ 'Параметр "message" должен быть строкой.',
29
+ );
30
+ });
31
+
32
+ test('Должен возвращать true, если значение является отрицательным BigInt', () => {
33
+ const expectInstance = new Expect(-123n);
34
+ expect(expectInstance.toBeBigInt()).toBe(true);
35
+ });
36
+
37
+ test('Должен выбрасывать ошибку, если значение является строкой, а не BigInt', () => {
38
+ const expectInstance = new Expect('123');
39
+ expect(() => expectInstance.toBeBigInt()).toThrow(TypeError);
40
+ });
41
+
42
+ test('Должен выбрасывать ошибку, если значение является числом с плавающей запятой, а не BigInt', () => {
43
+ const expectInstance = new Expect(123.45);
44
+ expect(() => expectInstance.toBeBigInt()).toThrow(TypeError);
45
+ });
46
+ });
@@ -0,0 +1,48 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeBool класса Expect', () => {
5
+ test('Должен возвращать true, если значение является логическим типом (true)', () => {
6
+ const expectInstance = new Expect(true);
7
+ expect(expectInstance.toBeBool()).toBe(true);
8
+ });
9
+
10
+ test('Должен возвращать true, если значение является логическим типом (false)', () => {
11
+ const expectInstance = new Expect(false);
12
+ expect(expectInstance.toBeBool()).toBe(true);
13
+ });
14
+
15
+ test('Должен выбрасывать ошибку, если значение не является логическим типом', () => {
16
+ const expectInstance = new Expect(1);
17
+ expect(() => expectInstance.toBeBool()).toThrow(TypeError);
18
+ expect(() => expectInstance.toBeBool()).toThrow('');
19
+ });
20
+
21
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является логическим типом', () => {
22
+ const expectInstance = new Expect(1);
23
+ expect(() => expectInstance.toBeBool('Значение должно быть логическим типом')).toThrow(
24
+ TypeError,
25
+ );
26
+ expect(() => expectInstance.toBeBool('Значение должно быть логическим типом')).toThrow(
27
+ 'Значение должно быть логическим типом',
28
+ );
29
+ });
30
+
31
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
32
+ const expectInstance = new Expect(true);
33
+ expect(() => expectInstance.toBeBool(123)).toThrow(TypeError);
34
+ expect(() => expectInstance.toBeBool(123)).toThrow(
35
+ 'Параметр "message" должен быть строкой.',
36
+ );
37
+ });
38
+
39
+ test('Должен выбрасывать ошибку, если значение является строкой, а не логическим типом', () => {
40
+ const expectInstance = new Expect('true');
41
+ expect(() => expectInstance.toBeBool()).toThrow(TypeError);
42
+ });
43
+
44
+ test('Должен выбрасывать ошибку, если значение является числом, а не логическим типом', () => {
45
+ const expectInstance = new Expect(0);
46
+ expect(() => expectInstance.toBeBool()).toThrow(TypeError);
47
+ });
48
+ });
@@ -0,0 +1,48 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeBoolean класса Expect', () => {
5
+ test('Должен возвращать true, если значение является логическим типом (true)', () => {
6
+ const expectInstance = new Expect(true);
7
+ expect(expectInstance.toBeBoolean()).toBe(true);
8
+ });
9
+
10
+ test('Должен возвращать true, если значение является логическим типом (false)', () => {
11
+ const expectInstance = new Expect(false);
12
+ expect(expectInstance.toBeBoolean()).toBe(true);
13
+ });
14
+
15
+ test('Должен выбрасывать ошибку, если значение не является логическим типом', () => {
16
+ const expectInstance = new Expect(1);
17
+ expect(() => expectInstance.toBeBoolean()).toThrow(TypeError);
18
+ expect(() => expectInstance.toBeBoolean()).toThrow('');
19
+ });
20
+
21
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является логическим типом', () => {
22
+ const expectInstance = new Expect(1);
23
+ expect(() => expectInstance.toBeBoolean('Значение должно быть логическим типом')).toThrow(
24
+ TypeError,
25
+ );
26
+ expect(() => expectInstance.toBeBoolean('Значение должно быть логическим типом')).toThrow(
27
+ 'Значение должно быть логическим типом',
28
+ );
29
+ });
30
+
31
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
32
+ const expectInstance = new Expect(true);
33
+ expect(() => expectInstance.toBeBoolean(123)).toThrow(TypeError);
34
+ expect(() => expectInstance.toBeBoolean(123)).toThrow(
35
+ 'Параметр "message" должен быть строкой.',
36
+ );
37
+ });
38
+
39
+ test('Должен выбрасывать ошибку, если значение является строкой, а не логическим типом', () => {
40
+ const expectInstance = new Expect('true');
41
+ expect(() => expectInstance.toBeBoolean()).toThrow(TypeError);
42
+ });
43
+
44
+ test('Должен выбрасывать ошибку, если значение является числом, а не логическим типом', () => {
45
+ const expectInstance = new Expect(0);
46
+ expect(() => expectInstance.toBeBoolean()).toThrow(TypeError);
47
+ });
48
+ });