]> git.basschouten.com Git - openhab-addons.git/blob
eb8d59625399e6ddd1eac84cd168ba7b052275c2
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2020 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.danfossairunit.internal;
14
15 import static org.junit.jupiter.api.Assertions.*;
16
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.junit.jupiter.api.Test;
19 import org.openhab.core.library.types.OnOffType;
20
21 /**
22  * @author Robert Bach - Initial contribution
23  */
24 @NonNullByDefault
25 public class ValueCacheTest {
26
27     @Test
28     public void updateValueNotInCache() {
29         ValueCache valueCache = new ValueCache(10000);
30         assertTrue(valueCache.updateValue("channel", OnOffType.ON));
31     }
32
33     @Test
34     public void updateValueInCacheUnchangedWithinCacheDuration() {
35         ValueCache valueCache = new ValueCache(10000);
36         assertTrue(valueCache.updateValue("channel", OnOffType.ON));
37         assertFalse(valueCache.updateValue("channel", OnOffType.ON));
38     }
39
40     @Test
41     public void updateValueInCacheChangedWithinCacheDuration() {
42         ValueCache valueCache = new ValueCache(10000);
43         assertTrue(valueCache.updateValue("channel", OnOffType.ON));
44         assertTrue(valueCache.updateValue("channel", OnOffType.OFF));
45     }
46
47     @Test
48     public void updateValueInCacheUnchangedButCacheDurationExpired() throws InterruptedException {
49         ValueCache valueCache = new ValueCache(1);
50         assertTrue(valueCache.updateValue("channel", OnOffType.ON));
51         Thread.sleep(2);
52         assertTrue(valueCache.updateValue("channel", OnOffType.ON));
53     }
54
55     @Test
56     public void updateValueMultipleCacheUpdatesButNotReportedAsToUpdate() throws InterruptedException {
57         ValueCache valueCache = new ValueCache(60);
58         assertTrue(valueCache.updateValue("channel", OnOffType.ON));
59         Thread.sleep(30);
60         assertFalse(valueCache.updateValue("channel", OnOffType.ON));
61         Thread.sleep(35);
62         assertTrue(valueCache.updateValue("channel", OnOffType.ON));
63     }
64 }