Skip to main content

gwr_models/registers/
test_helpers.rs

1// Copyright (c) 2023 Graphcore Ltd. All rights reserved.
2
3use std::cell::RefCell;
4use std::rc::Rc;
5
6use gwr_engine::traits::{Resolve, Resolver};
7
8pub struct TestResolver {
9    to_resolve: RefCell<Vec<Rc<dyn Resolve>>>,
10}
11
12impl TestResolver {
13    #[must_use]
14    pub fn new() -> Self {
15        Self {
16            to_resolve: RefCell::new(Vec::new()),
17        }
18    }
19}
20
21impl Default for TestResolver {
22    fn default() -> Self {
23        Self::new()
24    }
25}
26
27impl Resolver for TestResolver {
28    fn add_resolve(&self, resolve: Rc<dyn Resolve + 'static>) {
29        self.to_resolve.borrow_mut().push(resolve);
30    }
31}
32
33impl Resolve for TestResolver {
34    fn resolve(&self) {
35        for r in self.to_resolve.borrow_mut().drain(..) {
36            r.resolve();
37        }
38    }
39}