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