From cd93aebbff6b19a9e6f8fa6cc583e0f628df1f66 Mon Sep 17 00:00:00 2001 From: Mark Spanbroek Date: Mon, 30 Oct 2023 13:06:44 +0100 Subject: [PATCH] Add tests for BigInt unmarshalling Checks little & big endian w.r.t. padding. --- tests/math_bigints/t_io_bigints.nim | 34 +++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/math_bigints/t_io_bigints.nim b/tests/math_bigints/t_io_bigints.nim index e43c3d2..3a94ca7 100644 --- a/tests/math_bigints/t_io_bigints.nim +++ b/tests/math_bigints/t_io_bigints.nim @@ -120,4 +120,38 @@ proc main() = let hex = y.toHex() check: pHex == hex + + suite "IO Marshalling - BigInt" & " [" & $WordBitWidth & "-bit words]": + test "unmarshalling byte array": + block: # Big-Endian with byte padding + let bytes = [0x12'u8, 0x34'u8, 0x56'u8] + let x = BigInt[256].unmarshal(bytes, bigEndian) + check x.toHex() == "0x0000000000000000000000000000000000000000000000000000000000123456" + + block: # Big-Endian with bit padding + let bytes = [0x12'u8, 0x34'u8, 0x56'u8] + let x = BigInt[254].unmarshal(bytes, bigEndian) + check x.toHex() == "0x0000000000000000000000000000000000000000000000000000000000123456" + + block: # Big-Endian without padding + var bytes: array[32, byte] + bytes[^3..^1] = [0x12'u8, 0x34'u8, 0x56'u8] + let x = BigInt[256].unmarshal(bytes, bigEndian) + check x.toHex() == "0x0000000000000000000000000000000000000000000000000000000000123456" + + block: # Little-Endian with byte padding + let bytes = [0x12'u8, 0x34'u8, 0x56'u8] + let x = BigInt[256].unmarshal(bytes, littleEndian) + check x.toHex() == "0x0000000000000000000000000000000000000000000000000000000000563412" + + block: # Little-Endian with bit padding + let bytes = [0x12'u8, 0x34'u8, 0x56'u8] + let x = BigInt[254].unmarshal(bytes, littleEndian) + check x.toHex() == "0x0000000000000000000000000000000000000000000000000000000000563412" + + block: # Little-Endian without padding + var bytes: array[32, byte] + bytes[^3..^1] = [0x12'u8, 0x34'u8, 0x56'u8] + let x = BigInt[256].unmarshal(bytes, littleEndian) + check x.toHex() == "0x5634120000000000000000000000000000000000000000000000000000000000" main()