aboutsummaryrefslogtreecommitdiffstats
path: root/config-model-api/src/test/java/com/yahoo/config/model/api/QuotaTest.java
diff options
context:
space:
mode:
authorØyvind Grønnesby <oyving@verizonmedia.com>2020-09-30 11:03:43 +0200
committerØyvind Grønnesby <oyving@verizonmedia.com>2020-09-30 11:03:43 +0200
commit68176288649b5ebc3bbf00ae934875c17b9a75b7 (patch)
treeb262777aba8cde3e3c05dd6a2cc3583db0778a00 /config-model-api/src/test/java/com/yahoo/config/model/api/QuotaTest.java
parent628a9a9dd57d9eadd3ad786c5cde40ccfec1ba63 (diff)
Use BigDecimal for budget inside the Quota
- To allow budgets below $1/hour we change the internal representation of budget to a decimal number. Some interfaces that assume integers are kept to keep the API stable. - Created a nicer method .unlimited() instead of .empt() to better show semantics. - Added some serialisation tests to make sure we support integers and decimals.
Diffstat (limited to 'config-model-api/src/test/java/com/yahoo/config/model/api/QuotaTest.java')
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/model/api/QuotaTest.java41
1 files changed, 41 insertions, 0 deletions
diff --git a/config-model-api/src/test/java/com/yahoo/config/model/api/QuotaTest.java b/config-model-api/src/test/java/com/yahoo/config/model/api/QuotaTest.java
new file mode 100644
index 00000000000..83d4ffbbe72
--- /dev/null
+++ b/config-model-api/src/test/java/com/yahoo/config/model/api/QuotaTest.java
@@ -0,0 +1,41 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.config.model.api;
+
+import com.yahoo.slime.SlimeUtils;
+import org.junit.Test;
+
+
+import java.math.BigDecimal;
+
+import static org.junit.Assert.assertEquals;
+
+public class QuotaTest {
+
+ @Test
+ public void test_serialization_with_integers() {
+ var json = "{\"budget\": 123}";
+ var slime = SlimeUtils.jsonToSlime(json);
+ var quota = Quota.fromSlime(slime.get());
+ assertEquals((Integer) 123, quota.budget().get());
+ assertEquals(123, quota.budgetAsDecimal().get().intValueExact());
+ }
+
+ @Test
+ public void test_serialization_with_floats() {
+ var json = "{\"budget\": 123.4}";
+ var slime = SlimeUtils.jsonToSlime(json);
+ var quota = Quota.fromSlime(slime.get());
+ assertEquals((Integer) 123, quota.budget().get());
+ assertEquals(123.4, quota.budgetAsDecimal().get().doubleValue(), 0.01);
+ }
+
+ @Test
+ public void test_serialization_with_string() {
+ var json = "{\"budget\": \"123.4\"}";
+ var slime = SlimeUtils.jsonToSlime(json);
+ var quota = Quota.fromSlime(slime.get());
+ assertEquals((Integer) 123, quota.budget().get());
+ assertEquals(new BigDecimal("123.4"), quota.budgetAsDecimal().get());
+ }
+
+}