Skip to content

Commit 3881ebe

Browse files
fix: Double value for a flag converted to integer (#442)
1 parent 8ceff09 commit 3881ebe

File tree

3 files changed

+34
-0
lines changed

3 files changed

+34
-0
lines changed

providers/go-feature-flag/src/main/java/dev/openfeature/contrib/providers/gofeatureflag/GoFeatureFlagProvider.java

+3
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,9 @@ private <T> T convertValue(Object value, Class<?> expectedType) {
428428
|| expectedType == Double.class;
429429

430430
if (isPrimitive) {
431+
if (value.getClass() == Integer.class && expectedType == Double.class) {
432+
return (T) Double.valueOf((Integer) value);
433+
}
431434
return (T) value;
432435
}
433436
return (T) objectToValue(value);

providers/go-feature-flag/src/test/java/dev/openfeature/contrib/providers/gofeatureflag/GoFeatureFlagProviderTest.java

+18
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,24 @@ void should_resolve_a_valid_double_flag_with_TARGETING_MATCH_reason() {
573573
assertEquals(want, got);
574574
}
575575

576+
@SneakyThrows
577+
@Test
578+
void should_resolve_a_valid_double_flag_with_TARGETING_MATCH_reason_if_value_point_zero() {
579+
GoFeatureFlagProvider g = new GoFeatureFlagProvider(GoFeatureFlagProviderOptions.builder().endpoint(this.baseUrl.toString()).timeout(1000).build());
580+
String providerName = this.testName;
581+
OpenFeatureAPI.getInstance().setProviderAndWait(providerName, g);
582+
Client client = OpenFeatureAPI.getInstance().getClient(providerName);
583+
FlagEvaluationDetails<Double> got = client.getDoubleDetails("double_point_zero_key", 200.20, this.evaluationContext);
584+
FlagEvaluationDetails<Double> want = FlagEvaluationDetails.<Double>builder()
585+
.value(100.0)
586+
.reason(Reason.TARGETING_MATCH.name())
587+
.variant("True")
588+
.flagMetadata(defaultMetadata)
589+
.flagKey("double_point_zero_key")
590+
.build();
591+
assertEquals(want, got);
592+
}
593+
576594
@SneakyThrows
577595
@Test
578596
void should_use_double_default_value_if_the_flag_is_disabled() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"trackEvents": true,
3+
"variationType": "True",
4+
"failed": false,
5+
"version": 0,
6+
"reason": "TARGETING_MATCH",
7+
"errorCode": "",
8+
"value": 100 ,
9+
"metadata": {
10+
"pr_link": "https://github.com/thomaspoignant/go-feature-flag/pull/916",
11+
"version": 1
12+
}
13+
}

0 commit comments

Comments
 (0)