@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,63 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeScalar класса Expect', () => {
5
+ test('Должен возвращать true, если значение является скалярным (число)', () => {
6
+ const expectInstance = new Expect(123);
7
+ expect(expectInstance.toBeScalar()).toBe(true);
8
+ });
9
+
10
+ test('Должен возвращать true, если значение является скалярным (строка)', () => {
11
+ const expectInstance = new Expect('hello');
12
+ expect(expectInstance.toBeScalar()).toBe(true);
13
+ });
14
+
15
+ test('Должен возвращать true, если значение является скалярным (boolean)', () => {
16
+ const expectInstance = new Expect(true);
17
+ expect(expectInstance.toBeScalar()).toBe(true);
18
+ });
19
+
20
+ test('Должен возвращать true, если значение является скалярным (symbol)', () => {
21
+ const expectInstance = new Expect(Symbol('symbol'));
22
+ expect(expectInstance.toBeScalar()).toBe(true);
23
+ });
24
+
25
+ test('Должен выбрасывать ошибку, если значение не является скалярным (объект)', () => {
26
+ const expectInstance = new Expect({ a: 1 });
27
+ expect(() => expectInstance.toBeScalar()).toThrow(TypeError);
28
+ expect(() => expectInstance.toBeScalar()).toThrow('');
29
+ });
30
+
31
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является скалярным', () => {
32
+ const expectInstance = new Expect({ a: 1 });
33
+ expect(() => expectInstance.toBeScalar('Значение должно быть скалярным')).toThrow(
34
+ TypeError,
35
+ );
36
+ expect(() => expectInstance.toBeScalar('Значение должно быть скалярным')).toThrow(
37
+ 'Значение должно быть скалярным',
38
+ );
39
+ });
40
+
41
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
42
+ const expectInstance = new Expect(123);
43
+ expect(() => expectInstance.toBeScalar(123)).toThrow(TypeError);
44
+ expect(() => expectInstance.toBeScalar(123)).toThrow(
45
+ 'Параметр "message" должен быть строкой.',
46
+ );
47
+ });
48
+
49
+ test('Должен выбрасывать ошибку, если значение является массивом, а не скалярным', () => {
50
+ const expectInstance = new Expect([1, 2, 3]);
51
+ expect(() => expectInstance.toBeScalar()).toThrow(TypeError);
52
+ });
53
+
54
+ test('Должен выбрасывать ошибку, если значение является null, а не скалярным', () => {
55
+ const expectInstance = new Expect(null);
56
+ expect(() => expectInstance.toBeScalar()).toThrow(TypeError);
57
+ });
58
+
59
+ test('Должен выбрасывать ошибку, если значение является undefined, а не скалярным', () => {
60
+ const expectInstance = new Expect(undefined);
61
+ expect(() => expectInstance.toBeScalar()).toThrow(TypeError);
62
+ });
63
+ });
@@ -0,0 +1,46 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeString класса Expect', () => {
5
+ test('Должен возвращать true, если значение является строкой', () => {
6
+ const expectInstance = new Expect('hello');
7
+ expect(expectInstance.toBeString()).toBe(true);
8
+ });
9
+
10
+ test('Должен выбрасывать ошибку, если значение не является строкой (число)', () => {
11
+ const expectInstance = new Expect(123);
12
+ expect(() => expectInstance.toBeString()).toThrow(TypeError);
13
+ expect(() => expectInstance.toBeString()).toThrow('');
14
+ });
15
+
16
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является строкой', () => {
17
+ const expectInstance = new Expect(123);
18
+ expect(() => expectInstance.toBeString('Значение должно быть строкой')).toThrow(TypeError);
19
+ expect(() => expectInstance.toBeString('Значение должно быть строкой')).toThrow(
20
+ 'Значение должно быть строкой',
21
+ );
22
+ });
23
+
24
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
25
+ const expectInstance = new Expect('hello');
26
+ expect(() => expectInstance.toBeString(123)).toThrow(TypeError);
27
+ expect(() => expectInstance.toBeString(123)).toThrow(
28
+ 'Параметр "message" должен быть строкой.',
29
+ );
30
+ });
31
+
32
+ test('Должен выбрасывать ошибку, если значение является объектом, а не строкой', () => {
33
+ const expectInstance = new Expect({ a: 1 });
34
+ expect(() => expectInstance.toBeString()).toThrow(TypeError);
35
+ });
36
+
37
+ test('Должен выбрасывать ошибку, если значение является массивом, а не строкой', () => {
38
+ const expectInstance = new Expect([1, 2, 3]);
39
+ expect(() => expectInstance.toBeString()).toThrow(TypeError);
40
+ });
41
+
42
+ test('Должен возвращать true, если значение является пустой строкой', () => {
43
+ const expectInstance = new Expect('');
44
+ expect(expectInstance.toBeString()).toBe(true);
45
+ });
46
+ });
@@ -0,0 +1,46 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeSymbol класса Expect', () => {
5
+ test('Должен возвращать true, если значение является символом', () => {
6
+ const expectInstance = new Expect(Symbol('example'));
7
+ expect(expectInstance.toBeSymbol()).toBe(true);
8
+ });
9
+
10
+ test('Должен выбрасывать ошибку, если значение не является символом (строка)', () => {
11
+ const expectInstance = new Expect('example');
12
+ expect(() => expectInstance.toBeSymbol()).toThrow(TypeError);
13
+ expect(() => expectInstance.toBeSymbol()).toThrow('');
14
+ });
15
+
16
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является символом', () => {
17
+ const expectInstance = new Expect('example');
18
+ expect(() => expectInstance.toBeSymbol('Значение должно быть символом')).toThrow(TypeError);
19
+ expect(() => expectInstance.toBeSymbol('Значение должно быть символом')).toThrow(
20
+ 'Значение должно быть символом',
21
+ );
22
+ });
23
+
24
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
25
+ const expectInstance = new Expect(Symbol('example'));
26
+ expect(() => expectInstance.toBeSymbol(123)).toThrow(TypeError);
27
+ expect(() => expectInstance.toBeSymbol(123)).toThrow(
28
+ 'Параметр "message" должен быть строкой.',
29
+ );
30
+ });
31
+
32
+ test('Должен выбрасывать ошибку, если значение является числом, а не символом', () => {
33
+ const expectInstance = new Expect(123);
34
+ expect(() => expectInstance.toBeSymbol()).toThrow(TypeError);
35
+ });
36
+
37
+ test('Должен выбрасывать ошибку, если значение является объектом, а не символом', () => {
38
+ const expectInstance = new Expect({ a: 1 });
39
+ expect(() => expectInstance.toBeSymbol()).toThrow(TypeError);
40
+ });
41
+
42
+ test('Должен возвращать true, если значение является символом (уникальный символ)', () => {
43
+ const expectInstance = new Expect(Symbol.for('unique'));
44
+ expect(expectInstance.toBeSymbol()).toBe(true);
45
+ });
46
+ });
@@ -0,0 +1,50 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toBeUndefined класса Expect', () => {
5
+ test('Должен возвращать true, если значение является undefined', () => {
6
+ let value;
7
+ const expectInstance = new Expect(value);
8
+ expect(expectInstance.toBeUndefined()).toBe(true);
9
+ });
10
+
11
+ test('Должен выбрасывать ошибку, если значение не является undefined (число)', () => {
12
+ const expectInstance = new Expect(123);
13
+ expect(() => expectInstance.toBeUndefined()).toThrow(TypeError);
14
+ expect(() => expectInstance.toBeUndefined()).toThrow('');
15
+ });
16
+
17
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значение не является undefined', () => {
18
+ const expectInstance = new Expect(123);
19
+ expect(() => expectInstance.toBeUndefined('Значение должно быть undefined')).toThrow(
20
+ TypeError,
21
+ );
22
+ expect(() => expectInstance.toBeUndefined('Значение должно быть undefined')).toThrow(
23
+ 'Значение должно быть undefined',
24
+ );
25
+ });
26
+
27
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
28
+ let value;
29
+ const expectInstance = new Expect(value);
30
+ expect(() => expectInstance.toBeUndefined(123)).toThrow(TypeError);
31
+ expect(() => expectInstance.toBeUndefined(123)).toThrow(
32
+ 'Параметр "message" должен быть строкой.',
33
+ );
34
+ });
35
+
36
+ test('Должен выбрасывать ошибку, если значение является строкой, а не undefined', () => {
37
+ const expectInstance = new Expect('undefined');
38
+ expect(() => expectInstance.toBeUndefined()).toThrow(TypeError);
39
+ });
40
+
41
+ test('Должен выбрасывать ошибку, если значение является объектом, а не undefined', () => {
42
+ const expectInstance = new Expect({ a: 1 });
43
+ expect(() => expectInstance.toBeUndefined()).toThrow(TypeError);
44
+ });
45
+
46
+ test('Должен выбрасывать ошибку, если значение является null, а не undefined', () => {
47
+ const expectInstance = new Expect(null);
48
+ expect(() => expectInstance.toBeUndefined()).toThrow(TypeError);
49
+ });
50
+ });
@@ -0,0 +1,66 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toEqual класса Expect', () => {
5
+ test('Должен возвращать true, если значения эквивалентны (числа)', () => {
6
+ const expectInstance = new Expect(5);
7
+ expect(expectInstance.toEqual(5)).toBe(true);
8
+ });
9
+
10
+ test('Должен возвращать true, если значения эквивалентны (строки)', () => {
11
+ const expectInstance = new Expect('hello');
12
+ expect(expectInstance.toEqual('hello')).toBe(true);
13
+ });
14
+
15
+ test('Должен возвращать true, если значения эквивалентны (объекты)', () => {
16
+ const expectInstance = new Expect({ a: 1, b: 2 });
17
+ expect(expectInstance.toEqual({ a: 1, b: 2 })).toBe(true);
18
+ });
19
+
20
+ test('Должен возвращать true, если значения эквивалентны (массивы)', () => {
21
+ const expectInstance = new Expect([1, 2, 3]);
22
+ expect(expectInstance.toEqual([1, 2, 3])).toBe(true);
23
+ });
24
+
25
+ test('Должен выбрасывать ошибку, если значения не эквивалентны (числа)', () => {
26
+ const expectInstance = new Expect(5);
27
+ expect(() => expectInstance.toEqual(10)).toThrow(TypeError);
28
+ expect(() => expectInstance.toEqual(10)).toThrow('');
29
+ });
30
+
31
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значения не эквивалентны', () => {
32
+ const expectInstance = new Expect(5);
33
+ expect(() => expectInstance.toEqual(10, 'Значения не эквивалентны')).toThrow(TypeError);
34
+ expect(() => expectInstance.toEqual(10, 'Значения не эквивалентны')).toThrow(
35
+ 'Значения не эквивалентны',
36
+ );
37
+ });
38
+
39
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
40
+ const expectInstance = new Expect(5);
41
+ expect(() => expectInstance.toEqual(5, 123)).toThrow(TypeError);
42
+ expect(() => expectInstance.toEqual(5, 123)).toThrow(
43
+ 'Параметр "message" должен быть строкой.',
44
+ );
45
+ });
46
+
47
+ test('Должен выбрасывать ошибку, если значения не эквивалентны (объекты)', () => {
48
+ const expectInstance = new Expect({ a: 1, b: 2 });
49
+ expect(() => expectInstance.toEqual({ a: 1, b: 3 })).toThrow(TypeError);
50
+ });
51
+
52
+ test('Должен выбрасывать ошибку, если значения не эквивалентны (массивы)', () => {
53
+ const expectInstance = new Expect([1, 2, 3]);
54
+ expect(() => expectInstance.toEqual([1, 2, 4])).toThrow(TypeError);
55
+ });
56
+
57
+ test('Должен возвращать true, если значения эквивалентны (вложенные объекты)', () => {
58
+ const expectInstance = new Expect({ a: { b: 2 }, c: 3 });
59
+ expect(expectInstance.toEqual({ a: { b: 2 }, c: 3 })).toBe(true);
60
+ });
61
+
62
+ test('Должен выбрасывать ошибку, если значения не эквивалентны (вложенные объекты)', () => {
63
+ const expectInstance = new Expect({ a: { b: 2 }, c: 3 });
64
+ expect(() => expectInstance.toEqual({ a: { b: 3 }, c: 3 })).toThrow(TypeError);
65
+ });
66
+ });
@@ -0,0 +1,73 @@
1
+ import { expect, test, describe } from '@jest/globals';
2
+ import { Expect } from '../../../index.mjs';
3
+
4
+ describe('Метод toStrictEqual класса Expect', () => {
5
+ test('Должен возвращать true, если значения строго эквивалентны (числа)', () => {
6
+ const expectInstance = new Expect(5);
7
+ expect(expectInstance.toStrictEqual(5)).toBe(true);
8
+ });
9
+
10
+ test('Должен возвращать true, если значения строго эквивалентны (строки)', () => {
11
+ const expectInstance = new Expect('hello');
12
+ expect(expectInstance.toStrictEqual('hello')).toBe(true);
13
+ });
14
+
15
+ test('Должен возвращать true, если значения строго эквивалентны (объекты)', () => {
16
+ const expectInstance = new Expect({ a: 1, b: 2 });
17
+ expect(expectInstance.toStrictEqual({ a: 1, b: 2 })).toBe(true);
18
+ });
19
+
20
+ test('Должен возвращать true, если значения строго эквивалентны (массивы)', () => {
21
+ const expectInstance = new Expect([1, 2, 3]);
22
+ expect(expectInstance.toStrictEqual([1, 2, 3])).toBe(true);
23
+ });
24
+
25
+ test('Должен выбрасывать ошибку, если значения не строго эквивалентны (числа)', () => {
26
+ const expectInstance = new Expect(5);
27
+ expect(() => expectInstance.toStrictEqual(10)).toThrow(TypeError);
28
+ expect(() => expectInstance.toStrictEqual(10)).toThrow('');
29
+ });
30
+
31
+ test('Должен выбрасывать ошибку с пользовательским сообщением, если значения не строго эквивалентны', () => {
32
+ const expectInstance = new Expect(5);
33
+ expect(() => expectInstance.toStrictEqual(10, 'Значения не строго эквивалентны')).toThrow(
34
+ TypeError,
35
+ );
36
+ expect(() => expectInstance.toStrictEqual(10, 'Значения не строго эквивалентны')).toThrow(
37
+ 'Значения не строго эквивалентны',
38
+ );
39
+ });
40
+
41
+ test('Должен выбрасывать ошибку, если параметр message не является строкой', () => {
42
+ const expectInstance = new Expect(5);
43
+ expect(() => expectInstance.toStrictEqual(5, 123)).toThrow(TypeError);
44
+ expect(() => expectInstance.toStrictEqual(5, 123)).toThrow(
45
+ 'Параметр "message" должен быть строкой.',
46
+ );
47
+ });
48
+
49
+ test('Должен выбрасывать ошибку, если значения не строго эквивалентны (объекты)', () => {
50
+ const expectInstance = new Expect({ a: 1, b: 2 });
51
+ expect(() => expectInstance.toStrictEqual({ a: 1, b: 3 })).toThrow(TypeError);
52
+ });
53
+
54
+ test('Должен выбрасывать ошибку, если значения не строго эквивалентны (массивы)', () => {
55
+ const expectInstance = new Expect([1, 2, 3]);
56
+ expect(() => expectInstance.toStrictEqual([1, 2, 4])).toThrow(TypeError);
57
+ });
58
+
59
+ test('Должен возвращать true, если значения строго эквивалентны (вложенные объекты)', () => {
60
+ const expectInstance = new Expect({ a: { b: 2 }, c: 3 });
61
+ expect(expectInstance.toStrictEqual({ a: { b: 2 }, c: 3 })).toBe(true);
62
+ });
63
+
64
+ test('Должен выбрасывать ошибку, если значения не строго эквивалентны (вложенные объекты)', () => {
65
+ const expectInstance = new Expect({ a: { b: 2 }, c: 3 });
66
+ expect(() => expectInstance.toStrictEqual({ a: { b: 3 }, c: 3 })).toThrow(TypeError);
67
+ });
68
+
69
+ test('Должен выбрасывать ошибку, если значения эквивалентны, но не строго (число и строка)', () => {
70
+ const expectInstance = new Expect(5);
71
+ expect(() => expectInstance.toStrictEqual('5')).toThrow(TypeError);
72
+ });
73
+ });