Files
pezkuwi-subxt/substrate/core/state-db/src/test.rs
T
Hero Bird 660c747c51 Update fixed-hash & uint utilities (#1078)
* [core/primitives] Update crunchy 0.1 => 0.2

* [core/primitives] Update fixed-hash 0.2 => 0.3.0-beta

* [core/primitives] Update `uint` 0.4 => 0.5.0-beta

* [core/state-machine] Fix errors emerged by fixed-hash update

* [core/state-db] Fix errors that emerged from fixed-hash update

* [core/sr-io] Fix errors that emerged from the fixed-hash update

* [core/trie] Fix errors emerged from fixed-hash updates

* [core/trie] Make use of new Hash::as_fixed_bytes_mut method in tests

* [core/sr-primitives] Fix errors emerged from updating fixed-hash

* [core/executor] Fix errors that emerged from fixed-hash update

* [core/test-runtime] Fix errors that emerged from updating fixed-hash

* [core/test-runtime] Fix an error that emerged from fixed-hash update

* [core/transaction-pool] Fix errors that emerged from updating fixed-hash

* Add From<u64> impl for hash types defined in core/primitives

* [core/client/db] Fix errors that emerged from fixed-hash update

* [core/{client/network/rpc}]: Fix errors emerged by fixed-hash update

* [node/{cli/executor/runtime}]: Fix errors emerged by updating fixed-hash

* [core/network]: Fix bug in parsing constant str

* Update Cargo.lock

- Add crunchy 0.2.1
- fixed-hash 0.2.2 => 0.3.0-beta.3
- Add static-assertions 0.2.5
- uint 0.4.1 => 0.5.0-beta.1

* [core/primitives]: Add fixed-hash/rustc-hex feature for FromStr impl

* [core/primitives] No longer provide From<u64> impl for hash types if byteorder support is not enabled

* [core/primitives] Revert to using From impl again in primitives tests

* [core/..] Fix some bugs that emerged by recent fixed-hash updates

* Update a bunch of Cargo.lock files

* [core/state-db] Re-add whitespace between attr and extern crate/mod

* [core/primitives] Fix bug in From<u64> impl for hash types using the wrong feature guard
2018-11-06 15:39:55 +01:00

94 lines
2.4 KiB
Rust

// Copyright 2017-2018 Parity Technologies (UK) Ltd.
// This file is part of Substrate.
// Substrate is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Substrate is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Substrate. If not, see <http://www.gnu.org/licenses/>.
//! Test utils
use std::collections::HashMap;
use primitives::H256;
use {DBValue, ChangeSet, CommitSet, MetaDb, HashDb};
#[derive(Default, Debug, Clone, PartialEq, Eq)]
pub struct TestDb {
pub data: HashMap<H256, DBValue>,
pub meta: HashMap<Vec<u8>, DBValue>,
}
impl MetaDb for TestDb {
type Error = ();
fn get_meta(&self, key: &[u8]) -> Result<Option<DBValue>, ()> {
Ok(self.meta.get(key).cloned())
}
}
impl HashDb for TestDb {
type Error = ();
type Hash = H256;
fn get(&self, key: &H256) -> Result<Option<DBValue>, ()> {
Ok(self.data.get(key).cloned())
}
}
impl TestDb {
pub fn commit(&mut self, commit: &CommitSet<H256>) {
self.data.extend(commit.data.inserted.iter().cloned());
for k in commit.data.deleted.iter() {
self.data.remove(k);
}
self.meta.extend(commit.meta.inserted.iter().cloned());
for k in commit.meta.deleted.iter() {
self.meta.remove(k);
}
}
pub fn data_eq(&self, other: &TestDb) -> bool {
self.data == other.data
}
}
pub fn make_changeset(inserted: &[u64], deleted: &[u64]) -> ChangeSet<H256> {
ChangeSet {
inserted: inserted
.iter()
.map(|v| {
(H256::from_low_u64_be(*v), H256::from_low_u64_be(*v).as_bytes().to_vec())
})
.collect(),
deleted: deleted.iter().map(|v| H256::from_low_u64_be(*v)).collect(),
}
}
pub fn make_commit(inserted: &[u64], deleted: &[u64]) -> CommitSet<H256> {
CommitSet {
data: make_changeset(inserted, deleted),
meta: ChangeSet::default(),
}
}
pub fn make_db(inserted: &[u64]) -> TestDb {
TestDb {
data: inserted
.iter()
.map(|v| {
(H256::from_low_u64_be(*v), H256::from_low_u64_be(*v).as_bytes().to_vec())
})
.collect(),
meta: Default::default(),
}
}