From 48405b4da0b6a204975d8514fe92f5d2dc270edb Mon Sep 17 00:00:00 2001 From: Philip Le Riche <7701190+p-leriche@users.noreply.github.com> Date: Wed, 25 Feb 2026 21:44:06 +0000 Subject: [PATCH] Add tests for Modular Inverse operation --- tests/operations/tests/ModularInverse.mjs | 78 +++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 tests/operations/tests/ModularInverse.mjs diff --git a/tests/operations/tests/ModularInverse.mjs b/tests/operations/tests/ModularInverse.mjs new file mode 100644 index 00000000..49398c85 --- /dev/null +++ b/tests/operations/tests/ModularInverse.mjs @@ -0,0 +1,78 @@ +/** + * Modular Inverse tests. + * + * @author p-leriche [philip.leriche@cantab.net] + * + * @copyright Crown Copyright 2025 + * @license Apache-2.0 + */ +import TestRegister from "../../lib/TestRegister.mjs"; + +TestRegister.addTests([ + { + name: "Modular Inverse: basic example (3 mod 11)", + input: "", + expectedOutput: "4", + recipeConfig: [ + { + op: "Modular Inverse", + args: ["3", "11"], + }, + ], + }, + { + name: "Modular Inverse: another coprime pair (7 mod 26)", + input: "", + expectedOutput: "15", + recipeConfig: [ + { + op: "Modular Inverse", + args: ["7", "26"], + }, + ], + }, + { + name: "Modular Inverse: hexadecimal input (0x10 mod 0x11)", + input: "", + expectedOutput: "16", + recipeConfig: [ + { + op: "Modular Inverse", + args: ["0x10", "0x11"], + }, + ], + }, + { + name: "Modular Inverse: using input field for value", + input: "5", + expectedOutput: "21", + recipeConfig: [ + { + op: "Modular Inverse", + args: ["", "26"], + }, + ], + }, + { + name: "Modular Inverse: using input field for modulus", + input: "17", + expectedOutput: "38", + recipeConfig: [ + { + op: "Modular Inverse", + args: ["5", ""], + }, + ], + }, + { + name: "Modular Inverse: large number (RSA-like)", + input: "", + expectedOutput: "4969696969697", + recipeConfig: [ + { + op: "Modular Inverse", + args: ["65537", "9999999999999"], + }, + ], + }, +]);