2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
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
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.boschshc.internal.services.batterylevel;
15 import static org.junit.jupiter.api.Assertions.*;
17 import java.util.ArrayList;
19 import org.junit.jupiter.api.Test;
20 import org.openhab.binding.boschshc.internal.devices.bridge.dto.DeviceServiceData;
21 import org.openhab.binding.boschshc.internal.devices.bridge.dto.Fault;
22 import org.openhab.binding.boschshc.internal.devices.bridge.dto.Faults;
23 import org.openhab.core.library.types.DecimalType;
24 import org.openhab.core.library.types.OnOffType;
25 import org.openhab.core.types.UnDefType;
28 * Unit tests for {@link BatteryLevel}.
30 * @author David Pace - Initial contribution
33 class BatteryLevelTest {
37 assertSame(BatteryLevel.OK, BatteryLevel.get("OK"));
38 assertSame(BatteryLevel.OK, BatteryLevel.get("ok"));
39 assertSame(BatteryLevel.LOW_BATTERY, BatteryLevel.get("LOW_BATTERY"));
40 assertSame(BatteryLevel.LOW_BATTERY, BatteryLevel.get("low_battery"));
41 assertSame(BatteryLevel.CRITICAL_LOW, BatteryLevel.get("CRITICAL_LOW"));
42 assertSame(BatteryLevel.CRITICAL_LOW, BatteryLevel.get("critical_low"));
43 assertSame(BatteryLevel.CRITICALLY_LOW_BATTERY, BatteryLevel.get("CRITICALLY_LOW_BATTERY"));
44 assertSame(BatteryLevel.CRITICALLY_LOW_BATTERY, BatteryLevel.get("critically_low_battery"));
45 assertSame(BatteryLevel.NOT_AVAILABLE, BatteryLevel.get("NOT_AVAILABLE"));
46 assertSame(BatteryLevel.NOT_AVAILABLE, BatteryLevel.get("not_available"));
47 assertNull(BatteryLevel.get("foo"));
51 void testFromDeviceServiceData() {
52 DeviceServiceData deviceServiceData = new DeviceServiceData();
53 assertSame(BatteryLevel.OK, BatteryLevel.fromDeviceServiceData(deviceServiceData));
55 Faults faults = new Faults();
56 deviceServiceData.faults = faults;
57 assertSame(BatteryLevel.OK, BatteryLevel.fromDeviceServiceData(deviceServiceData));
59 ArrayList<Fault> entries = new ArrayList<>();
60 faults.entries = entries;
61 assertSame(BatteryLevel.OK, BatteryLevel.fromDeviceServiceData(deviceServiceData));
63 Fault fault = new Fault();
65 assertSame(BatteryLevel.OK, BatteryLevel.fromDeviceServiceData(deviceServiceData));
67 fault.category = "WARNING";
68 fault.type = "LOW_BATTERY";
69 assertSame(BatteryLevel.LOW_BATTERY, BatteryLevel.fromDeviceServiceData(deviceServiceData));
71 fault.type = "CRITICAL_LOW";
72 assertSame(BatteryLevel.CRITICAL_LOW, BatteryLevel.fromDeviceServiceData(deviceServiceData));
74 fault.type = "CRITICALLY_LOW_BATTERY";
75 assertSame(BatteryLevel.CRITICALLY_LOW_BATTERY, BatteryLevel.fromDeviceServiceData(deviceServiceData));
78 assertSame(BatteryLevel.OK, BatteryLevel.fromDeviceServiceData(deviceServiceData));
83 assertEquals(new DecimalType(100), BatteryLevel.OK.toState());
84 assertEquals(new DecimalType(10), BatteryLevel.LOW_BATTERY.toState());
85 assertEquals(new DecimalType(1), BatteryLevel.CRITICAL_LOW.toState());
86 assertEquals(new DecimalType(1), BatteryLevel.CRITICALLY_LOW_BATTERY.toState());
87 assertEquals(UnDefType.UNDEF, BatteryLevel.NOT_AVAILABLE.toState());
91 void testToLowBatteryState() {
92 assertEquals(OnOffType.OFF, BatteryLevel.OK.toLowBatteryState());
93 assertEquals(OnOffType.ON, BatteryLevel.LOW_BATTERY.toLowBatteryState());
94 assertEquals(OnOffType.ON, BatteryLevel.CRITICAL_LOW.toLowBatteryState());
95 assertEquals(OnOffType.ON, BatteryLevel.CRITICALLY_LOW_BATTERY.toLowBatteryState());
96 assertEquals(OnOffType.OFF, BatteryLevel.NOT_AVAILABLE.toLowBatteryState());