1
+ package io .split .engine .matchers ;
2
+
3
+ import io .split .client .dtos .Prerequisites ;
4
+ import io .split .client .utils .Json ;
5
+ import io .split .engine .evaluator .EvaluationContext ;
6
+ import io .split .engine .evaluator .Evaluator ;
7
+ import io .split .engine .evaluator .EvaluatorImp ;
8
+ import io .split .storages .RuleBasedSegmentCache ;
9
+ import io .split .storages .SegmentCache ;
10
+ import org .junit .Assert ;
11
+ import org .junit .Test ;
12
+ import org .mockito .Mockito ;
13
+
14
+ import java .util .Arrays ;
15
+ import java .util .List ;
16
+
17
+ /**
18
+ * Tests for Prerequisites matcher
19
+ */
20
+ public class PrerequisitesMatcherTest {
21
+
22
+ @ Test
23
+ public void works () {
24
+ Evaluator evaluator = Mockito .mock (Evaluator .class );
25
+ EvaluationContext evaluationContext = new EvaluationContext (evaluator , Mockito .mock (SegmentCache .class ), Mockito .mock (RuleBasedSegmentCache .class ));
26
+ List <Prerequisites > prerequisites = Arrays .asList (Json .fromJson ("{\" n\" : \" split1\" , \" ts\" : [\" on\" ]}" , Prerequisites .class ), Json .fromJson ("{\" n\" : \" split2\" , \" ts\" : [\" off\" ]}" , Prerequisites .class ));
27
+ PrerequisitesMatcher matcher = new PrerequisitesMatcher (prerequisites );
28
+ Assert .assertEquals ("prerequisites: split1 [on], split2 [off]" , matcher .toString ());
29
+ PrerequisitesMatcher matcher2 = new PrerequisitesMatcher (prerequisites );
30
+ Assert .assertTrue (matcher .equals (matcher2 ));
31
+ Assert .assertTrue (matcher .hashCode () != 0 );
32
+
33
+ Mockito .when (evaluator .evaluateFeature ("user" , "user" , "split1" , null )).thenReturn (new EvaluatorImp .TreatmentLabelAndChangeNumber ("on" , "" ));
34
+ Mockito .when (evaluator .evaluateFeature ("user" , "user" , "split2" , null )).thenReturn (new EvaluatorImp .TreatmentLabelAndChangeNumber ("off" , "" ));
35
+ Assert .assertTrue (matcher .match ("user" , "user" , null , evaluationContext ));
36
+
37
+ Mockito .when (evaluator .evaluateFeature ("user" , "user" , "split2" , null )).thenReturn (new EvaluatorImp .TreatmentLabelAndChangeNumber ("on" , "" ));
38
+ Assert .assertFalse (matcher .match ("user" , "user" , null , evaluationContext ));
39
+ }
40
+
41
+ @ Test
42
+ public void invalidParams () {
43
+ Evaluator evaluator = Mockito .mock (Evaluator .class );
44
+ EvaluationContext evaluationContext = new EvaluationContext (evaluator , Mockito .mock (SegmentCache .class ), Mockito .mock (RuleBasedSegmentCache .class ));
45
+
46
+ List <Prerequisites > prerequisites = Arrays .asList (Json .fromJson ("{\" n\" : \" split1\" , \" ts\" : [\" on\" ]}" , Prerequisites .class ), Json .fromJson ("{\" n\" : \" split2\" , \" ts\" : [\" off\" ]}" , Prerequisites .class ));
47
+ PrerequisitesMatcher matcher = new PrerequisitesMatcher (prerequisites );
48
+ Mockito .when (evaluator .evaluateFeature ("user" , "user" , "split1" , null )).thenReturn (new EvaluatorImp .TreatmentLabelAndChangeNumber ("on" , "" ));
49
+ Assert .assertFalse (matcher .match (null , null , null , evaluationContext ));
50
+ Assert .assertFalse (matcher .match (123 , null , null , evaluationContext ));
51
+ }
52
+ }
0 commit comments