summaryrefslogtreecommitdiffstats
path: root/vespajlib/src/test/java/com/yahoo/lang
diff options
context:
space:
mode:
authorValerij Fredriksen <valerij92@gmail.com>2021-02-26 10:54:42 +0100
committerValerij Fredriksen <valerij92@gmail.com>2021-02-26 14:58:20 +0100
commit73650649da0a0c3b60aefd06ef2043b55dafa604 (patch)
tree06265bbe2d7cae51cc7f4d367ee38aad2de086d3 /vespajlib/src/test/java/com/yahoo/lang
parent0dc96d22e51bf22e7afaa4e99abeed1c8c1bad43 (diff)
Crete CachedSupplier
Diffstat (limited to 'vespajlib/src/test/java/com/yahoo/lang')
-rw-r--r--vespajlib/src/test/java/com/yahoo/lang/CachedSupplierTest.java39
1 files changed, 39 insertions, 0 deletions
diff --git a/vespajlib/src/test/java/com/yahoo/lang/CachedSupplierTest.java b/vespajlib/src/test/java/com/yahoo/lang/CachedSupplierTest.java
new file mode 100644
index 00000000000..b0dc1262ebc
--- /dev/null
+++ b/vespajlib/src/test/java/com/yahoo/lang/CachedSupplierTest.java
@@ -0,0 +1,39 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.lang;
+
+import com.yahoo.test.ManualClock;
+import org.junit.Test;
+
+import java.time.Duration;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author freva
+ */
+public class CachedSupplierTest {
+
+ @Test
+ public void test() {
+ ManualClock clock = new ManualClock();
+ MutableInteger integer = new MutableInteger(0);
+ CachedSupplier<Integer> supplier = new CachedSupplier<>(() -> integer.add(1), Duration.ofMinutes(1), clock);
+
+ assertEquals(1, supplier.get().intValue());
+ assertEquals(1, supplier.get().intValue());
+
+ clock.advance(Duration.ofSeconds(30));
+ assertEquals(1, supplier.get().intValue());
+
+ clock.advance(Duration.ofSeconds(31));
+ assertEquals(2, supplier.get().intValue());
+ assertEquals(2, supplier.get().intValue());
+
+ supplier.refresh();
+ assertEquals(3, supplier.get().intValue());
+ assertEquals(3, supplier.get().intValue());
+
+ clock.advance(Duration.ofSeconds(61));
+ assertEquals(4, supplier.get().intValue());
+ }
+}