mirror of
https://github.com/mimblewimble/grin.git
synced 2025-01-21 03:21:08 +03:00
4121ea1240
* beginning to refactor keychain into wallet lib * rustfmt * more refactor of aggsig lib, simplify aggsig context manager, hold instance statically for now * clean some warnings * clean some warnings * fix wallet send test a bit * fix core tests, move wallet dependent tests into integration tests * repair chain tests * refactor/fix pool tests * fix wallet tests, moved from keychain * add wallet tests
96 lines
2.6 KiB
Rust
96 lines
2.6 KiB
Rust
// Copyright 2018 The Grin Developers
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
//! Top-level Graph tests
|
|
|
|
extern crate grin_core as core;
|
|
extern crate grin_keychain as keychain;
|
|
extern crate grin_pool as pool;
|
|
extern crate grin_wallet as wallet;
|
|
|
|
extern crate rand;
|
|
|
|
use keychain::Keychain;
|
|
use core::core::OutputFeatures;
|
|
use core::core::transaction::ProofMessageElements;
|
|
use wallet::libwallet::proof;
|
|
|
|
#[test]
|
|
fn test_add_entry() {
|
|
let keychain = Keychain::from_random_seed().unwrap();
|
|
let key_id1 = keychain.derive_key_id(1).unwrap();
|
|
let key_id2 = keychain.derive_key_id(2).unwrap();
|
|
let key_id3 = keychain.derive_key_id(3).unwrap();
|
|
|
|
let output_commit = keychain.commit(70, &key_id1).unwrap();
|
|
|
|
let inputs = vec![
|
|
core::core::transaction::Input::new(
|
|
OutputFeatures::DEFAULT_OUTPUT,
|
|
keychain.commit(50, &key_id2).unwrap(),
|
|
None,
|
|
None,
|
|
),
|
|
core::core::transaction::Input::new(
|
|
OutputFeatures::DEFAULT_OUTPUT,
|
|
keychain.commit(25, &key_id3).unwrap(),
|
|
None,
|
|
None,
|
|
),
|
|
];
|
|
|
|
let msg = ProofMessageElements::new(100, &key_id1);
|
|
|
|
let output = core::core::transaction::Output {
|
|
features: OutputFeatures::DEFAULT_OUTPUT,
|
|
commit: output_commit,
|
|
proof: proof::create(
|
|
&keychain,
|
|
100,
|
|
&key_id1,
|
|
output_commit,
|
|
None,
|
|
msg.to_proof_message(),
|
|
).unwrap(),
|
|
};
|
|
|
|
let kernel = core::core::transaction::TxKernel::empty()
|
|
.with_fee(5)
|
|
.with_lock_height(0);
|
|
|
|
let test_transaction =
|
|
core::core::transaction::Transaction::new(inputs, vec![output], vec![kernel]);
|
|
|
|
let test_pool_entry = pool::graph::PoolEntry::new(&test_transaction);
|
|
|
|
let incoming_edge_1 = pool::graph::Edge::new(
|
|
Some(random_hash()),
|
|
Some(core::core::hash::ZERO_HASH),
|
|
core::core::OutputIdentifier::from_output(&output),
|
|
);
|
|
|
|
let mut test_graph = pool::graph::DirectedGraph::empty();
|
|
|
|
test_graph.add_entry(test_pool_entry, vec![incoming_edge_1]);
|
|
|
|
assert_eq!(test_graph.vertices.len(), 1);
|
|
assert_eq!(test_graph.roots.len(), 0);
|
|
assert_eq!(test_graph.edges.len(), 1);
|
|
}
|
|
|
|
/// For testing/debugging: a random tx hash
|
|
fn random_hash() -> core::core::hash::Hash {
|
|
let hash_bytes: [u8; 32] = rand::random();
|
|
core::core::hash::Hash(hash_bytes)
|
|
}
|