Electroneum
Loading...
Searching...
No Matches
checkpoints.cpp
Go to the documentation of this file.
1
// Copyrights(c) 2017-2021, The Electroneum Project
2
// Copyrights(c) 2014-2019, The Monero Project
3
//
4
// All rights reserved.
5
//
6
// Redistribution and use in source and binary forms, with or without modification, are
7
// permitted provided that the following conditions are met:
8
//
9
// 1. Redistributions of source code must retain the above copyright notice, this list of
10
// conditions and the following disclaimer.
11
//
12
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
13
// of conditions and the following disclaimer in the documentation and/or other
14
// materials provided with the distribution.
15
//
16
// 3. Neither the name of the copyright holder nor the names of its contributors may be
17
// used to endorse or promote products derived from this software without specific
18
// prior written permission.
19
//
20
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
21
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
22
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
23
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
27
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
28
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
//
30
// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
31
32
#include "gtest/gtest.h"
33
34
#include "
checkpoints/checkpoints.cpp
"
35
36
using namespace
cryptonote
;
37
38
39
TEST
(checkpoints_is_alternative_block_allowed, handles_empty_checkpoints)
40
{
41
checkpoints
cp;
42
43
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(0, 0));
44
45
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(1, 1));
46
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(1, 9));
47
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(9, 1));
48
}
49
50
TEST
(checkpoints_is_alternative_block_allowed, handles_one_checkpoint)
51
{
52
checkpoints
cp;
53
ASSERT_TRUE
(cp.
add_checkpoint
(5,
"0000000000000000000000000000000000000000000000000000000000000000"
));
54
55
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(0, 0));
56
57
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(1, 1));
58
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(1, 4));
59
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(1, 5));
60
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(1, 6));
61
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(1, 9));
62
63
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(4, 1));
64
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(4, 4));
65
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(4, 5));
66
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(4, 6));
67
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(4, 9));
68
69
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(5, 1));
70
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(5, 4));
71
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(5, 5));
72
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(5, 6));
73
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(5, 9));
74
75
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(6, 1));
76
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(6, 4));
77
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(6, 5));
78
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(6, 6));
79
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(6, 9));
80
81
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(9, 1));
82
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(9, 4));
83
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(9, 5));
84
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(9, 6));
85
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(9, 9));
86
}
87
88
TEST
(checkpoints_is_alternative_block_allowed, handles_two_and_more_checkpoints)
89
{
90
checkpoints
cp;
91
ASSERT_TRUE
(cp.
add_checkpoint
(5,
"0000000000000000000000000000000000000000000000000000000000000000"
));
92
ASSERT_TRUE
(cp.
add_checkpoint
(9,
"0000000000000000000000000000000000000000000000000000000000000000"
));
93
94
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(0, 0));
95
96
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(1, 1));
97
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(1, 4));
98
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(1, 5));
99
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(1, 6));
100
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(1, 8));
101
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(1, 9));
102
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(1, 10));
103
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(1, 11));
104
105
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(4, 1));
106
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(4, 4));
107
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(4, 5));
108
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(4, 6));
109
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(4, 8));
110
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(4, 9));
111
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(4, 10));
112
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(4, 11));
113
114
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(5, 1));
115
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(5, 4));
116
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(5, 5));
117
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(5, 6));
118
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(5, 8));
119
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(5, 9));
120
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(5, 10));
121
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(5, 11));
122
123
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(6, 1));
124
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(6, 4));
125
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(6, 5));
126
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(6, 6));
127
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(6, 8));
128
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(6, 9));
129
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(6, 10));
130
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(6, 11));
131
132
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(8, 1));
133
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(8, 4));
134
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(8, 5));
135
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(8, 6));
136
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(8, 8));
137
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(8, 9));
138
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(8, 10));
139
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(8, 11));
140
141
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(9, 1));
142
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(9, 4));
143
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(9, 5));
144
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(9, 6));
145
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(9, 8));
146
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(9, 9));
147
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(9, 10));
148
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(9, 11));
149
150
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(10, 1));
151
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(10, 4));
152
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(10, 5));
153
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(10, 6));
154
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(10, 8));
155
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(10, 9));
156
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(10, 10));
157
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(10, 11));
158
159
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(11, 1));
160
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(11, 4));
161
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(11, 5));
162
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(11, 6));
163
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(11, 8));
164
ASSERT_FALSE
(cp.
is_alternative_block_allowed
(11, 9));
165
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(11, 10));
166
ASSERT_TRUE
(cp.
is_alternative_block_allowed
(11, 11));
167
}
cryptonote::checkpoints
A container for blockchain checkpoints.
Definition
checkpoints.h:52
cryptonote::checkpoints::add_checkpoint
bool add_checkpoint(uint64_t height, const std::string &hash_str)
adds a checkpoint to the container
Definition
checkpoints.cpp:76
cryptonote::checkpoints::is_alternative_block_allowed
bool is_alternative_block_allowed(uint64_t blockchain_height, uint64_t block_height) const
checks if alternate chain blocks should be kept for a given height
Definition
checkpoints.cpp:121
ASSERT_FALSE
#define ASSERT_FALSE(condition)
Definition
gtest.h:1868
TEST
#define TEST(test_case_name, test_name)
Definition
gtest.h:2187
ASSERT_TRUE
#define ASSERT_TRUE(condition)
Definition
gtest.h:1865
cryptonote
Holds cryptonote related classes and helpers.
Definition
ban.cpp:40
checkpoints.cpp
tests
unit_tests
checkpoints.cpp
Generated on
for Electroneum by
1.16.1