@pawells/math-extended 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/package.json +1 -1
  2. package/build/angles.spec.d.ts +0 -2
  3. package/build/angles.spec.d.ts.map +0 -1
  4. package/build/angles.spec.js +0 -147
  5. package/build/angles.spec.js.map +0 -1
  6. package/build/clamp.spec.d.ts +0 -2
  7. package/build/clamp.spec.d.ts.map +0 -1
  8. package/build/clamp.spec.js +0 -19
  9. package/build/clamp.spec.js.map +0 -1
  10. package/build/documentation-validation.spec.d.ts +0 -11
  11. package/build/documentation-validation.spec.d.ts.map +0 -1
  12. package/build/documentation-validation.spec.js +0 -401
  13. package/build/documentation-validation.spec.js.map +0 -1
  14. package/build/interpolation.spec.d.ts +0 -2
  15. package/build/interpolation.spec.d.ts.map +0 -1
  16. package/build/interpolation.spec.js +0 -480
  17. package/build/interpolation.spec.js.map +0 -1
  18. package/build/matrices/arithmetic.spec.d.ts +0 -2
  19. package/build/matrices/arithmetic.spec.d.ts.map +0 -1
  20. package/build/matrices/arithmetic.spec.js +0 -915
  21. package/build/matrices/arithmetic.spec.js.map +0 -1
  22. package/build/matrices/asserts.spec.d.ts +0 -2
  23. package/build/matrices/asserts.spec.d.ts.map +0 -1
  24. package/build/matrices/asserts.spec.js +0 -565
  25. package/build/matrices/asserts.spec.js.map +0 -1
  26. package/build/matrices/core.spec.d.ts +0 -2
  27. package/build/matrices/core.spec.d.ts.map +0 -1
  28. package/build/matrices/core.spec.js +0 -634
  29. package/build/matrices/core.spec.js.map +0 -1
  30. package/build/matrices/decompositions.spec.d.ts +0 -2
  31. package/build/matrices/decompositions.spec.d.ts.map +0 -1
  32. package/build/matrices/decompositions.spec.js +0 -195
  33. package/build/matrices/decompositions.spec.js.map +0 -1
  34. package/build/matrices/linear-algebra.spec.d.ts +0 -2
  35. package/build/matrices/linear-algebra.spec.d.ts.map +0 -1
  36. package/build/matrices/linear-algebra.spec.js +0 -355
  37. package/build/matrices/linear-algebra.spec.js.map +0 -1
  38. package/build/matrices/normalization.spec.d.ts +0 -2
  39. package/build/matrices/normalization.spec.d.ts.map +0 -1
  40. package/build/matrices/normalization.spec.js +0 -335
  41. package/build/matrices/normalization.spec.js.map +0 -1
  42. package/build/matrices/transformations.spec.d.ts +0 -2
  43. package/build/matrices/transformations.spec.d.ts.map +0 -1
  44. package/build/matrices/transformations.spec.js +0 -755
  45. package/build/matrices/transformations.spec.js.map +0 -1
  46. package/build/quaternions/asserts.spec.d.ts +0 -2
  47. package/build/quaternions/asserts.spec.d.ts.map +0 -1
  48. package/build/quaternions/asserts.spec.js +0 -320
  49. package/build/quaternions/asserts.spec.js.map +0 -1
  50. package/build/quaternions/conversions.spec.d.ts +0 -2
  51. package/build/quaternions/conversions.spec.d.ts.map +0 -1
  52. package/build/quaternions/conversions.spec.js +0 -344
  53. package/build/quaternions/conversions.spec.js.map +0 -1
  54. package/build/quaternions/core.spec.d.ts +0 -2
  55. package/build/quaternions/core.spec.d.ts.map +0 -1
  56. package/build/quaternions/core.spec.js +0 -294
  57. package/build/quaternions/core.spec.js.map +0 -1
  58. package/build/quaternions/interpolation.spec.d.ts +0 -2
  59. package/build/quaternions/interpolation.spec.d.ts.map +0 -1
  60. package/build/quaternions/interpolation.spec.js +0 -64
  61. package/build/quaternions/interpolation.spec.js.map +0 -1
  62. package/build/quaternions/predefined.spec.d.ts +0 -2
  63. package/build/quaternions/predefined.spec.d.ts.map +0 -1
  64. package/build/quaternions/predefined.spec.js +0 -35
  65. package/build/quaternions/predefined.spec.js.map +0 -1
  66. package/build/random.spec.d.ts +0 -2
  67. package/build/random.spec.d.ts.map +0 -1
  68. package/build/random.spec.js +0 -267
  69. package/build/random.spec.js.map +0 -1
  70. package/build/vectors/asserts.spec.d.ts +0 -2
  71. package/build/vectors/asserts.spec.d.ts.map +0 -1
  72. package/build/vectors/asserts.spec.js +0 -260
  73. package/build/vectors/asserts.spec.js.map +0 -1
  74. package/build/vectors/core.spec.d.ts +0 -2
  75. package/build/vectors/core.spec.d.ts.map +0 -1
  76. package/build/vectors/core.spec.js +0 -343
  77. package/build/vectors/core.spec.js.map +0 -1
  78. package/build/vectors/interpolation.spec.d.ts +0 -2
  79. package/build/vectors/interpolation.spec.d.ts.map +0 -1
  80. package/build/vectors/interpolation.spec.js +0 -378
  81. package/build/vectors/interpolation.spec.js.map +0 -1
  82. package/build/vectors/predefined.spec.d.ts +0 -2
  83. package/build/vectors/predefined.spec.d.ts.map +0 -1
  84. package/build/vectors/predefined.spec.js +0 -333
  85. package/build/vectors/predefined.spec.js.map +0 -1
