-
Ensure choice when priorities clash
When two or more feature overrides share the same priority, which one should be selected in evaluation?
-
Ensure segment override only applies to the intended feature
An override on string_feature must not affect evaluation of integer_feature.
-
Ensure deterministic selection at split boundaries
When the hash falls exactly on a split boundary (e.g. 0.3, 0.6), confirm which variant is chosen.
-
Ensure variants with weight 0 are never selected
Verify that a variant defined with 0% allocation is consistently excluded from results.
-
Ensure variant choice is stable for an identity
Repeated evaluations for the same identity must always return the same variant.
-
Ensure NOT_EQUAL operator works correctly
Trait not equal to value should satisfy/fail as expected.
-
Ensure CONTAINS works on strings and arrays
Rule should match both substring in string and membership in array.
-
Ensure IN fails when value is not present
A property not found in the list should result in no match.
-
Ensure IS_SET fails when property is missing
If the trait is absent, IS_SET should evaluate to false.
-
Ensure IS_NOT_SET fails when property exists
If the trait is present, IS_NOT_SET should evaluate to false.
-
Ensure environment name mismatch fails
A rule depending on $.environment.name should not match if the environment name differs.
-
Ensure identity identifier mismatch fails
A rule on $.identity.identifier should not match if the identifier differs.
-
Ensure boolean feature is evaluated correctly
Add a root-level boolean feature to confirm true/false values are handled.
-
Ensure float feature stored as number is evaluated correctly
A float defined as numeric (not string) should evaluate without issue.
-
Ensure type mismatch is handled safely
Trait value "42" (string) compared against a number should not cause an error.
-
Ensure override enables a disabled root feature
A root-level disabled feature should be enabled if a segment provides an override.
-
Ensure empty rules segment always applies
A segment with no conditions but with an override should always apply.
-
Ensure OVERRIDE reason is produced when expected
A feature value from a segment override should return reason OVERRIDE.
-
Ensure invalid operator fails gracefully
An unsupported operator should not break evaluation and should return safe defaults.
Add JSONPath selector tests for unusual traits, e.g.
sómêthing,$sometrait,何か.Extract whatever is useful from this AI analysis:
Suggested new test cases by ChatGPT
Ensure choice when priorities clash
When two or more feature overrides share the same priority, which one should be selected in evaluation?
Ensure segment override only applies to the intended feature
An override on string_feature must not affect evaluation of integer_feature.
Ensure deterministic selection at split boundaries
When the hash falls exactly on a split boundary (e.g. 0.3, 0.6), confirm which variant is chosen.
Ensure variants with weight 0 are never selected
Verify that a variant defined with 0% allocation is consistently excluded from results.
Ensure variant choice is stable for an identity
Repeated evaluations for the same identity must always return the same variant.
Ensure NOT_EQUAL operator works correctly
Trait not equal to value should satisfy/fail as expected.
Ensure CONTAINS works on strings and arrays
Rule should match both substring in string and membership in array.
Ensure IN fails when value is not present
A property not found in the list should result in no match.
Ensure IS_SET fails when property is missing
If the trait is absent, IS_SET should evaluate to false.
Ensure IS_NOT_SET fails when property exists
If the trait is present, IS_NOT_SET should evaluate to false.
Ensure environment name mismatch fails
A rule depending on $.environment.name should not match if the environment name differs.
Ensure identity identifier mismatch fails
A rule on $.identity.identifier should not match if the identifier differs.
Ensure boolean feature is evaluated correctly
Add a root-level boolean feature to confirm true/false values are handled.
Ensure float feature stored as number is evaluated correctly
A float defined as numeric (not string) should evaluate without issue.
Ensure type mismatch is handled safely
Trait value "42" (string) compared against a number should not cause an error.
Ensure override enables a disabled root feature
A root-level disabled feature should be enabled if a segment provides an override.
Ensure empty rules segment always applies
A segment with no conditions but with an override should always apply.
Ensure OVERRIDE reason is produced when expected
A feature value from a segment override should return reason OVERRIDE.
Ensure invalid operator fails gracefully
An unsupported operator should not break evaluation and should return safe defaults.
Any other suggestions?
A later goal is #13.