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