|
34 | 34 | owner_balances: Mutex<Option<HashMap<AccountOwner, Amount>>>, |
35 | 35 | query_application_handler: Mutex<Option<QueryApplicationHandler>>, |
36 | 36 | expected_http_requests: Mutex<VecDeque<(http::Request, http::Response)>>, |
| 37 | + expected_has_trivial_storage_requests: Mutex<VecDeque<(ApplicationId, bool)>>, |
37 | 38 | blobs: Mutex<Option<HashMap<DataBlobHash, Vec<u8>>>>, |
38 | 39 | scheduled_operations: Mutex<Vec<Vec<u8>>>, |
39 | 40 | key_value_store: KeyValueStore, |
|
65 | 66 | owner_balances: Mutex::new(None), |
66 | 67 | query_application_handler: Mutex::new(None), |
67 | 68 | expected_http_requests: Mutex::new(VecDeque::new()), |
| 69 | + expected_has_trivial_storage_requests: Mutex::new(VecDeque::new()), |
68 | 70 | blobs: Mutex::new(None), |
69 | 71 | scheduled_operations: Mutex::new(vec![]), |
70 | 72 | key_value_store: KeyValueStore::mock(), |
@@ -411,6 +413,18 @@ where |
411 | 413 | .push_back((request, response)); |
412 | 414 | } |
413 | 415 |
|
| 416 | + /// Adds an expected `has_trivial_storage` call, and the response it should return in the test. |
| 417 | + pub fn add_expected_has_trivial_storage_requests( |
| 418 | + &mut self, |
| 419 | + application: ApplicationId, |
| 420 | + response: bool, |
| 421 | + ) { |
| 422 | + self.expected_has_trivial_storage_requests |
| 423 | + .lock() |
| 424 | + .unwrap() |
| 425 | + .push_back((application, response)); |
| 426 | + } |
| 427 | + |
414 | 428 | /// Makes an HTTP `request` as an oracle and returns the HTTP response. |
415 | 429 | /// |
416 | 430 | /// Should only be used with queries where it is very likely that all validators will receive |
@@ -481,6 +495,19 @@ where |
481 | 495 | ); |
482 | 496 | } |
483 | 497 |
|
| 498 | + /// Returns true if the corresponding contract uses a zero amount of storage. |
| 499 | + pub fn has_trivial_storage(&self, application: ApplicationId) -> bool { |
| 500 | + let maybe_request = self |
| 501 | + .expected_has_trivial_storage_requests |
| 502 | + .lock() |
| 503 | + .unwrap() |
| 504 | + .pop_front(); |
| 505 | + let (expected_application_id, response) = |
| 506 | + maybe_request.expect("Unexpected has_trivial_storage request"); |
| 507 | + assert_eq!(application, expected_application_id); |
| 508 | + response |
| 509 | + } |
| 510 | + |
484 | 511 | /// Loads a mocked value from the `slot` cache or panics with a provided `message`. |
485 | 512 | fn fetch_mocked_value<T>(slot: &Mutex<Option<T>>, message: &str) -> T |
486 | 513 | where |
|
0 commit comments