2 * Copyright 2016 Samsung Electronics All Rights Reserved.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.oic.simulator.test;
19 import org.oic.simulator.ArrayProperty;
20 import org.oic.simulator.AttributeValue;
21 import org.oic.simulator.BooleanProperty;
22 import org.oic.simulator.DoubleProperty;
23 import org.oic.simulator.IntegerProperty;
24 import org.oic.simulator.InvalidArgsException;
25 import org.oic.simulator.ModelProperty;
26 import org.oic.simulator.SimulatorResourceModel;
27 import org.oic.simulator.StringProperty;
29 import junit.framework.TestCase;
31 public class ArrayPropertyTest extends TestCase {
33 protected void setUp() throws Exception {
37 protected void tearDown() throws Exception {
41 public void testArrayProperty_P01() {
42 ArrayProperty.Builder builder = new ArrayProperty.Builder();
43 builder.setElementProperty(new IntegerProperty.Builder().build());
44 ArrayProperty property = builder.build();
46 assertNotNull(property);
49 public void testArrayProperty_N01() {
50 ArrayProperty.Builder builder = new ArrayProperty.Builder();
51 ArrayProperty property = builder.build();
56 public void testIsInteger_P01() {
57 ArrayProperty.Builder builder = new ArrayProperty.Builder();
58 builder.setElementProperty(new IntegerProperty.Builder().build());
59 ArrayProperty property = builder.build();
61 assertNotNull(property);
62 assertTrue(property.isArray());
65 public void testHasRange_P01() {
66 ArrayProperty.Builder builder = new ArrayProperty.Builder();
67 builder.setElementProperty(new IntegerProperty.Builder().build());
68 builder.setRange(1, 2);
70 ArrayProperty property = builder.build();
72 assertNotNull(property);
73 assertTrue(property.hasRange());
76 public void testGetRange_P01() {
77 ArrayProperty.Builder builder = new ArrayProperty.Builder();
78 builder.setElementProperty(new IntegerProperty.Builder().build());
79 builder.setRange(1, 2);
81 ArrayProperty property = builder.build();
83 assertNotNull(property);
84 assertEquals(property.minItems(), 1);
85 assertEquals(property.maxItems(), 2);
88 public void testIsVariable_P01() {
89 ArrayProperty.Builder builder = new ArrayProperty.Builder();
90 builder.setElementProperty(new IntegerProperty.Builder().build());
91 builder.setVariableSize(true);
93 ArrayProperty property = builder.build();
95 assertNotNull(property);
96 assertTrue(property.isVariable());
99 public void testIsUnique_P01() {
100 ArrayProperty.Builder builder = new ArrayProperty.Builder();
101 builder.setElementProperty(new IntegerProperty.Builder().build());
102 builder.setUnique(true);
104 ArrayProperty property = builder.build();
106 assertNotNull(property);
107 assertTrue(property.isUnique());
110 public void testValidateInt1DArray_P01() {
111 ArrayProperty.Builder arrayBuilder = new ArrayProperty.Builder();
112 IntegerProperty.Builder intBuilder = new IntegerProperty.Builder();
113 intBuilder.setRange(1, 10);
114 arrayBuilder.setElementProperty(intBuilder.build());
116 ArrayProperty property = arrayBuilder.build();
118 int[] value = { 1, 5, 7 };
120 assertNotNull(property);
121 assertTrue(property.validate(new AttributeValue(value)));
124 public void testValidateInt1DArray_N01() {
125 ArrayProperty.Builder arrayBuilder = new ArrayProperty.Builder();
126 IntegerProperty.Builder intBuilder = new IntegerProperty.Builder();
127 intBuilder.setRange(1, 10);
128 arrayBuilder.setElementProperty(intBuilder.build());
130 ArrayProperty property = arrayBuilder.build();
132 int[] value = { 1, 15 };
134 assertNotNull(property);
135 assertFalse(property.validate(new AttributeValue(value)));
138 public void testValidateInt1DArray_N02() {
139 ArrayProperty.Builder arrayBuilder = new ArrayProperty.Builder();
140 IntegerProperty.Builder intBuilder = new IntegerProperty.Builder();
141 intBuilder.setRange(1, 10);
142 arrayBuilder.setElementProperty(intBuilder.build());
143 arrayBuilder.setRange(1, 2);
145 ArrayProperty property = arrayBuilder.build();
147 int[] value = { 1, 5, 7 };
149 assertNotNull(property);
150 assertFalse(property.validate(new AttributeValue(value)));
153 public void testValidateInt2DArray_P01() {
154 ArrayProperty.Builder arrayBuilder1 = new ArrayProperty.Builder();
155 ArrayProperty.Builder arrayBuilder2 = new ArrayProperty.Builder();
156 IntegerProperty.Builder intBuilder = new IntegerProperty.Builder();
157 intBuilder.setRange(1, 10);
158 arrayBuilder2.setElementProperty(intBuilder.build());
159 arrayBuilder1.setElementProperty(arrayBuilder2.build());
161 ArrayProperty property = arrayBuilder1.build();
163 int[][] value = { { 1 } };
165 assertNotNull(property);
166 assertTrue(property.validate(new AttributeValue(value)));
169 public void testValidateInt2DArray_N01() {
170 ArrayProperty.Builder arrayBuilder1 = new ArrayProperty.Builder();
171 ArrayProperty.Builder arrayBuilder2 = new ArrayProperty.Builder();
172 IntegerProperty.Builder intBuilder = new IntegerProperty.Builder();
173 intBuilder.setRange(1, 10);
174 arrayBuilder2.setElementProperty(intBuilder.build());
175 arrayBuilder1.setElementProperty(arrayBuilder2.build());
177 ArrayProperty property = arrayBuilder1.build();
179 int[][] value = { { 15 } };
181 assertNotNull(property);
182 assertFalse(property.validate(new AttributeValue(value)));
185 public void testValidateInt2DArray_N02() {
186 ArrayProperty.Builder arrayBuilder1 = new ArrayProperty.Builder();
187 ArrayProperty.Builder arrayBuilder2 = new ArrayProperty.Builder();
188 IntegerProperty.Builder intBuilder = new IntegerProperty.Builder();
189 intBuilder.setRange(1, 10);
190 arrayBuilder2.setElementProperty(intBuilder.build());
191 arrayBuilder2.setRange(1, 1);
192 arrayBuilder1.setElementProperty(arrayBuilder2.build());
193 arrayBuilder1.setRange(1, 1);
195 ArrayProperty property = arrayBuilder1.build();
197 int[][] value = { { 1, 2 } };
199 assertNotNull(property);
200 assertFalse(property.validate(new AttributeValue(value)));
203 public void testValidateInt2DArray_N03() {
204 ArrayProperty.Builder arrayBuilder1 = new ArrayProperty.Builder();
205 ArrayProperty.Builder arrayBuilder2 = new ArrayProperty.Builder();
206 IntegerProperty.Builder intBuilder = new IntegerProperty.Builder();
207 intBuilder.setRange(1, 10);
208 arrayBuilder2.setElementProperty(intBuilder.build());
209 arrayBuilder2.setRange(1, 1);
210 arrayBuilder1.setElementProperty(arrayBuilder2.build());
211 arrayBuilder1.setRange(1, 1);
213 ArrayProperty property = arrayBuilder1.build();
215 int[][] value = { { 1 }, { 2 } };
217 assertNotNull(property);
218 assertFalse(property.validate(new AttributeValue(value)));
221 public void testValidateDouble1DArray_P01() {
222 ArrayProperty.Builder arrayBuilder = new ArrayProperty.Builder();
223 DoubleProperty.Builder doubleBuilder = new DoubleProperty.Builder();
224 doubleBuilder.setRange(1.2, 10.5);
225 arrayBuilder.setElementProperty(doubleBuilder.build());
227 ArrayProperty property = arrayBuilder.build();
229 double[] value = { 1.3, 5.2, 10.4 };
231 assertNotNull(property);
232 assertTrue(property.validate(new AttributeValue(value)));
235 public void testValidateDouble1DArray_N01() {
236 ArrayProperty.Builder arrayBuilder = new ArrayProperty.Builder();
237 DoubleProperty.Builder doubleBuilder = new DoubleProperty.Builder();
238 doubleBuilder.setRange(1.2, 10.5);
239 arrayBuilder.setElementProperty(doubleBuilder.build());
241 ArrayProperty property = arrayBuilder.build();
243 double[] value = { 5.5, 10.9 };
245 assertNotNull(property);
246 assertFalse(property.validate(new AttributeValue(value)));
249 public void testValidateDouble1DArray_N02() {
250 ArrayProperty.Builder arrayBuilder = new ArrayProperty.Builder();
251 DoubleProperty.Builder doubleBuilder = new DoubleProperty.Builder();
252 doubleBuilder.setRange(1.2, 10.5);
253 arrayBuilder.setElementProperty(doubleBuilder.build());
254 arrayBuilder.setRange(1, 2);
256 ArrayProperty property = arrayBuilder.build();
258 double[] value = { 1.3, 5.2, 10.4 };
260 assertNotNull(property);
261 assertFalse(property.validate(new AttributeValue(value)));
264 public void testValidateDouble2DArray_P01() {
265 ArrayProperty.Builder arrayBuilder1 = new ArrayProperty.Builder();
266 ArrayProperty.Builder arrayBuilder2 = new ArrayProperty.Builder();
267 DoubleProperty.Builder doubleBuilder = new DoubleProperty.Builder();
268 doubleBuilder.setRange(1.2, 10.5);
269 arrayBuilder2.setElementProperty(doubleBuilder.build());
270 arrayBuilder1.setElementProperty(arrayBuilder2.build());
272 ArrayProperty property = arrayBuilder1.build();
274 double[][] value = { { 5.5 } };
276 assertNotNull(property);
277 assertTrue(property.validate(new AttributeValue(value)));
280 public void testValidateDouble2DArray_N01() {
281 ArrayProperty.Builder arrayBuilder1 = new ArrayProperty.Builder();
282 ArrayProperty.Builder arrayBuilder2 = new ArrayProperty.Builder();
283 DoubleProperty.Builder doubleBuilder = new DoubleProperty.Builder();
284 doubleBuilder.setRange(1.2, 10.5);
285 arrayBuilder2.setElementProperty(doubleBuilder.build());
286 arrayBuilder1.setElementProperty(arrayBuilder2.build());
288 ArrayProperty property = arrayBuilder1.build();
290 double[][] value = { { 10.9 } };
292 assertNotNull(property);
293 assertFalse(property.validate(new AttributeValue(value)));
296 public void testValidateDouble2DArray_N02() {
297 ArrayProperty.Builder arrayBuilder1 = new ArrayProperty.Builder();
298 ArrayProperty.Builder arrayBuilder2 = new ArrayProperty.Builder();
299 DoubleProperty.Builder doubleBuilder = new DoubleProperty.Builder();
300 doubleBuilder.setRange(1.2, 10.5);
301 arrayBuilder2.setElementProperty(doubleBuilder.build());
302 arrayBuilder2.setRange(1, 1);
303 arrayBuilder1.setElementProperty(arrayBuilder2.build());
304 arrayBuilder1.setRange(1, 1);
306 ArrayProperty property = arrayBuilder1.build();
308 double[][] value = { { 1.5, 2.5 } };
310 assertNotNull(property);
311 assertFalse(property.validate(new AttributeValue(value)));
314 public void testValidateDouble2DArray_N03() {
315 ArrayProperty.Builder arrayBuilder1 = new ArrayProperty.Builder();
316 ArrayProperty.Builder arrayBuilder2 = new ArrayProperty.Builder();
317 DoubleProperty.Builder doubleBuilder = new DoubleProperty.Builder();
318 doubleBuilder.setRange(1.2, 10.5);
319 arrayBuilder2.setElementProperty(doubleBuilder.build());
320 arrayBuilder2.setRange(1, 1);
321 arrayBuilder1.setElementProperty(arrayBuilder2.build());
322 arrayBuilder1.setRange(1, 1);
324 ArrayProperty property = arrayBuilder1.build();
326 double[][] value = { { 1.5 }, { 2.5 } };
328 assertNotNull(property);
329 assertFalse(property.validate(new AttributeValue(value)));
332 public void testValidateBoolean1DArray_P01() {
333 ArrayProperty.Builder arrayBuilder = new ArrayProperty.Builder();
334 BooleanProperty.Builder booleanBuilder = new BooleanProperty.Builder();
335 arrayBuilder.setElementProperty(booleanBuilder.build());
337 ArrayProperty property = arrayBuilder.build();
339 boolean[] value = { true, false };
341 assertNotNull(property);
342 assertTrue(property.validate(new AttributeValue(value)));
345 public void testValidateBoolean1DArray_N01() {
346 ArrayProperty.Builder arrayBuilder = new ArrayProperty.Builder();
347 BooleanProperty.Builder booleanBuilder = new BooleanProperty.Builder();
348 arrayBuilder.setElementProperty(booleanBuilder.build());
349 arrayBuilder.setRange(1, 1);
351 ArrayProperty property = arrayBuilder.build();
353 boolean[] value = { true, false };
355 assertNotNull(property);
356 assertFalse(property.validate(new AttributeValue(value)));
359 public void testValidateBoolean2DArray_P01() {
360 ArrayProperty.Builder arrayBuilder1 = new ArrayProperty.Builder();
361 ArrayProperty.Builder arrayBuilder2 = new ArrayProperty.Builder();
362 BooleanProperty.Builder booleanBuilder = new BooleanProperty.Builder();
363 arrayBuilder2.setElementProperty(booleanBuilder.build());
364 arrayBuilder1.setElementProperty(arrayBuilder2.build());
366 ArrayProperty property = arrayBuilder1.build();
368 boolean[][] value = { { true, false } };
370 assertNotNull(property);
371 assertTrue(property.validate(new AttributeValue(value)));
374 public void testValidateBoolean2DArray_N01() {
375 ArrayProperty.Builder arrayBuilder1 = new ArrayProperty.Builder();
376 ArrayProperty.Builder arrayBuilder2 = new ArrayProperty.Builder();
377 BooleanProperty.Builder booleanBuilder = new BooleanProperty.Builder();
378 arrayBuilder2.setElementProperty(booleanBuilder.build());
379 arrayBuilder2.setRange(1, 1);
380 arrayBuilder1.setElementProperty(arrayBuilder2.build());
382 ArrayProperty property = arrayBuilder1.build();
384 boolean[][] value = { { true, false } };
386 assertNotNull(property);
387 assertFalse(property.validate(new AttributeValue(value)));
390 public void testValidateBoolean2DArray_N02() {
391 ArrayProperty.Builder arrayBuilder1 = new ArrayProperty.Builder();
392 ArrayProperty.Builder arrayBuilder2 = new ArrayProperty.Builder();
393 BooleanProperty.Builder booleanBuilder = new BooleanProperty.Builder();
394 arrayBuilder2.setElementProperty(booleanBuilder.build());
395 arrayBuilder2.setRange(1, 1);
396 arrayBuilder1.setElementProperty(arrayBuilder2.build());
397 arrayBuilder1.setRange(1, 1);
399 ArrayProperty property = arrayBuilder1.build();
401 boolean[][] value = { { true }, { false } };
403 assertNotNull(property);
404 assertFalse(property.validate(new AttributeValue(value)));
407 public void testValidateString1DArray_P01() {
408 ArrayProperty.Builder arrayBuilder = new ArrayProperty.Builder();
409 StringProperty.Builder stringBuilder = new StringProperty.Builder();
410 stringBuilder.setRange(1, 5);
411 arrayBuilder.setElementProperty(stringBuilder.build());
413 ArrayProperty property = arrayBuilder.build();
415 String[] value = { "12345" };
417 assertNotNull(property);
418 assertTrue(property.validate(new AttributeValue(value)));
421 public void testValidateString1DArray_N01() {
422 ArrayProperty.Builder arrayBuilder = new ArrayProperty.Builder();
423 StringProperty.Builder stringBuilder = new StringProperty.Builder();
424 stringBuilder.setRange(1, 5);
425 arrayBuilder.setElementProperty(stringBuilder.build());
427 ArrayProperty property = arrayBuilder.build();
429 String[] value = { "123456" };
431 assertNotNull(property);
432 assertFalse(property.validate(new AttributeValue(value)));
435 public void testValidateString1DArray_N02() {
436 ArrayProperty.Builder arrayBuilder = new ArrayProperty.Builder();
437 StringProperty.Builder stringBuilder = new StringProperty.Builder();
438 stringBuilder.setRange(1, 5);
439 arrayBuilder.setElementProperty(stringBuilder.build());
440 arrayBuilder.setRange(1, 2);
442 ArrayProperty property = arrayBuilder.build();
444 String[] value = { "1", "2", "3", "4" };
446 assertNotNull(property);
447 assertFalse(property.validate(new AttributeValue(value)));
450 public void testValidateString2DArray_P01() {
451 ArrayProperty.Builder arrayBuilder1 = new ArrayProperty.Builder();
452 ArrayProperty.Builder arrayBuilder2 = new ArrayProperty.Builder();
453 StringProperty.Builder stringBuilder = new StringProperty.Builder();
454 stringBuilder.setRange(1, 5);
455 arrayBuilder2.setElementProperty(stringBuilder.build());
456 arrayBuilder1.setElementProperty(arrayBuilder2.build());
458 ArrayProperty property = arrayBuilder1.build();
460 String[][] value = { { "12345" } };
462 assertNotNull(property);
463 assertTrue(property.validate(new AttributeValue(value)));
466 public void testValidateString2DArray_N01() {
467 ArrayProperty.Builder arrayBuilder1 = new ArrayProperty.Builder();
468 ArrayProperty.Builder arrayBuilder2 = new ArrayProperty.Builder();
469 StringProperty.Builder stringBuilder = new StringProperty.Builder();
470 stringBuilder.setRange(1, 5);
471 arrayBuilder2.setElementProperty(stringBuilder.build());
472 arrayBuilder1.setElementProperty(arrayBuilder2.build());
474 ArrayProperty property = arrayBuilder1.build();
476 String[][] value = { { "123456" } };
478 assertNotNull(property);
479 assertFalse(property.validate(new AttributeValue(value)));
482 public void testValidateString2DArray_N02() {
483 ArrayProperty.Builder arrayBuilder1 = new ArrayProperty.Builder();
484 ArrayProperty.Builder arrayBuilder2 = new ArrayProperty.Builder();
485 StringProperty.Builder stringBuilder = new StringProperty.Builder();
486 stringBuilder.setRange(1, 5);
487 arrayBuilder2.setElementProperty(stringBuilder.build());
488 arrayBuilder2.setRange(1, 1);
489 arrayBuilder1.setElementProperty(arrayBuilder2.build());
490 arrayBuilder1.setRange(1, 1);
492 ArrayProperty property = arrayBuilder1.build();
494 String[][] value = { { "1", "2" } };
496 assertNotNull(property);
497 assertFalse(property.validate(new AttributeValue(value)));
500 public void testValidateString2DArray_N03() {
501 ArrayProperty.Builder arrayBuilder1 = new ArrayProperty.Builder();
502 ArrayProperty.Builder arrayBuilder2 = new ArrayProperty.Builder();
503 StringProperty.Builder stringBuilder = new StringProperty.Builder();
504 stringBuilder.setRange(1, 5);
505 arrayBuilder2.setElementProperty(stringBuilder.build());
506 arrayBuilder2.setRange(1, 1);
507 arrayBuilder1.setElementProperty(arrayBuilder2.build());
508 arrayBuilder1.setRange(1, 1);
510 ArrayProperty property = arrayBuilder1.build();
512 String[][] value = { { "1", "2" } };
514 assertNotNull(property);
515 assertFalse(property.validate(new AttributeValue(value)));
518 public void testValidateModel1DArray_P01() {
519 ArrayProperty.Builder arrayBuilder = new ArrayProperty.Builder();
522 ModelProperty modelProperty = new ModelProperty();
524 IntegerProperty.Builder intBuilder = new IntegerProperty.Builder();
525 intBuilder.setRange(1, 10);
526 modelProperty.add("int", intBuilder.build(), true);
528 DoubleProperty.Builder doubleBuilder = new DoubleProperty.Builder();
529 doubleBuilder.setRange(1.5, 5.5);
530 modelProperty.add("double", doubleBuilder.build(), true);
532 BooleanProperty.Builder booleanBuilder = new BooleanProperty.Builder();
533 modelProperty.add("boolean", booleanBuilder.build(), true);
535 StringProperty.Builder stringBuilder = new StringProperty.Builder();
536 stringBuilder.setRange(1, 5);
537 modelProperty.add("string", stringBuilder.build(), true);
539 arrayBuilder.setElementProperty(modelProperty);
542 ArrayProperty property = arrayBuilder.build();
544 SimulatorResourceModel value = new SimulatorResourceModel();
546 value.set("int", new AttributeValue(5));
547 value.set("double", new AttributeValue(3.5));
548 value.set("boolean", new AttributeValue(true));
549 value.set("string", new AttributeValue("12345"));
550 } catch (InvalidArgsException e) {
554 SimulatorResourceModel[] values = { value };
556 assertNotNull(property);
557 assertTrue(property.validate(new AttributeValue(values)));
560 public void testValidateModel1DArray_N01() {
561 ArrayProperty.Builder arrayBuilder = new ArrayProperty.Builder();
564 ModelProperty modelProperty = new ModelProperty();
566 IntegerProperty.Builder intBuilder = new IntegerProperty.Builder();
567 intBuilder.setRange(1, 10);
568 modelProperty.add("int", intBuilder.build(), true);
570 DoubleProperty.Builder doubleBuilder = new DoubleProperty.Builder();
571 doubleBuilder.setRange(1.5, 5.5);
572 modelProperty.add("double", doubleBuilder.build(), true);
574 BooleanProperty.Builder booleanBuilder = new BooleanProperty.Builder();
575 modelProperty.add("boolean", booleanBuilder.build(), true);
577 StringProperty.Builder stringBuilder = new StringProperty.Builder();
578 stringBuilder.setRange(1, 5);
579 modelProperty.add("string", stringBuilder.build(), true);
581 arrayBuilder.setElementProperty(modelProperty);
584 ArrayProperty property = arrayBuilder.build();
586 SimulatorResourceModel value = new SimulatorResourceModel();
588 value.set("int", new AttributeValue(5));
589 value.set("double", new AttributeValue(3.5));
590 value.set("boolean", new AttributeValue(true));
591 value.set("string", new AttributeValue("123456"));
592 } catch (InvalidArgsException e) {
596 SimulatorResourceModel[] values = { value };
598 assertNotNull(property);
599 assertFalse(property.validate(new AttributeValue(values)));