Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F13115245
main_tests.cpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
main_tests.cpp
View Options
// Copyright (c) 2014-2016 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include
"chainparams.h"
#include
"validation.h"
#include
"net.h"
#include
"test/test_bitcoin.h"
#include
<boost/signals2/signal.hpp>
#include
<boost/test/unit_test.hpp>
BOOST_FIXTURE_TEST_SUITE
(
main_tests
,
TestingSetup
)
static
void
TestBlockSubsidyHalvings
(
const
Consensus
::
Params
&
consensusParams
)
{
int
maxHalvings
=
64
;
CAmount
nInitialSubsidy
=
50
*
COIN
;
CAmount
nPreviousSubsidy
=
nInitialSubsidy
*
2
;
// for height == 0
BOOST_CHECK_EQUAL
(
nPreviousSubsidy
,
nInitialSubsidy
*
2
);
for
(
int
nHalvings
=
0
;
nHalvings
<
maxHalvings
;
nHalvings
++
)
{
int
nHeight
=
nHalvings
*
consensusParams
.
nSubsidyHalvingInterval
;
CAmount
nSubsidy
=
GetBlockSubsidy
(
nHeight
,
consensusParams
);
BOOST_CHECK
(
nSubsidy
<=
nInitialSubsidy
);
BOOST_CHECK_EQUAL
(
nSubsidy
,
nPreviousSubsidy
/
2
);
nPreviousSubsidy
=
nSubsidy
;
}
BOOST_CHECK_EQUAL
(
GetBlockSubsidy
(
maxHalvings
*
consensusParams
.
nSubsidyHalvingInterval
,
consensusParams
),
0
);
}
static
void
TestBlockSubsidyHalvings
(
int
nSubsidyHalvingInterval
)
{
Consensus
::
Params
consensusParams
;
consensusParams
.
nSubsidyHalvingInterval
=
nSubsidyHalvingInterval
;
TestBlockSubsidyHalvings
(
consensusParams
);
}
BOOST_AUTO_TEST_CASE
(
block_subsidy_test
)
{
TestBlockSubsidyHalvings
(
Params
(
CBaseChainParams
::
MAIN
).
GetConsensus
());
// As in main
TestBlockSubsidyHalvings
(
150
);
// As in regtest
TestBlockSubsidyHalvings
(
1000
);
// Just another interval
}
BOOST_AUTO_TEST_CASE
(
subsidy_limit_test
)
{
const
Consensus
::
Params
&
consensusParams
=
Params
(
CBaseChainParams
::
MAIN
).
GetConsensus
();
CAmount
nSum
=
0
;
for
(
int
nHeight
=
0
;
nHeight
<
14000000
;
nHeight
+=
1000
)
{
CAmount
nSubsidy
=
GetBlockSubsidy
(
nHeight
,
consensusParams
);
BOOST_CHECK
(
nSubsidy
<=
50
*
COIN
);
nSum
+=
nSubsidy
*
1000
;
BOOST_CHECK
(
MoneyRange
(
nSum
));
}
BOOST_CHECK_EQUAL
(
nSum
,
2099999997690000ULL
);
}
bool
ReturnFalse
()
{
return
false
;
}
bool
ReturnTrue
()
{
return
true
;
}
BOOST_AUTO_TEST_CASE
(
test_combiner_all
)
{
boost
::
signals2
::
signal
<
bool
(),
CombinerAll
>
Test
;
BOOST_CHECK
(
Test
());
Test
.
connect
(
&
ReturnFalse
);
BOOST_CHECK
(
!
Test
());
Test
.
connect
(
&
ReturnTrue
);
BOOST_CHECK
(
!
Test
());
Test
.
disconnect
(
&
ReturnFalse
);
BOOST_CHECK
(
Test
());
Test
.
disconnect
(
&
ReturnTrue
);
BOOST_CHECK
(
Test
());
}
BOOST_AUTO_TEST_SUITE_END
()
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Sun, Mar 2, 10:29 (1 d, 11 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5187351
Default Alt Text
main_tests.cpp (2 KB)
Attached To
rABC Bitcoin ABC
Event Timeline
Log In to Comment