@@ -1,565 +0,0 @@
1
- import { AssertMatrix, AssertMatrix1, AssertMatrix2, AssertMatrix3, AssertMatrix4, AssertMatrices, AssertMatrixRow, AssertMatrixValue, MatrixError, } from './asserts.js';
2
- describe('Matrix Assertions', () => {
3
- describe('MatrixError', () => {
4
- test('should create MatrixError with default message', () => {
5
- const error = new MatrixError();
6
- expect(error.name).toBe('MatrixError');
7
- expect(error.message).toBe('');
8
- expect(error instanceof Error).toBe(true);
9
- expect(error instanceof MatrixError).toBe(true);
10
- });
11
- test('should create MatrixError with custom message', () => {
12
- const message = 'Custom matrix error message';
13
- const error = new MatrixError(message);
14
- expect(error.name).toBe('MatrixError');
15
- expect(error.message).toBe(message);
16
- expect(error instanceof Error).toBe(true);
17
- expect(error instanceof MatrixError).toBe(true);
18
- });
19
- test('should maintain proper prototype chain', () => {
20
- const error = new MatrixError('Test');
21
- expect(Object.getPrototypeOf(error)).toBe(MatrixError.prototype);
22
- });
23
- });
24
- describe('AssertMatrix', () => {
25
- describe('valid matrices', () => {
26
- test('should accept valid 2x2 matrix', () => {
27
- const matrix = [[1, 2], [3, 4]];
28
- expect(() => AssertMatrix(matrix)).not.toThrow();
29
- });
30
- test('should accept valid 3x3 matrix', () => {
31
- const matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
32
- expect(() => AssertMatrix(matrix)).not.toThrow();
33
- });
34
- test('should accept rectangular matrix', () => {
35
- const matrix = [[1, 2, 3], [4, 5, 6]];
36
- expect(() => AssertMatrix(matrix)).not.toThrow();
37
- });
38
- test('should accept single element matrix', () => {
39
- const matrix = [[5]];
40
- expect(() => AssertMatrix(matrix)).not.toThrow();
41
- });
42
- test('should accept matrix with zeros', () => {
43
- const matrix = [[0, 0], [0, 0]];
44
- expect(() => AssertMatrix(matrix)).not.toThrow();
45
- });
46
- test('should accept matrix with negative numbers', () => {
47
- const matrix = [[-1, -2], [-3, -4]];
48
- expect(() => AssertMatrix(matrix)).not.toThrow();
49
- });
50
- test('should accept matrix with floating point numbers', () => {
51
- const matrix = [[1.5, 2.7], [3.14, 4.2]];
52
- expect(() => AssertMatrix(matrix)).not.toThrow();
53
- });
54
- });
55
- describe('invalid matrices', () => {
56
- test('should throw for non-array input', () => {
57
- expect(() => AssertMatrix('not a matrix')).toThrow(MatrixError);
58
- expect(() => AssertMatrix(42)).toThrow(MatrixError);
59
- expect(() => AssertMatrix(null)).toThrow(MatrixError);
60
- expect(() => AssertMatrix(undefined)).toThrow(MatrixError);
61
- });
62
- test('should throw for matrix with non-numeric elements', () => {
63
- const matrix = [[1, 'invalid'], [3, 4]];
64
- expect(() => AssertMatrix(matrix)).toThrow(MatrixError);
65
- });
66
- test('should throw for matrix with NaN elements', () => {
67
- const matrix = [[1, NaN], [3, 4]];
68
- expect(() => AssertMatrix(matrix)).toThrow(MatrixError);
69
- });
70
- test('should throw for matrix with non-array rows', () => {
71
- const matrix = [1, 2, 3];
72
- expect(() => AssertMatrix(matrix)).toThrow(MatrixError);
73
- });
74
- });
75
- describe('size constraints', () => {
76
- test('should accept matrix with exact size tuple', () => {
77
- const matrix = [[1, 2, 3], [4, 5, 6]];
78
- expect(() => AssertMatrix(matrix, { size: [2, 3] })).not.toThrow();
79
- });
80
- test('should throw for matrix with wrong size tuple', () => {
81
- const matrix = [[1, 2], [3, 4]];
82
- expect(() => AssertMatrix(matrix, { size: [3, 3] })).toThrow(MatrixError);
83
- });
84
- test('should accept square matrix with exact size number', () => {
85
- const matrix = [[1, 2], [3, 4]];
86
- expect(() => AssertMatrix(matrix, { size: 2 })).not.toThrow();
87
- });
88
- test('should throw for non-square matrix when size number specified', () => {
89
- const matrix = [[1, 2, 3], [4, 5, 6]];
90
- expect(() => AssertMatrix(matrix, { size: 2 })).toThrow(MatrixError);
91
- });
92
- test('should accept matrix with exact rows', () => {
93
- const matrix = [[1, 2], [3, 4], [5, 6]];
94
- expect(() => AssertMatrix(matrix, { rows: 3 })).not.toThrow();
95
- });
96
- test('should throw for matrix with wrong rows', () => {
97
- const matrix = [[1, 2], [3, 4]];
98
- expect(() => AssertMatrix(matrix, { rows: 3 })).toThrow(MatrixError);
99
- });
100
- test('should accept matrix with exact columns', () => {
101
- const matrix = [[1, 2, 3], [4, 5, 6]];
102
- expect(() => AssertMatrix(matrix, { columns: 3 })).not.toThrow();
103
- });
104
- test('should throw for matrix with wrong columns', () => {
105
- const matrix = [[1, 2], [3, 4]];
106
- expect(() => AssertMatrix(matrix, { columns: 3 })).toThrow(MatrixError);
107
- });
108
- test('should accept matrix with minimum rows', () => {
109
- const matrix = [[1, 2], [3, 4], [5, 6]];
110
- expect(() => AssertMatrix(matrix, { minRows: 2 })).not.toThrow();
111
- });
112
- test('should throw for matrix with too few rows', () => {
113
- const matrix = [[1, 2]];
114
- expect(() => AssertMatrix(matrix, { minRows: 3 })).toThrow(MatrixError);
115
- });
116
- test('should accept matrix with maximum rows', () => {
117
- const matrix = [[1, 2], [3, 4]];
118
- expect(() => AssertMatrix(matrix, { maxRows: 3 })).not.toThrow();
119
- });
120
- test('should throw for matrix with too many rows', () => {
121
- const matrix = [[1, 2], [3, 4], [5, 6], [7, 8]];
122
- expect(() => AssertMatrix(matrix, { maxRows: 3 })).toThrow(MatrixError);
123
- });
124
- test('should accept matrix with minimum columns', () => {
125
- const matrix = [[1, 2, 3], [4, 5, 6]];
126
- expect(() => AssertMatrix(matrix, { minColumns: 2 })).not.toThrow();
127
- });
128
- test('should throw for matrix with too few columns', () => {
129
- const matrix = [[1], [2]];
130
- expect(() => AssertMatrix(matrix, { minColumns: 3 })).toThrow(MatrixError);
131
- });
132
- test('should accept matrix with maximum columns', () => {
133
- const matrix = [[1, 2], [3, 4]];
134
- expect(() => AssertMatrix(matrix, { maxColumns: 3 })).not.toThrow();
135
- });
136
- test('should throw for matrix with too many columns', () => {
137
- const matrix = [[1, 2, 3, 4], [5, 6, 7, 8]];
138
- expect(() => AssertMatrix(matrix, { maxColumns: 3 })).toThrow(MatrixError);
139
- });
140
- test('should accept square matrix when square constraint is true', () => {
141
- const matrix = [[1, 2], [3, 4]];
142
- expect(() => AssertMatrix(matrix, { square: true })).not.toThrow();
143
- });
144
- test('should throw for non-square matrix when square constraint is true', () => {
145
- const matrix = [[1, 2, 3], [4, 5, 6]];
146
- expect(() => AssertMatrix(matrix, { square: true })).toThrow(MatrixError);
147
- });
148
- });
149
- describe('combined constraints', () => {
150
- test('should accept matrix meeting all constraints', () => {
151
- const matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
152
- expect(() => AssertMatrix(matrix, {
153
- minRows: 2,
154
- maxRows: 5,
155
- minColumns: 2,
156
- maxColumns: 5,
157
- square: true,
158
- })).not.toThrow();
159
- });
160
- test('should throw when any constraint is violated', () => {
161
- const matrix = [[1, 2, 3], [4, 5, 6]];
162
- expect(() => AssertMatrix(matrix, {
163
- minRows: 2,
164
- square: true,
165
- })).toThrow(MatrixError);
166
- });
167
- });
168
- describe('custom exceptions', () => {
169
- test('should use custom exception message', () => {
170
- const matrix = 'invalid';
171
- expect(() => AssertMatrix(matrix, {}, { message: 'Custom error message' }))
172
- .toThrow('Custom error message');
173
- });
174
- });
175
- });
176
- describe('AssertMatrixRow', () => {
177
- test('should accept valid number array', () => {
178
- const row = [1, 2, 3, 4];
179
- expect(() => AssertMatrixRow(row)).not.toThrow();
180
- });
181
- test('should accept empty array', () => {
182
- const row = [];
183
- expect(() => AssertMatrixRow(row)).not.toThrow();
184
- });
185
- test('should accept array with floating point numbers', () => {
186
- const row = [1.5, 2.7, 3.14];
187
- expect(() => AssertMatrixRow(row)).not.toThrow();
188
- });
189
- test('should accept array with negative numbers', () => {
190
- const row = [-1, -2.5, -3];
191
- expect(() => AssertMatrixRow(row)).not.toThrow();
192
- });
193
- test('should accept array with zeros', () => {
194
- const row = [0, 0, 0];
195
- expect(() => AssertMatrixRow(row)).not.toThrow();
196
- });
197
- test('should throw for non-array input', () => {
198
- expect(() => AssertMatrixRow('not an array')).toThrow(MatrixError);
199
- expect(() => AssertMatrixRow(42)).toThrow(MatrixError);
200
- expect(() => AssertMatrixRow(null)).toThrow(MatrixError);
201
- expect(() => AssertMatrixRow(undefined)).toThrow(MatrixError);
202
- });
203
- test('should throw for array with non-numeric elements', () => {
204
- const row = [1, 'invalid', 3];
205
- expect(() => AssertMatrixRow(row)).toThrow(MatrixError);
206
- });
207
- test('should throw for array with NaN elements', () => {
208
- const row = [1, NaN, 3];
209
- expect(() => AssertMatrixRow(row)).toThrow(MatrixError);
210
- });
211
- test('should throw for array with Infinity elements', () => {
212
- const row = [1, Infinity, 3];
213
- expect(() => AssertMatrixRow(row)).toThrow(MatrixError);
214
- });
215
- test('should throw for array with -Infinity elements', () => {
216
- const row = [1, -Infinity, 3];
217
- expect(() => AssertMatrixRow(row)).toThrow(MatrixError);
218
- });
219
- test('should include row index in error message when provided', () => {
220
- const row = 'invalid';
221
- expect(() => AssertMatrixRow(row, { rowIndex: 2 }))
222
- .toThrow('Matrix row at row 2 must be an array');
223
- });
224
- });
225
- describe('AssertMatrixValue', () => {
226
- test('should accept valid finite numbers', () => {
227
- expect(() => AssertMatrixValue(42)).not.toThrow();
228
- expect(() => AssertMatrixValue(0)).not.toThrow();
229
- expect(() => AssertMatrixValue(-5)).not.toThrow();
230
- expect(() => AssertMatrixValue(3.14)).not.toThrow();
231
- expect(() => AssertMatrixValue(-2.7)).not.toThrow();
232
- });
233
- test('should throw for non-numeric values', () => {
234
- expect(() => AssertMatrixValue('string')).toThrow(MatrixError);
235
- expect(() => AssertMatrixValue(true)).toThrow(MatrixError);
236
- expect(() => AssertMatrixValue([])).toThrow(MatrixError);
237
- expect(() => AssertMatrixValue({})).toThrow(MatrixError);
238
- expect(() => AssertMatrixValue(null)).toThrow(MatrixError);
239
- expect(() => AssertMatrixValue(undefined)).toThrow(MatrixError);
240
- });
241
- test('should throw for NaN', () => {
242
- expect(() => AssertMatrixValue(NaN)).toThrow(MatrixError);
243
- });
244
- test('should throw for Infinity', () => {
245
- expect(() => AssertMatrixValue(Infinity)).toThrow(MatrixError);
246
- });
247
- test('should throw for -Infinity', () => {
248
- expect(() => AssertMatrixValue(-Infinity)).toThrow(MatrixError);
249
- });
250
- test('should include position in error message when provided', () => {
251
- expect(() => AssertMatrixValue('invalid', { rowIndex: 1, columnIndex: 2 }))
252
- .toThrow('Matrix value at row 1, column 2 must be a finite number');
253
- });
254
- });
255
- describe('AssertMatrices', () => {
256
- describe('without transposition', () => {
257
- test('should accept matrices with identical dimensions', () => {
258
- const a = [[1, 2], [3, 4]];
259
- const b = [[5, 6], [7, 8]];
260
- expect(() => AssertMatrices(a, b)).not.toThrow();
261
- });
262
- test('should accept larger matrices with identical dimensions', () => {
263
- const a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
264
- const b = [[9, 8, 7], [6, 5, 4], [3, 2, 1]];
265
- expect(() => AssertMatrices(a, b)).not.toThrow();
266
- });
267
- test('should accept single element matrices', () => {
268
- const a = [[1]];
269
- const b = [[2]];
270
- expect(() => AssertMatrices(a, b)).not.toThrow();
271
- });
272
- test('should throw for matrices with different row counts', () => {
273
- const a = [[1, 2], [3, 4]];
274
- const b = [[5, 6], [7, 8], [9, 10]];
275
- expect(() => AssertMatrices(a, b)).toThrow(MatrixError);
276
- });
277
- test('should throw for matrices with different column counts', () => {
278
- const a = [[1, 2, 3], [4, 5, 6]];
279
- const b = [[7, 8], [9, 10]];
280
- expect(() => AssertMatrices(a, b)).toThrow(MatrixError);
281
- });
282
- test('should throw for matrices with completely different dimensions', () => {
283
- const a = [[1, 2]];
284
- const b = [[3], [4], [5]];
285
- expect(() => AssertMatrices(a, b)).toThrow(MatrixError);
286
- });
287
- });
288
- describe('with transposition allowed', () => {
289
- test('should accept matrices compatible for standard multiplication', () => {
290
- const a = [[1, 2], [3, 4]]; // 2x2
291
- const b = [[5, 6], [7, 8]]; // 2x2
292
- expect(() => AssertMatrices(a, b, { transposition: true })).not.toThrow();
293
- });
294
- test('should accept matrices where A columns = B rows', () => {
295
- const a = [[1, 2, 3], [4, 5, 6]]; // 3x2
296
- const b = [[7, 8], [9, 10], [11, 12]]; // 2x3
297
- expect(() => AssertMatrices(a, b, { transposition: true })).not.toThrow();
298
- });
299
- test('should accept matrices where A columns = B columns (B transposed)', () => {
300
- const a = [[1, 2], [3, 4]]; // 2x2
301
- const b = [[5, 7], [6, 8]]; // 2x2, could be transposed to 2x2
302
- expect(() => AssertMatrices(a, b, { transposition: true })).not.toThrow();
303
- });
304
- test('should accept matrices where A rows = B rows (A transposed)', () => {
305
- const a = [[1, 2], [3, 4]]; // 2x2
306
- const b = [[5, 6], [7, 8]]; // 2x2
307
- expect(() => AssertMatrices(a, b, { transposition: true })).not.toThrow();
308
- });
309
- test('should accept matrices where A rows = B columns (both transposed)', () => {
310
- const a = [[1, 2, 3], [4, 5, 6]]; // 3x2
311
- const b = [[7, 8, 9], [10, 11, 12]]; // 3x2
312
- expect(() => AssertMatrices(a, b, { transposition: true })).not.toThrow();
313
- });
314
- test('should throw for completely incompatible matrices', () => {
315
- const a = [[1, 2], [3, 4], [5, 6]]; // 2x3
316
- const b = [[7], [8], [9], [10]]; // 1x4
317
- expect(() => AssertMatrices(a, b, { transposition: true })).toThrow(MatrixError);
318
- });
319
- });
320
- describe('invalid inputs', () => {
321
- test('should throw for invalid first matrix', () => {
322
- const a = 'invalid';
323
- const b = [[1, 2], [3, 4]];
324
- expect(() => AssertMatrices(a, b)).toThrow(MatrixError);
325
- });
326
- test('should throw for invalid second matrix', () => {
327
- const a = [[1, 2], [3, 4]];
328
- const b = 'invalid';
329
- expect(() => AssertMatrices(a, b)).toThrow(MatrixError);
330
- });
331
- test('should throw for both invalid matrices', () => {
332
- const a = 'invalid';
333
- const b = 'also invalid';
334
- expect(() => AssertMatrices(a, b)).toThrow(MatrixError);
335
- });
336
- });
337
- });
338
- describe('AssertMatrix1', () => {
339
- test('should accept valid 1x1 matrix', () => {
340
- const matrix = [[5]];
341
- expect(() => AssertMatrix1(matrix)).not.toThrow();
342
- });
343
- test('should accept 1x1 matrix with zero', () => {
344
- const matrix = [[0]];
345
- expect(() => AssertMatrix1(matrix)).not.toThrow();
346
- });
347
- test('should accept 1x1 matrix with negative number', () => {
348
- const matrix = [[-3.14]];
349
- expect(() => AssertMatrix1(matrix)).not.toThrow();
350
- });
351
- test('should throw for 2x2 matrix', () => {
352
- const matrix = [[1, 2], [3, 4]];
353
- expect(() => AssertMatrix1(matrix)).toThrow(MatrixError);
354
- });
355
- test('should throw for 1x2 matrix', () => {
356
- const matrix = [[1, 2]];
357
- expect(() => AssertMatrix1(matrix)).toThrow(MatrixError);
358
- });
359
- test('should throw for 2x1 matrix', () => {
360
- const matrix = [[1], [2]];
361
- expect(() => AssertMatrix1(matrix)).toThrow(MatrixError);
362
- });
363
- test('should throw for empty matrix', () => {
364
- const matrix = [];
365
- expect(() => AssertMatrix1(matrix)).toThrow(MatrixError);
366
- });
367
- test('should throw for non-matrix input', () => {
368
- expect(() => AssertMatrix1('invalid')).toThrow(MatrixError);
369
- expect(() => AssertMatrix1(42)).toThrow(MatrixError);
370
- });
371
- });
372
- describe('AssertMatrix2', () => {
373
- test('should accept valid 2x2 matrix', () => {
374
- const matrix = [[1, 2], [3, 4]];
375
- expect(() => AssertMatrix2(matrix)).not.toThrow();
376
- });
377
- test('should accept 2x2 matrix with zeros', () => {
378
- const matrix = [[0, 0], [0, 0]];
379
- expect(() => AssertMatrix2(matrix)).not.toThrow();
380
- });
381
- test('should accept 2x2 matrix with negative numbers', () => {
382
- const matrix = [[-1, -2], [-3, -4]];
383
- expect(() => AssertMatrix2(matrix)).not.toThrow();
384
- });
385
- test('should accept 2x2 matrix with floating point numbers', () => {
386
- const matrix = [[1.5, 2.7], [3.14, 4.2]];
387
- expect(() => AssertMatrix2(matrix)).not.toThrow();
388
- });
389
- test('should throw for 1x1 matrix', () => {
390
- const matrix = [[5]];
391
- expect(() => AssertMatrix2(matrix)).toThrow(MatrixError);
392
- });
393
- test('should throw for 3x3 matrix', () => {
394
- const matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
395
- expect(() => AssertMatrix2(matrix)).toThrow(MatrixError);
396
- });
397
- test('should throw for 2x3 matrix', () => {
398
- const matrix = [[1, 2, 3], [4, 5, 6]];
399
- expect(() => AssertMatrix2(matrix)).toThrow(MatrixError);
400
- });
401
- test('should throw for 3x2 matrix', () => {
402
- const matrix = [[1, 2], [3, 4], [5, 6]];
403
- expect(() => AssertMatrix2(matrix)).toThrow(MatrixError);
404
- });
405
- test('should throw for non-matrix input', () => {
406
- expect(() => AssertMatrix2('invalid')).toThrow(MatrixError);
407
- expect(() => AssertMatrix2([])).toThrow(MatrixError);
408
- });
409
- });
410
- describe('AssertMatrix3', () => {
411
- test('should accept valid 3x3 matrix', () => {
412
- const matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
413
- expect(() => AssertMatrix3(matrix)).not.toThrow();
414
- });
415
- test('should accept 3x3 identity matrix', () => {
416
- const matrix = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];
417
- expect(() => AssertMatrix3(matrix)).not.toThrow();
418
- });
419
- test('should accept 3x3 matrix with mixed numbers', () => {
420
- const matrix = [[-1.5, 0, 2.7], [3, -4, 5.14], [0, 7, -8.9]];
421
- expect(() => AssertMatrix3(matrix)).not.toThrow();
422
- });
423
- test('should throw for 2x2 matrix', () => {
424
- const matrix = [[1, 2], [3, 4]];
425
- expect(() => AssertMatrix3(matrix)).toThrow(MatrixError);
426
- });
427
- test('should throw for 4x4 matrix', () => {
428
- const matrix = [
429
- [1, 2, 3, 4],
430
- [5, 6, 7, 8],
431
- [9, 10, 11, 12],
432
- [13, 14, 15, 16],
433
- ];
434
- expect(() => AssertMatrix3(matrix)).toThrow(MatrixError);
435
- });
436
- test('should throw for 3x2 matrix', () => {
437
- const matrix = [[1, 2], [3, 4], [5, 6]];
438
- expect(() => AssertMatrix3(matrix)).toThrow(MatrixError);
439
- });
440
- test('should throw for 2x3 matrix', () => {
441
- const matrix = [[1, 2, 3], [4, 5, 6]];
442
- expect(() => AssertMatrix3(matrix)).toThrow(MatrixError);
443
- });
444
- test('should throw for non-matrix input', () => {
445
- expect(() => AssertMatrix3('invalid')).toThrow(MatrixError);
446
- expect(() => AssertMatrix3(null)).toThrow(MatrixError);
447
- });
448
- });
449
- describe('AssertMatrix4', () => {
450
- test('should accept valid 4x4 matrix', () => {
451
- const matrix = [
452
- [1, 2, 3, 4],
453
- [5, 6, 7, 8],
454
- [9, 10, 11, 12],
455
- [13, 14, 15, 16],
456
- ];
457
- expect(() => AssertMatrix4(matrix)).not.toThrow();
458
- });
459
- test('should accept 4x4 identity matrix', () => {
460
- const matrix = [
461
- [1, 0, 0, 0],
462
- [0, 1, 0, 0],
463
- [0, 0, 1, 0],
464
- [0, 0, 0, 1],
465
- ];
466
- expect(() => AssertMatrix4(matrix)).not.toThrow();
467
- });
468
- test('should accept 4x4 matrix with mixed numbers', () => {
469
- const matrix = [
470
- [-1.5, 0, 2.7, -3],
471
- [4, -5.14, 6, 0],
472
- [0, 7.2, -8, 9],
473
- [10, 0, -11.5, 12],
474
- ];
475
- expect(() => AssertMatrix4(matrix)).not.toThrow();
476
- });
477
- test('should throw for 3x3 matrix', () => {
478
- const matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
479
- expect(() => AssertMatrix4(matrix)).toThrow(MatrixError);
480
- });
481
- test('should throw for 5x5 matrix', () => {
482
- const matrix = [
483
- [1, 2, 3, 4, 5],
484
- [6, 7, 8, 9, 10],
485
- [11, 12, 13, 14, 15],
486
- [16, 17, 18, 19, 20],
487
- [21, 22, 23, 24, 25],
488
- ];
489
- expect(() => AssertMatrix4(matrix)).toThrow(MatrixError);
490
- });
491
- test('should throw for 4x3 matrix', () => {
492
- const matrix = [
493
- [1, 2, 3],
494
- [4, 5, 6],
495
- [7, 8, 9],
496
- [10, 11, 12],
497
- ];
498
- expect(() => AssertMatrix4(matrix)).toThrow(MatrixError);
499
- });
500
- test('should throw for 3x4 matrix', () => {
501
- const matrix = [
502
- [1, 2, 3, 4],
503
- [5, 6, 7, 8],
504
- [9, 10, 11, 12],
505
- ];
506
- expect(() => AssertMatrix4(matrix)).toThrow(MatrixError);
507
- });
508
- test('should throw for non-matrix input', () => {
509
- expect(() => AssertMatrix4('invalid')).toThrow(MatrixError);
510
- expect(() => AssertMatrix4(undefined)).toThrow(MatrixError);
511
- });
512
- });
513
- describe('error message specificity', () => {
514
- test('AssertMatrix should provide specific error messages for size constraints', () => {
515
- const matrix = [[1, 2], [3, 4]]; // 2x2
516
- expect(() => AssertMatrix(matrix, { size: [3, 3] }))
517
- .toThrow('Matrix has 2 rows, expected exactly 3');
518
- expect(() => AssertMatrix(matrix, { size: 3 }))
519
- .toThrow('Square matrix has 2 rows, expected exactly 3');
520
- expect(() => AssertMatrix(matrix, { rows: 3 }))
521
- .toThrow('Matrix has 2 rows, expected exactly 3');
522
- expect(() => AssertMatrix(matrix, { columns: 3 }))
523
- .toThrow('Matrix has 2 columns, expected exactly 3');
524
- expect(() => AssertMatrix(matrix, { minRows: 5 }))
525
- .toThrow('Matrix has 2 rows, minimum required is 5');
526
- expect(() => AssertMatrix(matrix, { maxRows: 1 }))
527
- .toThrow('Matrix has 2 rows, maximum allowed is 1');
528
- expect(() => AssertMatrix(matrix, { minColumns: 5 }))
529
- .toThrow('Matrix has 2 columns, minimum required is 5');
530
- expect(() => AssertMatrix(matrix, { maxColumns: 1 }))
531
- .toThrow('Matrix has 2 columns, maximum allowed is 1');
532
- expect(() => AssertMatrix([[1, 2, 3], [4, 5, 6]], { square: true }))
533
- .toThrow('Matrix must be square but has 2 rows and 3 columns');
534
- });
535
- test('AssertMatrices should provide specific error messages', () => {
536
- const a = [[1, 2], [3, 4]]; // 2x2
537
- const b = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; // 3x3
538
- expect(() => AssertMatrices(a, b))
539
- .toThrow('Matrices must have identical dimensions for addition/subtraction. Matrix A is 2×2, Matrix B is 3×3');
540
- const c = [[1, 2], [3, 4], [5, 6]]; // 3x2
541
- const d = [[1], [2], [3], [4]]; // 4x1
542
- expect(() => AssertMatrices(c, d, { transposition: true }))
543
- .toThrow('Matrices are not compatible for multiplication even with transposition. Matrix A is 3×2, Matrix B is 4×1');
544
- });
545
- });
546
- describe('edge cases', () => {
547
- test('should throw for empty matrix', () => {
548
- const emptyMatrix = [];
549
- expect(() => AssertMatrix(emptyMatrix)).toThrow('Matrix must have at least one row and one column');
550
- });
551
- test('should throw for matrix with empty rows', () => {
552
- const matrix = [[], []];
553
- expect(() => AssertMatrix(matrix)).toThrow('Matrix must have at least one row and one column');
554
- });
555
- test('should handle very large numbers', () => {
556
- const matrix = [[Number.MAX_VALUE, Number.MIN_VALUE]];
557
- expect(() => AssertMatrix(matrix)).not.toThrow();
558
- });
559
- test('should handle very small numbers', () => {
560
- const matrix = [[Number.EPSILON, -Number.EPSILON]];
561
- expect(() => AssertMatrix(matrix)).not.toThrow();
562
- });
563
- });
564
- });
565
- //# sourceMappingURL=asserts.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"asserts.spec.js","sourceRoot":"","sources":["../../src/matrices/asserts.spec.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=core.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.spec.d.ts","sourceRoot":"","sources":["../../src/matrices/core.spec.ts"],"names":[],"mappings":""}