@@ -47,16 +47,17 @@ public void eventHandling() throws Throwable {
47
47
final BlockingQueue <StorageState > sender = new LinkedBlockingQueue <>(5 );
48
48
final BlockingQueue <ProviderState > receiver = new LinkedBlockingQueue <>(5 );
49
49
50
- InProcessResolver inProcessResolver =
51
- getInProcessResolverWth ( new MockStorage ( new HashMap <>(), sender ), providerState -> {
50
+ InProcessResolver inProcessResolver = getInProcessResolverWth ( new MockStorage ( new HashMap <>(), sender ),
51
+ providerState -> {
52
52
receiver .offer (providerState );
53
53
});
54
54
55
55
// when - init and emit events
56
56
Thread initThread = new Thread (() -> {
57
57
try {
58
58
inProcessResolver .init ();
59
- } catch (Exception e ) {}
59
+ } catch (Exception e ) {
60
+ }
60
61
});
61
62
initThread .start ();
62
63
if (!sender .offer (StorageState .OK , 100 , TimeUnit .MILLISECONDS )) {
@@ -86,8 +87,8 @@ public void simpleBooleanResolving() throws Exception {
86
87
});
87
88
88
89
// when
89
- ProviderEvaluation <Boolean > providerEvaluation =
90
- inProcessResolver . booleanEvaluation ( "booleanFlag" , false , new ImmutableContext ());
90
+ ProviderEvaluation <Boolean > providerEvaluation = inProcessResolver . booleanEvaluation ( "booleanFlag" , false ,
91
+ new ImmutableContext ());
91
92
92
93
// then
93
94
assertEquals (true , providerEvaluation .getValue ());
@@ -105,15 +106,53 @@ public void simpleDoubleResolving() throws Exception {
105
106
});
106
107
107
108
// when
108
- ProviderEvaluation <Double > providerEvaluation =
109
- inProcessResolver . doubleEvaluation ( "doubleFlag" , 0d , new ImmutableContext ());
109
+ ProviderEvaluation <Double > providerEvaluation = inProcessResolver . doubleEvaluation ( "doubleFlag" , 0d ,
110
+ new ImmutableContext ());
110
111
111
112
// then
112
113
assertEquals (3.141d , providerEvaluation .getValue ());
113
114
assertEquals ("one" , providerEvaluation .getVariant ());
114
115
assertEquals (Reason .STATIC .toString (), providerEvaluation .getReason ());
115
116
}
116
117
118
+ @ Test
119
+ public void fetchIntegerAsDouble () throws Exception {
120
+ // given
121
+ final Map <String , FeatureFlag > flagMap = new HashMap <>();
122
+ flagMap .put ("doubleFlag" , DOUBLE_FLAG );
123
+
124
+ InProcessResolver inProcessResolver = getInProcessResolverWth (new MockStorage (flagMap ), providerState -> {
125
+ });
126
+
127
+ // when
128
+ ProviderEvaluation <Integer > providerEvaluation = inProcessResolver .integerEvaluation ("doubleFlag" , 0 ,
129
+ new ImmutableContext ());
130
+
131
+ // then
132
+ assertEquals (3 , providerEvaluation .getValue ());
133
+ assertEquals ("one" , providerEvaluation .getVariant ());
134
+ assertEquals (Reason .STATIC .toString (), providerEvaluation .getReason ());
135
+ }
136
+
137
+ @ Test
138
+ public void fetchDoubleAsInt () throws Exception {
139
+ // given
140
+ final Map <String , FeatureFlag > flagMap = new HashMap <>();
141
+ flagMap .put ("integerFlag" , INT_FLAG );
142
+
143
+ InProcessResolver inProcessResolver = getInProcessResolverWth (new MockStorage (flagMap ), providerState -> {
144
+ });
145
+
146
+ // when
147
+ ProviderEvaluation <Double > providerEvaluation = inProcessResolver .doubleEvaluation ("integerFlag" , 0d ,
148
+ new ImmutableContext ());
149
+
150
+ // then
151
+ assertEquals (1d , providerEvaluation .getValue ());
152
+ assertEquals ("one" , providerEvaluation .getVariant ());
153
+ assertEquals (Reason .STATIC .toString (), providerEvaluation .getReason ());
154
+ }
155
+
117
156
@ Test
118
157
public void simpleIntResolving () throws Exception {
119
158
// given
@@ -124,8 +163,8 @@ public void simpleIntResolving() throws Exception {
124
163
});
125
164
126
165
// when
127
- ProviderEvaluation <Integer > providerEvaluation =
128
- inProcessResolver . integerEvaluation ( "integerFlag" , 0 , new ImmutableContext ());
166
+ ProviderEvaluation <Integer > providerEvaluation = inProcessResolver . integerEvaluation ( "integerFlag" , 0 ,
167
+ new ImmutableContext ());
129
168
130
169
// then
131
170
assertEquals (1 , providerEvaluation .getValue ());
@@ -147,8 +186,8 @@ public void simpleObjectResolving() throws Exception {
147
186
typeDefault .put ("date" , "01.01.1990" );
148
187
149
188
// when
150
- ProviderEvaluation <Value > providerEvaluation =
151
- inProcessResolver . objectEvaluation ( "objectFlag" , Value .objectToValue (typeDefault ), new ImmutableContext ());
189
+ ProviderEvaluation <Value > providerEvaluation = inProcessResolver . objectEvaluation ( "objectFlag" ,
190
+ Value .objectToValue (typeDefault ), new ImmutableContext ());
152
191
153
192
// then
154
193
Value value = providerEvaluation .getValue ();
@@ -230,9 +269,8 @@ public void targetingMatchedEvaluationFlag() throws Exception {
230
269
});
231
270
232
271
// when
233
- ProviderEvaluation <String > providerEvaluation =
234
- inProcessResolver .stringEvaluation ("stringFlag" , "loopAlg" ,
235
- new MutableContext ().
add (
"email" ,
"[email protected] " ));
272
+ ProviderEvaluation <String > providerEvaluation = inProcessResolver .stringEvaluation ("stringFlag" , "loopAlg" ,
273
+ new MutableContext ().
add (
"email" ,
"[email protected] " ));
236
274
237
275
// then
238
276
assertEquals ("binetAlg" , providerEvaluation .getValue ());
@@ -250,9 +288,8 @@ public void targetingUnmatchedEvaluationFlag() throws Exception {
250
288
});
251
289
252
290
// when
253
- ProviderEvaluation <String > providerEvaluation =
254
- inProcessResolver .stringEvaluation ("stringFlag" , "loopAlg" ,
255
- new MutableContext ().
add (
"email" ,
"[email protected] " ));
291
+ ProviderEvaluation <String > providerEvaluation = inProcessResolver .stringEvaluation ("stringFlag" , "loopAlg" ,
292
+ new MutableContext ().
add (
"email" ,
"[email protected] " ));
256
293
257
294
// then
258
295
assertEquals ("loopAlg" , providerEvaluation .getValue ());
@@ -275,13 +312,13 @@ public void targetingErrorEvaluationFlag() throws Exception {
275
312
});
276
313
}
277
314
278
-
279
315
private InProcessResolver getInProcessResolverWth (final MockStorage storage , Consumer <ProviderState > stateConsumer )
280
316
throws NoSuchFieldException , IllegalAccessException {
281
317
Field flagStore = InProcessResolver .class .getDeclaredField ("flagStore" );
282
318
flagStore .setAccessible (true );
283
319
284
- InProcessResolver resolver = new InProcessResolver (FlagdOptions .builder ().deadline (1000 ).build (), stateConsumer );
320
+ InProcessResolver resolver = new InProcessResolver (FlagdOptions .builder ().deadline (1000 ).build (),
321
+ stateConsumer );
285
322
flagStore .set (resolver , storage );
286
323
287
324
return resolver ;
0 commit comments