From d27389d094b08e0b06ba117e1b507b6844e7919f Mon Sep 17 00:00:00 2001 From: Tom You Date: Mon, 6 Jul 2026 11:21:24 +0000 Subject: [PATCH] test: clarify feature implementation status --- rabby-core/src/feature/mod.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/rabby-core/src/feature/mod.rs b/rabby-core/src/feature/mod.rs index 0faf727..f3e8c3c 100644 --- a/rabby-core/src/feature/mod.rs +++ b/rabby-core/src/feature/mod.rs @@ -1,5 +1,6 @@ #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub enum FeatureStatus { + Implemented, Modeled, UiPrototype, Planned, @@ -188,6 +189,13 @@ pub fn feature_matrix() -> Vec<(&'static str, &'static str)> { .collect() } +pub fn features_by_status(status: FeatureStatus) -> Vec<&'static FeatureSpec> { + TABBY_FEATURES + .iter() + .filter(|feature| feature.status == status) + .collect() +} + pub fn missing_required_features<'a>(required_keys: &'a [&'a str]) -> Vec<&'a str> { required_keys .iter() @@ -262,4 +270,14 @@ mod tests { "scaffold should not imply every Tabby feature is complete" ); } + + #[test] + fn status_queries_distinguish_implemented_from_modeled() { + assert!(features_by_status(FeatureStatus::Implemented).is_empty()); + let modeled = features_by_status(FeatureStatus::Modeled); + assert!(modeled.iter().any(|feature| feature.key == "nested-splits")); + assert!(modeled + .iter() + .all(|feature| feature.status == FeatureStatus::Modeled)); + } }