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) | ||||
| { | ||||
| 	string testPath = test::getTestPath(); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user