1with AUnit.Assertions; 2with Crypto.Types.Big_Numbers; 3with Big_Number_Constants; 4 5pragma Elaborate_All(Crypto.Types.Big_Numbers); 6pragma Optimize(Time); 7 8package body Test.Big_Number_Inc is 9 10------------------------------------------------------------------------------------ 11-------------------------------- Type - Declaration -------------------------------- 12------------------------------------------------------------------------------------ 13 14 package Big is new Crypto.Types.Big_Numbers(4096); 15 use Big; 16 use Big.Utils; 17 18 use Big_Number_Constants; 19 20 X_1025, X_1024, X_768, X_1, X_0, Q : Big_Unsigned; 21 22------------------------------------------------------------------------------------ 23------------------------------------ Constants ------------------------------------- 24------------------------------------------------------------------------------------ 25 26 procedure Constants is 27 begin 28 X_1025 := To_Big_Unsigned(Cons_1025); 29 X_1024 := To_Big_Unsigned(Cons_1024); 30 X_768 := To_Big_Unsigned(Cons_768); 31 X_1 := To_Big_Unsigned("1"); 32 X_0 := To_Big_Unsigned("0"); 33 end Constants; 34 35------------------------------------------------------------------------------------ 36---------------------------- Register Big_Number Test 1 ---------------------------- 37------------------------------------------------------------------------------------ 38 39 procedure Register_Tests(T : in out Big_Number_Test) is 40 use Test_Cases.Registration; 41 begin 42 43 Register_Routine(T, Big_Number_Test1'Access,"Increase with 4096 Bit"); 44 Register_Routine(T, Big_Number_Test2'Access,"Increase with 1024 and 1025 Bit"); 45 Register_Routine(T, Big_Number_Test3'Access,"Increase with 768 Bit"); 46 Register_Routine(T, Big_Number_Test4'Access,"Increase with 1 Bit"); 47 Register_Routine(T, Big_Number_Test5'Access,"Increase with 0 Bit"); 48 49 end Register_Tests; 50 51------------------------------------------------------------------------------------ 52------------------------------- Name Big Number Tests ------------------------------ 53------------------------------------------------------------------------------------ 54 55 function Name(T : Big_Number_Test) return Test_String is 56 begin 57 return new String'("Big Number Tests"); 58 end Name; 59 60------------------------------------------------------------------------------------ 61------------------------------------ Start Tests ----------------------------------- 62------------------------------------------------------------------------------------ 63-------------------------------------- Test 1 -------------------------------------- 64------------------------------------------------------------------------------------ 65 66 procedure Big_Number_Test1(T : in out Test_Cases.Test_Case'Class) is 67 use AUnit.Assertions; 68 begin 69 70 Constants; 71 Q := Big_Unsigned_Last; 72 Inc(Q); 73 Assert(Q = 0, "Failed."); 74 75 end Big_Number_Test1; 76 77------------------------------------------------------------------------------------ 78-------------------------------------- Test 2 -------------------------------------- 79------------------------------------------------------------------------------------ 80 81 procedure Big_Number_Test2(T : in out Test_Cases.Test_Case'Class) is 82 use AUnit.Assertions; 83 begin 84 85 Q := X_1024; 86 Inc(Q); 87 Assert(Q = X_1025, "Failed."); 88 89 end Big_Number_Test2; 90 91------------------------------------------------------------------------------------ 92-------------------------------------- Test 3 -------------------------------------- 93------------------------------------------------------------------------------------ 94 95 procedure Big_Number_Test3(T : in out Test_Cases.Test_Case'Class) is 96 use AUnit.Assertions; 97 begin 98 99 Q := X_768; 100 Inc(Q); 101 Assert(Q = X_768 + 1, "Failed."); 102 103 end Big_Number_Test3; 104 105------------------------------------------------------------------------------------ 106-------------------------------------- Test 4 -------------------------------------- 107------------------------------------------------------------------------------------ 108 109 procedure Big_Number_Test4(T : in out Test_Cases.Test_Case'Class) is 110 use AUnit.Assertions; 111 begin 112 113 Q := X_1; 114 Inc(Q); 115 Assert(Q = 2, "Failed."); 116 117 end Big_Number_Test4; 118 119------------------------------------------------------------------------------------ 120-------------------------------------- Test 5 -------------------------------------- 121------------------------------------------------------------------------------------ 122 123 procedure Big_Number_Test5(T : in out Test_Cases.Test_Case'Class) is 124 use AUnit.Assertions; 125 begin 126 127 Q := X_0; 128 Inc(Q); 129 Assert(Q = X_1, "Failed."); 130 131 end Big_Number_Test5; 132 133------------------------------------------------------------------------------------ 134 135end Test.Big_Number_Inc; 136