@ -49,7 +49,6 @@ namespace eth
BOOST_AUTO_TEST_CASE ( trie_tests )
{
cnote < < " Testing Trie... " ;
js : : mValue v ;
string s = asString ( contents ( " ../../../tests/trietest.json " ) ) ;
BOOST_REQUIRE_MESSAGE ( s . length ( ) > 0 , " Contents of 'trietest.json' is empty. Have you cloned the 'tests' repo branch develop? " ) ;
@ -57,7 +56,7 @@ BOOST_AUTO_TEST_CASE(trie_tests)
for ( auto & i : v . get_obj ( ) )
{
js : : mObject & o = i . second . get_obj ( ) ;
cnote < < i . first ;
// cnote << i.first;
vector < pair < string , string > > ss ;
for ( auto & i : o [ " in " ] . get_obj ( ) )
ss . push_back ( make_pair ( i . first , i . second . get_str ( ) ) ) ;
@ -67,9 +66,14 @@ BOOST_AUTO_TEST_CASE(trie_tests)
BasicMap m ;
GenericTrieDB < BasicMap > t ( & m ) ;
t . init ( ) ;
BOOST_REQUIRE ( t . check ( ) ) ;
for ( auto const & k : ss )
{
// cdebug << k.first << k.second;
t . insert ( k . first , k . second ) ;
BOOST_REQUIRE ( ! o [ " root " ] . is_null ( ) ) ;
BOOST_REQUIRE ( t . check ( ) ) ;
}
BOOST_REQUIRE ( ! o [ " root " ] . is_null ( ) ) ;
BOOST_CHECK ( o [ " root " ] . get_str ( ) = = toHex ( t . root ( ) . asArray ( ) ) ) ;
}
}
@ -81,8 +85,9 @@ inline h256 stringMapHash256(StringMap const& _s)
return hash256 ( _s ) ;
}
int trieTest ( )
BOOST_AUTO_TEST_CASE ( moreTrieTests )
{
cnote < < " Testing Trie more... " ;
#if 0
// More tests...
{
@ -153,6 +158,7 @@ int trieTest()
cout < < RLP ( t . rlp ( ) ) < < endl ;
cout < < toHex ( t . rlp ( ) ) < < endl ;
}
# endif
{
BasicMap m ;
GenericTrieDB < BasicMap > d ( & m ) ;
@ -166,20 +172,21 @@ int trieTest()
t . insert ( a , b ) ;
s [ a ] = b ;
cout < < endl < < " ------------------------------- " < < endl ;
/*cout << endl << "-------------------------------" << endl;
cout < < a < < " -> " < < b < < endl ;
cout < < d ;
cout < < m ;
cout < < d . root ( ) < < endl ;
cout < < hash256 ( s ) < < endl ;
cout < < hash256 ( s ) < < endl ; */
assert ( t . hash256 ( ) = = hash256 ( s ) ) ;
assert ( d . root ( ) = = hash256 ( s ) ) ;
BOOST_REQUIRE ( d . check ( ) ) ;
BOOST_REQUIRE_EQUAL ( t . hash256 ( ) , hash256 ( s ) ) ;
BOOST_REQUIRE_EQUAL ( d . root ( ) , hash256 ( s ) ) ;
for ( auto const & i : s )
{
( void ) i ;
assert ( t . at ( i . first ) = = i . second ) ;
assert ( d . at ( i . first ) = = i . second ) ;
BOOST_REQUIRE_EQUAL ( t . at ( i . first ) , i . second ) ;
BOOST_REQUIRE_EQUAL ( d . at ( i . first ) , i . second ) ;
}
} ;
@ -189,22 +196,23 @@ int trieTest()
t . remove ( a ) ;
d . remove ( string ( a ) ) ;
cout < < endl < < " ------------------------------- " < < endl ;
/*cout << endl << "-------------------------------" << endl;
cout < < " X " < < a < < endl ;
cout < < d ;
cout < < m ;
cout < < d . root ( ) < < endl ;
cout < < hash256 ( s ) < < endl ;
cout < < hash256 ( s ) < < endl ; */
assert ( t . at ( a ) . empty ( ) ) ;
assert ( d . at ( string ( a ) ) . empty ( ) ) ;
assert ( t . hash256 ( ) = = hash256 ( s ) ) ;
assert ( d . root ( ) = = hash256 ( s ) ) ;
BOOST_REQUIRE ( d . check ( ) ) ;
BOOST_REQUIRE ( t . at ( a ) . empty ( ) ) ;
BOOST_REQUIRE ( d . at ( string ( a ) ) . empty ( ) ) ;
BOOST_REQUIRE_EQUAL ( t . hash256 ( ) , hash256 ( s ) ) ;
BOOST_REQUIRE_EQUAL ( d . root ( ) , hash256 ( s ) ) ;
for ( auto const & i : s )
{
( void ) i ;
assert ( t . at ( i . first ) = = i . second ) ;
assert ( d . at ( i . first ) = = i . second ) ;
BOOST_REQUIRE_EQUAL ( t . at ( i . first ) , i . second ) ;
BOOST_REQUIRE_EQUAL ( d . at ( i . first ) , i . second ) ;
}
} ;
@ -219,36 +227,5 @@ int trieTest()
remove ( " doge " ) ;
remove ( " doe " ) ;
}
# endif
{
BasicMap m ;
GenericTrieDB < BasicMap > d ( & m ) ;
d . init ( ) ; // initialise as empty tree.
MemTrie t ;
for ( int a = 0 ; a < 20 ; + + a )
{
StringMap m ;
for ( int i = 0 ; i < 20 ; + + i )
{
auto k = randomWord ( ) ;
auto v = toString ( i ) ;
m . insert ( make_pair ( k , v ) ) ;
t . insert ( k , v ) ;
d . insert ( k , v ) ;
assert ( hash256 ( m ) = = t . hash256 ( ) ) ;
assert ( hash256 ( m ) = = d . root ( ) ) ;
}
while ( ! m . empty ( ) )
{
auto k = m . begin ( ) - > first ;
d . remove ( k ) ;
t . remove ( k ) ;
m . erase ( k ) ;
assert ( hash256 ( m ) = = t . hash256 ( ) ) ;
assert ( hash256 ( m ) = = d . root ( ) ) ;
}
}
}
return 0 ;
}