-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathverylonginteger_tests.cpp
More file actions
128 lines (112 loc) · 3.56 KB
/
verylonginteger_tests.cpp
File metadata and controls
128 lines (112 loc) · 3.56 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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include "verylonginteger.h"
#include <gtest/gtest.h>
TEST(VeryLongIntegerTests, defaultShouldBeEqualZero)
{
VeryLongInteger sample;
EXPECT_EQ(sample.toString(), "0");
}
TEST(VeryLongIntegerTests, shouldBeConstructFromInt64)
{
VeryLongInteger sample(1000000000000000002LL);
EXPECT_EQ(sample.toString(), "1000000000000000002");
}
TEST(VeryLongIntegerTests, shouldBeConstructFromDigitsVector)
{
VeryLongInteger sample(QVector<qint64>({1,21}));
EXPECT_EQ(sample.toString(), "1000000000000000021");
}
TEST(VeryLongIntegerTests, shouldBeConstructFromString)
{
VeryLongInteger sample(QString("1000000000000000021"));
EXPECT_EQ(sample.toString(), "1000000000000000021");
}
TEST(VeryLongIntegerTests, shouldCorrectCompareNumbersWithLessOperator)
{
VeryLongInteger sample(QString("1000000000000000021"));
EXPECT_EQ(sample.toString(), "1000000000000000021");
}
TEST(VeryLongIntegerTests, shouldCorrectAdding)
{
VeryLongInteger left(QVector<qint64>({1,1}));
VeryLongInteger right(QVector<qint64>({12,12}));
left+=right;
EXPECT_EQ(left.toString(), "13000000000000000013");
}
TEST(VeryLongIntegerTests, shouldCorrectAddingWhenOverflow)
{
VeryLongInteger left(QVector<qint64>({1,1}));
VeryLongInteger right(QVector<qint64>({11,1000000000000000000-1}));
left+=right;
EXPECT_EQ(left.toString(), "13000000000000000000");
}
TEST(VeryLongIntegerTests, shouldCorrectAddingDigitWhenOverflow)
{
VeryLongInteger left(1);
VeryLongInteger right(1000000000000000000-1);
left+=right;
EXPECT_EQ(left.toString(), "1000000000000000000");
}
TEST(VeryLongIntegerTests, shouldCorrectAddingNegativeNumber)
{
VeryLongInteger left(1);
VeryLongInteger left_2(1000000000000000002);
VeryLongInteger left_3(1000000000000000001);
VeryLongInteger right(-1000000000000000001);
left+=right;
EXPECT_EQ(left.toString(), "-1000000000000000000");
left_2+=right;
EXPECT_EQ(left_2.toString(), "1");
left_3+=right;
EXPECT_EQ(left_3.toString(), "0");
}
TEST(VeryLongIntegerTests, shouldCorrectTrivialSubstract)
{
VeryLongInteger left(QVector<qint64>({13,13}));
VeryLongInteger right(QVector<qint64>({12,12}));
left-=right;
EXPECT_EQ(left.toString(), "1000000000000000001");
}
TEST(VeryLongIntegerTests, shouldCorrectSubstractWithOverflow)
{
VeryLongInteger left(QVector<qint64>({12,12}));
VeryLongInteger right(QVector<qint64>({13,13}));
left-=right;
EXPECT_EQ(left.toString(), "-1000000000000000001");
}
TEST(VeryLongIntegerTests, shouldCorrectSubstractNegativeNumber)
{
VeryLongInteger left(-1);
VeryLongInteger left_2(-1000000000000000002);
VeryLongInteger left_3(-1000000000000000001);
VeryLongInteger right(-1000000000000000001);
left-=right;
EXPECT_EQ(left.toString(), "1000000000000000000");
left_2-=right;
EXPECT_EQ(left_2.toString(), "-1");
left_3-=right;
EXPECT_EQ(left_3.toString(), "0");
}
TEST(VeryLongIntegerTests, shouldCorrectCompareNegativeAndPositive)
{
VeryLongInteger left(1);
VeryLongInteger right(-1000000000000000001);
EXPECT_GT(left, right);
EXPECT_LT(right, left);
EXPECT_NE(left, right);
}
TEST(VeryLongIntegerTests, shouldCorrectComparePositive)
{
VeryLongInteger left(1);
VeryLongInteger right(1000000000000000001);
EXPECT_LT(left, right);
EXPECT_GT(right, left);
EXPECT_NE(left, right);
}
TEST(VeryLongIntegerTests, shouldCorrectCompareNegative)
{
VeryLongInteger left(-1);
VeryLongInteger right(-1000000000000000001);
EXPECT_GT(left, right);
EXPECT_LT(right, left);
EXPECT_NE(left, right);
}