Add additional request tests (#10503)
This commit is contained in:
parent
b700ff3501
commit
375a8daeb4
@ -255,4 +255,78 @@ mod tests {
|
|||||||
hash: Field::BackReference(0, 0),
|
hash: Field::BackReference(0, 0),
|
||||||
})).unwrap();
|
})).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn batch_tx_index_backreference() {
|
||||||
|
let mut builder = Builder::default();
|
||||||
|
builder.push(Request::HeaderProof(IncompleteHeaderProofRequest {
|
||||||
|
num: 100.into(), // header proof puts hash at output 0.
|
||||||
|
})).unwrap();
|
||||||
|
builder.push(Request::TransactionIndex(IncompleteTransactionIndexRequest {
|
||||||
|
hash: Field::BackReference(0, 0),
|
||||||
|
})).unwrap();
|
||||||
|
|
||||||
|
let mut batch = builder.build();
|
||||||
|
batch.requests[1].fill(|_req_idx, _out_idx| Ok(Output::Hash(42.into())));
|
||||||
|
|
||||||
|
assert!(batch.next_complete().is_some());
|
||||||
|
batch.answered += 1;
|
||||||
|
assert!(batch.next_complete().is_some());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[should_panic]
|
||||||
|
fn batch_tx_index_backreference_wrong_output() {
|
||||||
|
let mut builder = Builder::default();
|
||||||
|
builder.push(Request::HeaderProof(IncompleteHeaderProofRequest {
|
||||||
|
num: 100.into(), // header proof puts hash at output 0.
|
||||||
|
})).unwrap();
|
||||||
|
builder.push(Request::TransactionIndex(IncompleteTransactionIndexRequest {
|
||||||
|
hash: Field::BackReference(0, 0),
|
||||||
|
})).unwrap();
|
||||||
|
|
||||||
|
let mut batch = builder.build();
|
||||||
|
batch.requests[1].fill(|_req_idx, _out_idx| Ok(Output::Number(42)));
|
||||||
|
|
||||||
|
batch.next_complete();
|
||||||
|
batch.answered += 1;
|
||||||
|
batch.next_complete();
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn batch_receipts_backreference() {
|
||||||
|
let mut builder = Builder::default();
|
||||||
|
builder.push(Request::HeaderProof(IncompleteHeaderProofRequest {
|
||||||
|
num: 100.into(), // header proof puts hash at output 0.
|
||||||
|
})).unwrap();
|
||||||
|
builder.push(Request::Receipts(IncompleteReceiptsRequest {
|
||||||
|
hash: Field::BackReference(0, 0),
|
||||||
|
})).unwrap();
|
||||||
|
|
||||||
|
let mut batch = builder.build();
|
||||||
|
batch.requests[1].fill(|_req_idx, _out_idx| Ok(Output::Hash(42.into())));
|
||||||
|
|
||||||
|
assert!(batch.next_complete().is_some());
|
||||||
|
batch.answered += 1;
|
||||||
|
assert!(batch.next_complete().is_some());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[should_panic]
|
||||||
|
fn batch_receipts_backreference_wrong_output() {
|
||||||
|
let mut builder = Builder::default();
|
||||||
|
builder.push(Request::HeaderProof(IncompleteHeaderProofRequest {
|
||||||
|
num: 100.into(), // header proof puts hash at output 0.
|
||||||
|
})).unwrap();
|
||||||
|
builder.push(Request::Receipts(IncompleteReceiptsRequest {
|
||||||
|
hash: Field::BackReference(0, 0),
|
||||||
|
})).unwrap();
|
||||||
|
|
||||||
|
let mut batch = builder.build();
|
||||||
|
batch.requests[1].fill(|_req_idx, _out_idx| Ok(Output::Number(42)));
|
||||||
|
|
||||||
|
batch.next_complete();
|
||||||
|
batch.answered += 1;
|
||||||
|
batch.next_complete();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -907,7 +907,7 @@ pub mod transaction_index {
|
|||||||
fn fill<F>(&mut self, oracle: F) where F: Fn(usize, usize) -> Result<Output, NoSuchOutput> {
|
fn fill<F>(&mut self, oracle: F) where F: Fn(usize, usize) -> Result<Output, NoSuchOutput> {
|
||||||
if let Field::BackReference(req, idx) = self.hash {
|
if let Field::BackReference(req, idx) = self.hash {
|
||||||
self.hash = match oracle(req, idx) {
|
self.hash = match oracle(req, idx) {
|
||||||
Ok(Output::Number(hash)) => Field::Scalar(hash.into()),
|
Ok(Output::Hash(hash)) => Field::Scalar(hash.into()),
|
||||||
_ => Field::BackReference(req, idx),
|
_ => Field::BackReference(req, idx),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -982,7 +982,7 @@ pub mod block_receipts {
|
|||||||
fn fill<F>(&mut self, oracle: F) where F: Fn(usize, usize) -> Result<Output, NoSuchOutput> {
|
fn fill<F>(&mut self, oracle: F) where F: Fn(usize, usize) -> Result<Output, NoSuchOutput> {
|
||||||
if let Field::BackReference(req, idx) = self.hash {
|
if let Field::BackReference(req, idx) = self.hash {
|
||||||
self.hash = match oracle(req, idx) {
|
self.hash = match oracle(req, idx) {
|
||||||
Ok(Output::Number(hash)) => Field::Scalar(hash.into()),
|
Ok(Output::Hash(hash)) => Field::Scalar(hash.into()),
|
||||||
_ => Field::BackReference(req, idx),
|
_ => Field::BackReference(req, idx),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user