diff --git a/Cargo.lock b/Cargo.lock --- a/Cargo.lock +++ b/Cargo.lock @@ -10,6 +10,7 @@ "futures-util", "itertools", "itoa", + "static_assertions", "thiserror", "tokio", "tokio-serial", @@ -274,6 +275,12 @@ "libc", "windows-sys 0.61.2", ] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "syn" diff --git a/crates/arctictis/Cargo.toml b/crates/arctictis/Cargo.toml --- a/crates/arctictis/Cargo.toml +++ b/crates/arctictis/Cargo.toml @@ -15,6 +15,7 @@ [dev-dependencies] claims.workspace = true +static_assertions = "1.1.0" tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } [lints] diff --git a/crates/arctictis/src/macros.rs b/crates/arctictis/src/macros.rs --- a/crates/arctictis/src/macros.rs +++ b/crates/arctictis/src/macros.rs @@ -274,8 +274,12 @@ mod tests { use claims::{assert_err_eq, assert_ok_eq}; use itertools::Itertools; + use static_assertions::assert_type_eq_all; - use crate::command::{Command, NoParams, Response, SingleParam}; + use crate::{ + OkResponse, + command::{Command, NoParams, Response, SingleParam}, + }; #[test] fn many_fields() { @@ -304,7 +308,7 @@ assert_eq!(Set::TEXT, b"TXT"); assert_eq!(Set(fields.clone()).params(), fields); - assert_eq!(::Response::expected_field_count(), 1); + assert_type_eq_all!(::Response, OkResponse); assert_eq!( fields.clone().into_iter().map(|b| b.to_vec()).collect_vec(), @@ -319,8 +323,6 @@ Fields::deserialize(helper::build_response(&[b"1", b"20"]).iter()), FieldsError("field2"), ); - - // TODO: static type assertions } #[test] @@ -341,7 +343,7 @@ assert_eq!(Set::TEXT, b"TXT"); assert_eq!(Set(Field(1)).params(), SingleParam(Field(1))); - assert_eq!(::Response::expected_field_count(), 1); + assert_type_eq_all!(::Response, OkResponse); // serialization handled by `SingleParam` @@ -364,8 +366,7 @@ assert_eq!(Get::TEXT, b"TXT"); assert_eq!(Get(Field(1)).params(), SingleParam(Field(1))); - assert_eq!(::Response::expected_field_count(), 1); - // TODO: static type assertions + assert_type_eq_all!(::Response, Field); } mod helper {