mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
State integration test.
Fixes to the FatTrie.
This commit is contained in:
parent
ebcd518f6a
commit
31110cd27a
62
trie.cpp
62
trie.cpp
@ -74,68 +74,6 @@ BOOST_AUTO_TEST_CASE(fat_trie)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(hex_encoded_securetrie_test)
|
|
||||||
{
|
|
||||||
string testPath = test::getTestPath();
|
|
||||||
|
|
||||||
testPath += "/TrieTests";
|
|
||||||
|
|
||||||
cnote << "Testing Secure Trie...";
|
|
||||||
js::mValue v;
|
|
||||||
string s = asString(contents(testPath + "/hex_encoded_securetrie_test.json"));
|
|
||||||
BOOST_REQUIRE_MESSAGE(s.length() > 0, "Contents of 'hex_encoded_securetrie_test.json' is empty. Have you cloned the 'tests' repo branch develop?");
|
|
||||||
js::read_string(s, v);
|
|
||||||
for (auto& i: v.get_obj())
|
|
||||||
{
|
|
||||||
cnote << i.first;
|
|
||||||
js::mObject& o = i.second.get_obj();
|
|
||||||
vector<pair<string, string>> ss;
|
|
||||||
for (auto i: o["in"].get_obj())
|
|
||||||
{
|
|
||||||
ss.push_back(make_pair(i.first, i.second.get_str()));
|
|
||||||
if (!ss.back().first.find("0x"))
|
|
||||||
ss.back().first = asString(fromHex(ss.back().first.substr(2)));
|
|
||||||
if (!ss.back().second.find("0x"))
|
|
||||||
ss.back().second = asString(fromHex(ss.back().second.substr(2)));
|
|
||||||
}
|
|
||||||
for (unsigned j = 0; j < min(1000000000u, dev::test::fac((unsigned)ss.size())); ++j)
|
|
||||||
{
|
|
||||||
next_permutation(ss.begin(), ss.end());
|
|
||||||
MemoryDB m;
|
|
||||||
GenericTrieDB<MemoryDB> t(&m);
|
|
||||||
MemoryDB hm;
|
|
||||||
HashedGenericTrieDB<MemoryDB> ht(&hm);
|
|
||||||
MemoryDB fm;
|
|
||||||
FatGenericTrieDB<MemoryDB> ft(&fm);
|
|
||||||
t.init();
|
|
||||||
ht.init();
|
|
||||||
ft.init();
|
|
||||||
BOOST_REQUIRE(t.check(true));
|
|
||||||
BOOST_REQUIRE(ht.check(true));
|
|
||||||
BOOST_REQUIRE(ft.check(true));
|
|
||||||
for (auto const& k: ss)
|
|
||||||
{
|
|
||||||
t.insert(k.first, k.second);
|
|
||||||
ht.insert(k.first, k.second);
|
|
||||||
ft.insert(k.first, k.second);
|
|
||||||
BOOST_REQUIRE(t.check(true));
|
|
||||||
BOOST_REQUIRE(ht.check(true));
|
|
||||||
BOOST_REQUIRE(ft.check(true));
|
|
||||||
for (auto i = ft.begin(), j = t.begin(); i != ft.end() && j != t.end(); ++i, ++j)
|
|
||||||
{
|
|
||||||
BOOST_CHECK_EQUAL(i == ft.end(), j == t.end());
|
|
||||||
BOOST_REQUIRE((*i).first.toBytes() == (*j).first.toBytes());
|
|
||||||
BOOST_REQUIRE((*i).second.toBytes() == (*j).second.toBytes());
|
|
||||||
}
|
|
||||||
BOOST_CHECK_EQUAL(ht.root(), ft.root());
|
|
||||||
}
|
|
||||||
BOOST_REQUIRE(!o["root"].is_null());
|
|
||||||
BOOST_CHECK_EQUAL(o["root"].get_str(), "0x" + toHex(ht.root().asArray()));
|
|
||||||
BOOST_CHECK_EQUAL(o["root"].get_str(), "0x" + toHex(ft.root().asArray()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE(trie_test_anyorder)
|
BOOST_AUTO_TEST_CASE(trie_test_anyorder)
|
||||||
{
|
{
|
||||||
string testPath = test::getTestPath();
|
string testPath = test::getTestPath();
|
||||||
|
Loading…
Reference in New Issue
Block a user