diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2023-01-02 16:57:00 -0500 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2023-01-02 16:57:00 -0500 |
commit | 0f7dacea15d6e22123c3290c52515a772fc7ee92 (patch) | |
tree | 75af47d988e6b4dca4466898bb73cc0bc30fc171 /server/tests/table_test.rs | |
parent | 29dc8af0d9e01274eb1c520ea174e8a16f316562 (diff) |
Switch Table trait to use generics
Diffstat (limited to 'server/tests/table_test.rs')
-rw-r--r-- | server/tests/table_test.rs | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/server/tests/table_test.rs b/server/tests/table_test.rs index 87547c3..1db7aa8 100644 --- a/server/tests/table_test.rs +++ b/server/tests/table_test.rs @@ -8,9 +8,10 @@ use uuid::Uuid; mod common; -async fn table_basic_test( - mut table: Box<dyn Table + Send>, -) -> Result<(), anyhow::Error> { +async fn table_basic_test<T>(mut table: Box<T>) -> Result<(), anyhow::Error> +where + T: Table + Send, +{ assert!(matches!(table.state(), TableState::Unknown)); table = table.new_deal().await?; assert!(matches!(table.state(), TableState::Game(_))); @@ -24,13 +25,14 @@ async fn table_basic_test( Ok(()) } -async fn advance_table( - table: Box<dyn Table + Send>, -) -> Result<Box<dyn Table + Send>, BridgeError> { +async fn advance_table<T>(table: Box<T>) -> Result<Box<T>, BridgeError> +where + T: Table + Send, +{ match table.state() { TableState::Unknown => panic!("unexpected state"), - TableState::Game(g) => server::table::advance_play(table).await, - TableState::Result(g) => table.new_deal().await, + TableState::Game(_) => server::table::advance_play(table).await, + TableState::Result(_) => table.new_deal().await, } } @@ -47,7 +49,8 @@ async fn in_memory_table() -> Result<(), anyhow::Error> { async fn db_table() -> Result<(), anyhow::Error> { let db = common::TestDb::new().await; table_basic_test(Box::new( - DbTable::new(db.db().clone(), Uuid::new_v4()).await?, + DbTable::new(db.db().clone(), Uuid::new_v4(), InMemoryTable::new()) + .await?, )) .await?; Ok(()) @@ -62,10 +65,12 @@ async fn db_table() -> Result<(), anyhow::Error> { async fn db_table_idempotent() -> Result<(), anyhow::Error> { let db = common::TestDb::new().await; let uuid = Uuid::new_v4(); - let table1: Box<dyn Table + Send> = - Box::new(DbTable::new(db.db().clone(), uuid).await?); - let table2: Box<dyn Table + Send> = - Box::new(DbTable::new(db.db().clone(), uuid).await?); + let table1 = Box::new( + DbTable::new(db.db().clone(), uuid, InMemoryTable::new()).await?, + ); + let table2 = Box::new( + DbTable::new(db.db().clone(), uuid, InMemoryTable::new()).await?, + ); assert_eq!(table1.state(), table2.state()); Ok(()) } @@ -74,8 +79,10 @@ async fn db_table_idempotent() -> Result<(), anyhow::Error> { #[ignore] async fn db_table_persistence() -> Result<(), anyhow::Error> { let db = common::TestDb::new().await; - let mut table: Box<dyn Table + Send> = - Box::new(DbTable::new(db.db().clone(), Uuid::new_v4()).await?); + let mut table = Box::new( + DbTable::new(db.db().clone(), Uuid::new_v4(), InMemoryTable::new()) + .await?, + ); table = table.new_deal().await?; for i in 0..(thread_rng().gen_range(0..200)) { table = advance_table(table).await?; |