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;
18 import java.util.List;
20 import org.eclipse.jdt.annotation.NonNullByDefault;
21 import org.eclipse.jdt.annotation.Nullable;
22 import org.junit.jupiter.api.Test;
23 import org.openhab.binding.boschshc.internal.devices.bridge.dto.DeviceServiceData;
24 import org.openhab.binding.boschshc.internal.devices.bridge.dto.Fault;
25 import org.openhab.binding.boschshc.internal.devices.bridge.dto.Faults;
26 import org.openhab.core.library.types.DecimalType;
27 import org.openhab.core.library.types.OnOffType;
28 import org.openhab.core.types.UnDefType;
31 * Unit tests for {@link BatteryLevel}.
33 * @author David Pace - Initial contribution
37 class BatteryLevelTest {
41 assertSame(BatteryLevel.OK, BatteryLevel.get("OK"));
42 assertSame(BatteryLevel.OK, BatteryLevel.get("ok"));
43 assertSame(BatteryLevel.LOW_BATTERY, BatteryLevel.get("LOW_BATTERY"));
44 assertSame(BatteryLevel.LOW_BATTERY, BatteryLevel.get("low_battery"));
45 assertSame(BatteryLevel.CRITICAL_LOW, BatteryLevel.get("CRITICAL_LOW"));
46 assertSame(BatteryLevel.CRITICAL_LOW, BatteryLevel.get("critical_low"));
47 assertSame(BatteryLevel.CRITICALLY_LOW_BATTERY, BatteryLevel.get("CRITICALLY_LOW_BATTERY"));
48 assertSame(BatteryLevel.CRITICALLY_LOW_BATTERY, BatteryLevel.get("critically_low_battery"));
49 assertSame(BatteryLevel.NOT_AVAILABLE, BatteryLevel.get("NOT_AVAILABLE"));
50 assertSame(BatteryLevel.NOT_AVAILABLE, BatteryLevel.get("not_available"));
51 assertNull(BatteryLevel.get("foo"));
55 void testFromDeviceServiceData() {
56 DeviceServiceData deviceServiceData = new DeviceServiceData();
57 assertSame(BatteryLevel.OK, BatteryLevel.fromDeviceServiceData(deviceServiceData));
59 Faults faults = new Faults();
60 deviceServiceData.faults = faults;
61 assertSame(BatteryLevel.OK, BatteryLevel.fromDeviceServiceData(deviceServiceData));
63 List<@Nullable Fault> entries = new ArrayList<>();
64 faults.entries = entries;
65 assertSame(BatteryLevel.OK, BatteryLevel.fromDeviceServiceData(deviceServiceData));
67 Fault fault = new Fault();
69 assertSame(BatteryLevel.OK, BatteryLevel.fromDeviceServiceData(deviceServiceData));
71 fault.category = "WARNING";
72 fault.type = "LOW_BATTERY";
73 assertSame(BatteryLevel.LOW_BATTERY, BatteryLevel.fromDeviceServiceData(deviceServiceData));
75 fault.type = "CRITICAL_LOW";
76 assertSame(BatteryLevel.CRITICAL_LOW, BatteryLevel.fromDeviceServiceData(deviceServiceData));
78 fault.type = "CRITICALLY_LOW_BATTERY";
79 assertSame(BatteryLevel.CRITICALLY_LOW_BATTERY, BatteryLevel.fromDeviceServiceData(deviceServiceData));
82 assertSame(BatteryLevel.OK, BatteryLevel.fromDeviceServiceData(deviceServiceData));
87 assertEquals(new DecimalType(100), BatteryLevel.OK.toState());
88 assertEquals(new DecimalType(10), BatteryLevel.LOW_BATTERY.toState());
89 assertEquals(new DecimalType(1), BatteryLevel.CRITICAL_LOW.toState());
90 assertEquals(new DecimalType(1), BatteryLevel.CRITICALLY_LOW_BATTERY.toState());
91 assertEquals(UnDefType.UNDEF, BatteryLevel.NOT_AVAILABLE.toState());
95 void testToLowBatteryState() {
96 assertEquals(OnOffType.OFF, BatteryLevel.OK.toLowBatteryState());
97 assertEquals(OnOffType.ON, BatteryLevel.LOW_BATTERY.toLowBatteryState());
98 assertEquals(OnOffType.ON, BatteryLevel.CRITICAL_LOW.toLowBatteryState());
99 assertEquals(OnOffType.ON, BatteryLevel.CRITICALLY_LOW_BATTERY.toLowBatteryState());
100 assertEquals(OnOffType.OFF, BatteryLevel.NOT_AVAILABLE.toLowBatteryState());