-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathSubOpTest.h
More file actions
106 lines (90 loc) · 2.64 KB
/
SubOpTest.h
File metadata and controls
106 lines (90 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#define BOOST_TEST_MODULE SubOpTest
#include "../IntX.h"
#include "../Utils/Constants.h"
#include <vector>
#include <boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_SUITE(SubOpTest)
BOOST_AUTO_TEST_CASE(Sub2IntX)
{
IntX int1 = IntX(3);
IntX int2 = IntX(5);
BOOST_CHECK(int1 - int2 == -2);
BOOST_CHECK((IntX)3 - int2 == -2);
BOOST_CHECK(int1 - 5 == -2);
}
BOOST_AUTO_TEST_CASE(Sub2IntXNeg)
{
IntX int1 = IntX(-3);
IntX int2 = IntX(-5);
BOOST_CHECK(int1 - int2 == 2);
BOOST_CHECK((IntX)-3 - int2 == 2);
BOOST_CHECK(int1 - (-5) == 2);
}
BOOST_AUTO_TEST_CASE(SubIntIntX)
{
IntX intX = IntX(3);
BOOST_CHECK(intX - 5 == -2);
}
BOOST_AUTO_TEST_CASE(SubIntXInt)
{
IntX intX = IntX(3);
BOOST_CHECK((IntX)5 - intX == 2);
}
BOOST_AUTO_TEST_CASE(Sub0IntX)
{
IntX int1 = IntX(3);
BOOST_CHECK(int1 - 0 == 3);
BOOST_CHECK((IntX)0 - int1 == -3);
BOOST_CHECK(int1 - IntX() == 3);
BOOST_CHECK(IntX() - int1 == -3);
}
BOOST_AUTO_TEST_CASE(Sub0IntXNeg)
{
IntX int1 = IntX(-3);
BOOST_CHECK(int1 - 0 == -3);
BOOST_CHECK((IntX)0 - int1 == 3);
BOOST_CHECK(int1 - IntX() == -3);
BOOST_CHECK(IntX() - int1 == 3);
}
BOOST_AUTO_TEST_CASE(Sub2BigIntX)
{
IntX int1 = IntX(vector<UInt32>({ 1, 2, 3 }), false);
IntX int2 = IntX(vector<UInt32>({ 3, 4, 5 }), false);
IntX int3 = IntX(vector<UInt32>({ 2, 2, 2 }), true);
BOOST_CHECK(int1 - int2 == int3);
}
BOOST_AUTO_TEST_CASE(Sub2BigIntXC)
{
IntX int1 = IntX(vector<UInt32>({ Constants::MaxUInt32Value, Constants::MaxUInt32Value - 1 }), false);
IntX int2 = IntX(vector<UInt32>({ 1, 1 }), false);
IntX int3 = IntX(vector<UInt32>({ 0, 0, 1 }), false);
BOOST_CHECK(int1 == int3 - int2);
}
BOOST_AUTO_TEST_CASE(Sub2BigIntXC2)
{
IntX int1 = IntX(vector<UInt32>({ Constants::MaxUInt32Value - 1, Constants::MaxUInt32Value - 1 }), false);
IntX int2 = IntX(vector<UInt32>({ 1, 1 }), false);
IntX int3 = IntX(vector<UInt32>({ Constants::MaxUInt32Value, Constants::MaxUInt32Value }), false);
BOOST_CHECK(int1 == int3 - int2);
}
BOOST_AUTO_TEST_CASE(Sub2BigIntXC3)
{
IntX int1 = IntX(vector<UInt32>({ Constants::MaxUInt32Value, Constants::MaxUInt32Value }), false);
IntX int2 = IntX(vector<UInt32>({ 1, 1 }), false);
IntX int3 = IntX(vector<UInt32>({ 0, 1, 1 }), false);
BOOST_CHECK(int1 == int3 - int2);
}
BOOST_AUTO_TEST_CASE(Sub2BigIntXC4)
{
IntX int1 = IntX(vector<UInt32>({ Constants::MaxUInt32Value, Constants::MaxUInt32Value, 1, 1 }), false);
IntX int2 = IntX(vector<UInt32>({ 1, 1 }), false);
IntX int3 = IntX(vector<UInt32>({ 0, 1, 2, 1 }), false);
BOOST_CHECK(int1 == int3 - int2);
}
BOOST_AUTO_TEST_CASE(SubAdd)
{
IntX int1 = IntX(2);
IntX int2 = IntX(-3);
BOOST_CHECK(int1 - int2 == 5);
}
BOOST_AUTO_TEST_SUITE_END()