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