|
| 1 | +describe("Solve simultaneous congruences", function() |
| 2 | + local ssc = require("math.solve_simultaneous_congruences") |
| 3 | + |
| 4 | + it("should handle cases with solutions", function() |
| 5 | + assert.equal(0, ssc({ { 0, 3 } })) |
| 6 | + assert.equal(65, ssc({ { 1, 8 }, { 2, 9 } })) |
| 7 | + assert.equal(1, ssc({ { 1, 54 }, { 1, 73 }, { 1, 997 }, { 1, 102353 } })) |
| 8 | + assert.equal(39, ssc({ { 0, 3 }, { 3, 4 }, { 4, 5 } })) |
| 9 | + assert.equal(23, ssc({ { 2, 3 }, { 3, 5 }, { 2, 7 } })) |
| 10 | + assert.equal(34, ssc({ { 1, 3 }, { 4, 5 }, { 6, 7 } })) |
| 11 | + assert.equal(388, ssc({ { 3, 7 }, { 3, 5 }, { 4, 12 } })) |
| 12 | + assert.equal(87, ssc({ { 2, 5 }, { 3, 7 }, { 10, 11 } })) |
| 13 | + assert.equal(29, ssc({ { 2, 3 }, { 1, 4 }, { 7, 11 } })) |
| 14 | + assert.equal(125, ssc({ { 6, 7 }, { 8, 9 }, { 4, 11 }, { 8, 13 } })) |
| 15 | + assert.equal(89469, ssc({ { 6, 11 }, { 13, 16 }, { 9, 21 }, { 19, 25 } })) |
| 16 | + end) |
| 17 | + |
| 18 | + it("should handle cases without solution", function() |
| 19 | + assert.equal(nil, ssc({ { 5, 17 }, { 4, 17 } })) |
| 20 | + assert.equal(nil, ssc({ { 3, 4 }, { 0, 6 } })) |
| 21 | + assert.equal(nil, ssc({ { 3, 13 }, { 7, 1 } })) |
| 22 | + end) |
| 23 | + |
| 24 | + it("should throw error when a modulus is zero", function() |
| 25 | + assert.has_error(function() |
| 26 | + ssc({ { 0, 0 } }) |
| 27 | + end) |
| 28 | + end) |
| 29 | + |
| 30 | + it("should throw error when a modulus is negative", function() |
| 31 | + assert.has_error(function() |
| 32 | + ssc({ { 0, -1 } }) |
| 33 | + end) |
| 34 | + end) |
| 35 | +end) |
0 commit comments