From cfc94c5b77334b3471b177efa8f9dac1cecd41ad Mon Sep 17 00:00:00 2001 From: Thomas Poignant Date: Sat, 23 Jul 2022 19:35:56 +0200 Subject: [PATCH] Add method to get double Signed-off-by: Thomas Poignant Signed-off-by: Robert Grassian --- .../java/dev/openfeature/javasdk/FeatureProvider.java | 1 + src/main/java/dev/openfeature/javasdk/NoOpProvider.java | 9 ++++++++- .../dev/openfeature/javasdk/AlwaysBrokenProvider.java | 5 +++++ .../dev/openfeature/javasdk/DoSomethingProvider.java | 7 +++++++ .../java/dev/openfeature/javasdk/NoOpProviderTest.java | 6 ++++++ .../java/dev/openfeature/javasdk/ProviderSpecTest.java | 6 ++++++ 6 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/main/java/dev/openfeature/javasdk/FeatureProvider.java b/src/main/java/dev/openfeature/javasdk/FeatureProvider.java index c1310831..8f22faa1 100644 --- a/src/main/java/dev/openfeature/javasdk/FeatureProvider.java +++ b/src/main/java/dev/openfeature/javasdk/FeatureProvider.java @@ -8,5 +8,6 @@ public interface FeatureProvider { ProviderEvaluation getBooleanEvaluation(String key, Boolean defaultValue, EvaluationContext ctx, FlagEvaluationOptions options); ProviderEvaluation getStringEvaluation(String key, String defaultValue, EvaluationContext ctx, FlagEvaluationOptions options); ProviderEvaluation getIntegerEvaluation(String key, Integer defaultValue, EvaluationContext ctx, FlagEvaluationOptions options); + ProviderEvaluation getDoubleEvaluation(String key, Double defaultValue, EvaluationContext ctx, FlagEvaluationOptions options); ProviderEvaluation getObjectEvaluation(String key, T defaultValue, EvaluationContext invocationContext, FlagEvaluationOptions options); } diff --git a/src/main/java/dev/openfeature/javasdk/NoOpProvider.java b/src/main/java/dev/openfeature/javasdk/NoOpProvider.java index ff5aa734..d8e5131d 100644 --- a/src/main/java/dev/openfeature/javasdk/NoOpProvider.java +++ b/src/main/java/dev/openfeature/javasdk/NoOpProvider.java @@ -46,7 +46,14 @@ public class NoOpProvider implements FeatureProvider { .reason(Reason.DEFAULT) .build(); } - + @Override + public ProviderEvaluation getDoubleEvaluation(String key, Double defaultValue, EvaluationContext ctx, FlagEvaluationOptions options) { + return ProviderEvaluation.builder() + .value(defaultValue) + .variant(PASSED_IN_DEFAULT) + .reason(Reason.DEFAULT) + .build(); + } @Override public ProviderEvaluation getObjectEvaluation(String key, T defaultValue, EvaluationContext invocationContext, FlagEvaluationOptions options) { return ProviderEvaluation.builder() diff --git a/src/test/java/dev/openfeature/javasdk/AlwaysBrokenProvider.java b/src/test/java/dev/openfeature/javasdk/AlwaysBrokenProvider.java index 1a24235a..e02a0db3 100644 --- a/src/test/java/dev/openfeature/javasdk/AlwaysBrokenProvider.java +++ b/src/test/java/dev/openfeature/javasdk/AlwaysBrokenProvider.java @@ -27,6 +27,11 @@ public class AlwaysBrokenProvider implements FeatureProvider { throw new NotImplementedException("BORK"); } + @Override + public ProviderEvaluation getDoubleEvaluation(String key, Double defaultValue, EvaluationContext ctx, FlagEvaluationOptions options) { + throw new NotImplementedException("BORK"); + } + @Override public ProviderEvaluation getObjectEvaluation(String key, T defaultValue, EvaluationContext invocationContext, FlagEvaluationOptions options) { throw new NotImplementedException("BORK"); diff --git a/src/test/java/dev/openfeature/javasdk/DoSomethingProvider.java b/src/test/java/dev/openfeature/javasdk/DoSomethingProvider.java index 9bb6d069..dd6f8026 100644 --- a/src/test/java/dev/openfeature/javasdk/DoSomethingProvider.java +++ b/src/test/java/dev/openfeature/javasdk/DoSomethingProvider.java @@ -27,6 +27,13 @@ public class DoSomethingProvider implements FeatureProvider { .build(); } + @Override + public ProviderEvaluation getDoubleEvaluation(String key, Double defaultValue, EvaluationContext ctx, FlagEvaluationOptions options) { + return ProviderEvaluation.builder() + .value(defaultValue * 100) + .build(); + } + @Override public ProviderEvaluation getObjectEvaluation(String key, T defaultValue, EvaluationContext invocationContext, FlagEvaluationOptions options) { return ProviderEvaluation.builder() diff --git a/src/test/java/dev/openfeature/javasdk/NoOpProviderTest.java b/src/test/java/dev/openfeature/javasdk/NoOpProviderTest.java index 93785612..531d96fb 100644 --- a/src/test/java/dev/openfeature/javasdk/NoOpProviderTest.java +++ b/src/test/java/dev/openfeature/javasdk/NoOpProviderTest.java @@ -24,6 +24,12 @@ public class NoOpProviderTest { assertEquals(4, eval.getValue()); } + @Test void noOpdouble() { + NoOpProvider p = new NoOpProvider(); + ProviderEvaluation eval = p.getDoubleEvaluation("key", 0.4, null, null); + assertEquals(0.4, eval.getValue()); + } + @Test void structure() { NoOpProvider p = new NoOpProvider(); Node node = new Node(); diff --git a/src/test/java/dev/openfeature/javasdk/ProviderSpecTest.java b/src/test/java/dev/openfeature/javasdk/ProviderSpecTest.java index b5b08cde..eb5e494b 100644 --- a/src/test/java/dev/openfeature/javasdk/ProviderSpecTest.java +++ b/src/test/java/dev/openfeature/javasdk/ProviderSpecTest.java @@ -27,6 +27,9 @@ public class ProviderSpecTest { ProviderEvaluation int_result = p.getIntegerEvaluation("key", 4, new EvaluationContext(), FlagEvaluationOptions.builder().build()); assertNotNull(int_result.getValue()); + ProviderEvaluation double_result = p.getDoubleEvaluation("key", 0.4, new EvaluationContext(), FlagEvaluationOptions.builder().build()); + assertNotNull(double_result.getValue()); + ProviderEvaluation string_result = p.getStringEvaluation("key", "works", new EvaluationContext(), FlagEvaluationOptions.builder().build()); assertNotNull(string_result.getValue()); @@ -67,6 +70,9 @@ public class ProviderSpecTest { ProviderEvaluation int_result = p.getIntegerEvaluation("key", 4, new EvaluationContext(), FlagEvaluationOptions.builder().build()); assertNotNull(int_result.getReason()); + ProviderEvaluation double_result = p.getDoubleEvaluation("key", 0.4, new EvaluationContext(), FlagEvaluationOptions.builder().build()); + assertNotNull(double_result.getReason()); + ProviderEvaluation string_result = p.getStringEvaluation("key", "works", new EvaluationContext(), FlagEvaluationOptions.builder().build()); assertNotNull(string_result.getReason());