From 7bb4d16f3fab0387e930405df0ef7a74223b0946 Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Mon, 24 Aug 2026 09:05:45 -0500 Subject: [PATCH] Add static type assertions to macro tests --- Cargo.lock | 7 +++++++ crates/arctictis/Cargo.toml | 1 + crates/arctictis/src/macros.rs | 15 ++++++++------- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fac6c51..804ff99 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,6 +10,7 @@ dependencies = [ "futures-util", "itertools", "itoa", + "static_assertions", "thiserror", "tokio", "tokio-serial", @@ -275,6 +276,12 @@ dependencies = [ "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" version = "2.0.119" diff --git a/crates/arctictis/Cargo.toml b/crates/arctictis/Cargo.toml index bfd7b48..cd34fd8 100644 --- a/crates/arctictis/Cargo.toml +++ b/crates/arctictis/Cargo.toml @@ -15,6 +15,7 @@ tokio-util.workspace = true [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 index 2fa938d..fb4b06f 100644 --- a/crates/arctictis/src/macros.rs +++ b/crates/arctictis/src/macros.rs @@ -274,8 +274,12 @@ macro_rules! get_set_command { 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 @@ mod tests { 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 @@ mod tests { Fields::deserialize(helper::build_response(&[b"1", b"20"]).iter()), FieldsError("field2"), ); - - // TODO: static type assertions } #[test] @@ -341,7 +343,7 @@ mod tests { 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 @@ mod tests { 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 { -- 2.51.2