mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Update precompiled stuff.
Add extra tests for secure trie.
This commit is contained in:
		
							parent
							
								
									4dfa99b753
								
							
						
					
					
						commit
						dacd342424
					
				
							
								
								
									
										62
									
								
								trie.cpp
									
									
									
									
									
								
							
							
						
						
									
										62
									
								
								trie.cpp
									
									
									
									
									
								
							| @ -74,6 +74,68 @@ 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