import { rowEchelon } from '../RowEchelon' describe('Determinant', () => { const tolerance = 0.000001 test.each([ [ [ [8, 1, 3, 5], [4, 6, 8, 2], [3, 5, 6, 8] ], [ [1, 0.125, 0.375, 0.625], [0, 1, 1.18182, -0.09091], [0, 0, 1, -11.0769] ] ], [ [ [6, 8, 1, 3, 5], [1, 4, 6, 8, 2], [0, 3, 5, 6, 8], [2, 5, 9, 7, 8], [5, 5, 7, 0, 1] ], [ [1, 1.33333, 0.16667, 0.5, 0.83333], [0, 1, 2.1875, 2.8125, 0.4375], [0, 0, 1, 1.56, -4.28003], [0, 0, 0, 1, -3.3595], [0, 0, 0, 0, 1] ] ], [ [ [1, 3, 5], [6, 8, 2], [5, 6, 8], [7, 9, 9], [5, 0, 6] ], [ [1, 3, 5], [0, 1, 2.8], [0, 0, 1], [0, 0, 0], [0, 0, 0] ] ], [ [ [0, 7, 8, 1, 3, 5], [0, 6, 4, 6, 8, 2], [0, 7, 3, 5, 6, 8], [6, 8, 1, 0, 0, 4], [3, 3, 5, 7, 3, 1], [1, 2, 1, 0, 9, 7], [8, 8, 0, 2, 3, 1] ], [ [1, 1.33333, 0.16667, 0, 0, 0.66667], [0, 1, 0.66667, 1, 1.33333, 0.33333], [0, 0, 1, 1.2, 1.99999, -3.4], [0, 0, 0, 1, 1.3, -1.4], [0, 0, 0, 0, 1, -2.32854], [0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0] ] ] ])('Should return the matrix in row echelon form.', (matrix, expected) => { for (let i = 0; i < matrix.length; i++) { for (let j = 0; j < matrix[i].length; j++) { expect(rowEchelon(matrix)[i][j]).toBeCloseTo(expected[i][j], tolerance) } } }) test.each([ [ [ [8, 1, 3, 5], [4, 6, 8, 2, 7], [3, 5, 6, 8] ], 'Input is not a valid 2D matrix.' ] ])('Should return the error message.', (matrix, expected) => { expect(() => rowEchelon(matrix)).toThrowError(expected) }) })