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.astro.test.cases;
15 import static org.openhab.binding.astro.test.cases.AstroBindingTestsData.*;
17 import java.util.Arrays;
18 import java.util.List;
20 import org.openhab.binding.astro.test.AstroStateTest;
21 import org.openhab.core.library.types.DateTimeType;
22 import org.openhab.core.library.types.QuantityType;
23 import org.openhab.core.library.unit.Units;
26 * Test cases used in the {@link AstroStateTest}
28 * @author Petar Valchev - Initial contribution
29 * @author Svilen Valakanov - Added test data from
30 * <a href="http://www.suncalc.net">http://www.suncalc.net</a> and
31 * <a href="http://www.mooncalc.org">http://www.mooncalc.org</a>
32 * @author Erdoan Hadzhiyusein - Adapted the class to work with the new DateTimeType
33 * @author Christoph Weitkamp - Introduced UoM and migrated tests to pure Java
35 public final class AstroParametrizedTestCases {
37 public static final double TEST_LATITUDE = 22.4343;
38 public static final double TEST_LONGITUDE = 54.3225;
39 public static final int TEST_YEAR = 2016;
40 public static final int TEST_MONTH = 2;
41 public static final int TEST_DAY = 29;
43 public Object[][] cases = new Object[42][3];
45 public AstroParametrizedTestCases() {
46 cases[0][0] = TEST_SUN_THING_ID;
47 cases[0][1] = "rise#start";
48 cases[0][2] = new DateTimeType("2016-02-29T05:46:00+03:00");
50 cases[1][0] = TEST_SUN_THING_ID;
51 cases[1][1] = "rise#end";
52 cases[1][2] = new DateTimeType("2016-02-29T05:48:00+03:00");
54 cases[2][0] = TEST_SUN_THING_ID;
55 cases[2][1] = "rise#duration";
56 cases[2][2] = new QuantityType<>(2, Units.MINUTE);
58 cases[3][0] = TEST_SUN_THING_ID;
59 cases[3][1] = "set#start";
60 cases[3][2] = new DateTimeType("2016-02-29T17:25:00+03:00");
62 cases[4][0] = TEST_SUN_THING_ID;
63 cases[4][1] = "set#end";
64 cases[4][2] = new DateTimeType("2016-02-29T17:27:00+03:00");
66 cases[5][0] = TEST_SUN_THING_ID;
67 cases[5][1] = "set#duration";
68 cases[5][2] = new QuantityType<>(2, Units.MINUTE);
70 cases[6][0] = TEST_SUN_THING_ID;
71 cases[6][1] = "noon#start";
72 cases[6][2] = new DateTimeType("2016-02-29T11:37:00+03:00");
74 cases[7][0] = TEST_SUN_THING_ID;
75 cases[7][1] = "noon#end";
76 cases[7][2] = new DateTimeType("2016-02-29T11:38:00+03:00");
78 cases[8][0] = TEST_SUN_THING_ID;
79 cases[8][1] = "noon#duration";
80 cases[8][2] = new QuantityType<>(1, Units.MINUTE);
82 cases[9][0] = TEST_SUN_THING_ID;
83 cases[9][1] = "night#start";
84 cases[9][2] = new DateTimeType("2016-02-29T18:42:00+03:00");
86 cases[10][0] = TEST_SUN_THING_ID;
87 cases[10][1] = "night#end";
88 cases[10][2] = new DateTimeType("2016-03-01T04:31:00+03:00");
90 cases[11][0] = TEST_SUN_THING_ID;
91 cases[11][1] = "night#duration";
92 cases[11][2] = new QuantityType<>(589, Units.MINUTE);
94 cases[12][0] = TEST_SUN_THING_ID;
95 cases[12][1] = "morningNight#start";
96 cases[12][2] = new DateTimeType("2016-02-29T00:00:00+03:00");
98 cases[13][0] = TEST_SUN_THING_ID;
99 cases[13][1] = "morningNight#end";
100 cases[13][2] = new DateTimeType("2016-02-29T04:32:00+03:00");
102 cases[14][0] = TEST_SUN_THING_ID;
103 cases[14][1] = "morningNight#duration";
104 cases[14][2] = new QuantityType<>(272, Units.MINUTE);
106 cases[15][0] = TEST_SUN_THING_ID;
107 cases[15][1] = "astroDawn#start";
108 cases[15][2] = new DateTimeType("2016-02-29T04:32:00+03:00");
110 cases[16][0] = TEST_SUN_THING_ID;
111 cases[16][1] = "astroDawn#end";
112 cases[16][2] = new DateTimeType("2016-02-29T04:58:00+03:00");
114 cases[17][0] = TEST_SUN_THING_ID;
115 cases[17][1] = "astroDawn#duration";
116 cases[17][2] = new QuantityType<>(26, Units.MINUTE);
118 cases[18][0] = TEST_SUN_THING_ID;
119 cases[18][1] = "nauticDawn#start";
120 cases[18][2] = new DateTimeType("2016-02-29T04:58:00+03:00");
122 cases[19][0] = TEST_SUN_THING_ID;
123 cases[19][1] = "nauticDawn#end";
124 cases[19][2] = new DateTimeType("2016-02-29T05:24:00+03:00");
126 cases[20][0] = TEST_SUN_THING_ID;
127 cases[20][1] = "nauticDawn#duration";
128 cases[20][2] = new QuantityType<>(26, Units.MINUTE);
130 cases[21][0] = TEST_SUN_THING_ID;
131 cases[21][1] = "civilDawn#start";
132 cases[21][2] = new DateTimeType("2016-02-29T05:24:00+03:00");
134 cases[22][0] = TEST_SUN_THING_ID;
135 cases[22][1] = "civilDawn#end";
136 cases[22][2] = new DateTimeType("2016-02-29T05:46:00+03:00");
138 cases[23][0] = TEST_SUN_THING_ID;
139 cases[23][1] = "civilDawn#duration";
140 cases[23][2] = new QuantityType<>(22, Units.MINUTE);
142 cases[24][0] = TEST_SUN_THING_ID;
143 cases[24][1] = "astroDusk#start";
144 cases[24][2] = new DateTimeType("2016-02-29T18:16:00+03:00");
146 cases[25][0] = TEST_SUN_THING_ID;
147 cases[25][1] = "astroDusk#end";
148 cases[25][2] = new DateTimeType("2016-02-29T18:42:00+03:00");
150 cases[26][0] = TEST_SUN_THING_ID;
151 cases[26][1] = "astroDusk#duration";
152 cases[26][2] = new QuantityType<>(26, Units.MINUTE);
154 cases[27][0] = TEST_SUN_THING_ID;
155 cases[27][1] = "nauticDusk#start";
156 cases[27][2] = new DateTimeType("2016-02-29T17:50:00+03:00");
158 cases[28][0] = TEST_SUN_THING_ID;
159 cases[28][1] = "nauticDusk#end";
160 cases[28][2] = new DateTimeType("2016-02-29T18:16:00+03:00");
162 cases[29][0] = TEST_SUN_THING_ID;
163 cases[29][1] = "nauticDusk#duration";
164 cases[29][2] = new QuantityType<>(26, Units.MINUTE);
166 cases[30][0] = TEST_SUN_THING_ID;
167 cases[30][1] = "civilDusk#start";
168 cases[30][2] = new DateTimeType("2016-02-29T17:27:00+03:00");
170 cases[31][0] = TEST_SUN_THING_ID;
171 cases[31][1] = "civilDusk#end";
172 cases[31][2] = new DateTimeType("2016-02-29T17:50:00+03:00");
174 cases[32][0] = TEST_SUN_THING_ID;
175 cases[32][1] = "civilDusk#duration";
176 cases[32][2] = new QuantityType<>(23, Units.MINUTE);
178 cases[33][0] = TEST_SUN_THING_ID;
179 cases[33][1] = "eveningNight#start";
180 cases[33][2] = new DateTimeType("2016-02-29T18:42:00+03:00");
182 cases[34][0] = TEST_SUN_THING_ID;
183 cases[34][1] = "eveningNight#end";
184 cases[34][2] = new DateTimeType("2016-03-01T00:00:00+03:00");
186 cases[35][0] = TEST_SUN_THING_ID;
187 cases[35][1] = "eveningNight#duration";
188 cases[35][2] = new QuantityType<>(318, Units.MINUTE);
190 cases[36][0] = TEST_SUN_THING_ID;
191 cases[36][1] = "daylight#start";
192 cases[36][2] = new DateTimeType("2016-02-29T05:48:00+03:00");
194 cases[37][0] = TEST_SUN_THING_ID;
195 cases[37][1] = "daylight#end";
196 cases[37][2] = new DateTimeType("2016-02-29T17:25:00+03:00");
198 cases[38][0] = TEST_SUN_THING_ID;
199 cases[38][1] = "daylight#duration";
200 cases[38][2] = new QuantityType<>(697, Units.MINUTE);
202 cases[39][0] = TEST_MOON_THING_ID;
203 cases[39][1] = "rise#start";
204 cases[39][2] = new DateTimeType("2016-02-29T23:00:00+03:00");
206 cases[40][0] = TEST_MOON_THING_ID;
207 cases[40][1] = "rise#end";
208 cases[40][2] = new DateTimeType("2016-02-29T23:00:00+03:00");
210 cases[41][0] = TEST_MOON_THING_ID;
211 cases[41][1] = "rise#duration";
212 cases[41][2] = new QuantityType<>(0, Units.MINUTE);
215 public List<Object[]> getCases() {
216 return Arrays.asList(cases);