use flagsmith_flag_engine::identities; use flagsmith_flag_engine::segments; use rstest::*; mod fixtures; use fixtures::identity; #[rstest] #[case(fixtures::empty_segment(), vec![], false)] #[case(fixtures::segment_single_condition(), vec![], false)] #[case(fixtures::segment_single_condition(), vec![fixtures::trait_1()], true)] #[case(fixtures::segment_multiple_conditions_all(), vec![], false)] #[case(fixtures::segment_multiple_conditions_all(), vec![fixtures::trait_1()], false)] #[case(fixtures::segment_multiple_conditions_all(), vec![fixtures::trait_1(), fixtures::trait_2()], true)] #[case(fixtures::segment_multiple_conditions_any(), vec![], false)] #[case(fixtures::segment_multiple_conditions_any(), vec![fixtures::trait_1()], true)] #[case(fixtures::segment_multiple_conditions_any(), vec![fixtures::trait_2()], true)] #[case(fixtures::segment_multiple_conditions_any(), vec![fixtures::trait_1(), fixtures::trait_2()], true)] #[case(fixtures::segment_nested_rules_all(), vec![], false)] #[case(fixtures::segment_nested_rules_all(), vec![fixtures::trait_1()], false)] #[case(fixtures::segment_nested_rules_all(), vec![fixtures::trait_2()], false)] #[case(fixtures::segment_nested_rules_all(), vec![fixtures::trait_1(), fixtures::trait_2()], false)] #[case(fixtures::segment_nested_rules_all(), vec![fixtures::trait_1(), fixtures::trait_2(), fixtures::trait_3()], true)] #[case(fixtures::segment_conditions_and_nested_rules(), vec![], false)] #[case(fixtures::segment_conditions_and_nested_rules(), vec![fixtures::trait_1()], false)] #[case(fixtures::segment_conditions_and_nested_rules(), vec![fixtures::trait_2()], false)] #[case(fixtures::segment_conditions_and_nested_rules(), vec![fixtures::trait_1(), fixtures::trait_2()], false)] #[case(fixtures::segment_conditions_and_nested_rules(), vec![fixtures::trait_1(), fixtures::trait_2(), fixtures::trait_3()], true)] fn test_evaluate_identity_in_segment( #[case] segment: segments::Segment, #[case] identity_traits: Vec, #[case] expected_result: bool, mut identity: identities::Identity, ) { identity.identity_traits = identity_traits; assert_eq!( segments::evaluator::evaluate_identity_in_segment(&identity, &segment, None), expected_result ); }