Merge branch 'upstream' into tizen
[platform/upstream/iotivity.git] / service / simulator / unittests / SimulatorTest / src / org / oic / simulator / test / ArrayPropertyTest.java
1 /*
2  * Copyright 2016 Samsung Electronics All Rights Reserved.
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 package org.oic.simulator.test;
18
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;
28
29 import junit.framework.TestCase;
30
31 public class ArrayPropertyTest extends TestCase {
32
33     protected void setUp() throws Exception {
34         super.setUp();
35     }
36
37     protected void tearDown() throws Exception {
38         super.tearDown();
39     }
40
41     public void testArrayProperty_P01() {
42         ArrayProperty.Builder builder = new ArrayProperty.Builder();
43         builder.setElementProperty(new IntegerProperty.Builder().build());
44         ArrayProperty property = builder.build();
45
46         assertNotNull(property);
47     }
48
49     public void testArrayProperty_N01() {
50         ArrayProperty.Builder builder = new ArrayProperty.Builder();
51         ArrayProperty property = builder.build();
52
53         assertNull(property);
54     }
55
56     public void testIsInteger_P01() {
57         ArrayProperty.Builder builder = new ArrayProperty.Builder();
58         builder.setElementProperty(new IntegerProperty.Builder().build());
59         ArrayProperty property = builder.build();
60
61         assertNotNull(property);
62         assertTrue(property.isArray());
63     }
64
65     public void testHasRange_P01() {
66         ArrayProperty.Builder builder = new ArrayProperty.Builder();
67         builder.setElementProperty(new IntegerProperty.Builder().build());
68         builder.setRange(1, 2);
69
70         ArrayProperty property = builder.build();
71
72         assertNotNull(property);
73         assertTrue(property.hasRange());
74     }
75
76     public void testGetRange_P01() {
77         ArrayProperty.Builder builder = new ArrayProperty.Builder();
78         builder.setElementProperty(new IntegerProperty.Builder().build());
79         builder.setRange(1, 2);
80
81         ArrayProperty property = builder.build();
82
83         assertNotNull(property);
84         assertEquals(property.minItems(), 1);
85         assertEquals(property.maxItems(), 2);
86     }
87
88     public void testIsVariable_P01() {
89         ArrayProperty.Builder builder = new ArrayProperty.Builder();
90         builder.setElementProperty(new IntegerProperty.Builder().build());
91         builder.setVariableSize(true);
92
93         ArrayProperty property = builder.build();
94
95         assertNotNull(property);
96         assertTrue(property.isVariable());
97     }
98
99     public void testIsUnique_P01() {
100         ArrayProperty.Builder builder = new ArrayProperty.Builder();
101         builder.setElementProperty(new IntegerProperty.Builder().build());
102         builder.setUnique(true);
103
104         ArrayProperty property = builder.build();
105
106         assertNotNull(property);
107         assertTrue(property.isUnique());
108     }
109
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());
115
116         ArrayProperty property = arrayBuilder.build();
117
118         int[] value = { 1, 5, 7 };
119
120         assertNotNull(property);
121         assertTrue(property.validate(new AttributeValue(value)));
122     }
123
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());
129
130         ArrayProperty property = arrayBuilder.build();
131
132         int[] value = { 1, 15 };
133
134         assertNotNull(property);
135         assertFalse(property.validate(new AttributeValue(value)));
136     }
137
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);
144
145         ArrayProperty property = arrayBuilder.build();
146
147         int[] value = { 1, 5, 7 };
148
149         assertNotNull(property);
150         assertFalse(property.validate(new AttributeValue(value)));
151     }
152
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());
160
161         ArrayProperty property = arrayBuilder1.build();
162
163         int[][] value = { { 1 } };
164
165         assertNotNull(property);
166         assertTrue(property.validate(new AttributeValue(value)));
167     }
168
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());
176
177         ArrayProperty property = arrayBuilder1.build();
178
179         int[][] value = { { 15 } };
180
181         assertNotNull(property);
182         assertFalse(property.validate(new AttributeValue(value)));
183     }
184
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);
194
195         ArrayProperty property = arrayBuilder1.build();
196
197         int[][] value = { { 1, 2 } };
198
199         assertNotNull(property);
200         assertFalse(property.validate(new AttributeValue(value)));
201     }
202
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);
212
213         ArrayProperty property = arrayBuilder1.build();
214
215         int[][] value = { { 1 }, { 2 } };
216
217         assertNotNull(property);
218         assertFalse(property.validate(new AttributeValue(value)));
219     }
220
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());
226
227         ArrayProperty property = arrayBuilder.build();
228
229         double[] value = { 1.3, 5.2, 10.4 };
230
231         assertNotNull(property);
232         assertTrue(property.validate(new AttributeValue(value)));
233     }
234
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());
240
241         ArrayProperty property = arrayBuilder.build();
242
243         double[] value = { 5.5, 10.9 };
244
245         assertNotNull(property);
246         assertFalse(property.validate(new AttributeValue(value)));
247     }
248
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);
255
256         ArrayProperty property = arrayBuilder.build();
257
258         double[] value = { 1.3, 5.2, 10.4 };
259
260         assertNotNull(property);
261         assertFalse(property.validate(new AttributeValue(value)));
262     }
263
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());
271
272         ArrayProperty property = arrayBuilder1.build();
273
274         double[][] value = { { 5.5 } };
275
276         assertNotNull(property);
277         assertTrue(property.validate(new AttributeValue(value)));
278     }
279
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());
287
288         ArrayProperty property = arrayBuilder1.build();
289
290         double[][] value = { { 10.9 } };
291
292         assertNotNull(property);
293         assertFalse(property.validate(new AttributeValue(value)));
294     }
295
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);
305
306         ArrayProperty property = arrayBuilder1.build();
307
308         double[][] value = { { 1.5, 2.5 } };
309
310         assertNotNull(property);
311         assertFalse(property.validate(new AttributeValue(value)));
312     }
313
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);
323
324         ArrayProperty property = arrayBuilder1.build();
325
326         double[][] value = { { 1.5 }, { 2.5 } };
327
328         assertNotNull(property);
329         assertFalse(property.validate(new AttributeValue(value)));
330     }
331
332     public void testValidateBoolean1DArray_P01() {
333         ArrayProperty.Builder arrayBuilder = new ArrayProperty.Builder();
334         BooleanProperty.Builder booleanBuilder = new BooleanProperty.Builder();
335         arrayBuilder.setElementProperty(booleanBuilder.build());
336
337         ArrayProperty property = arrayBuilder.build();
338
339         boolean[] value = { true, false };
340
341         assertNotNull(property);
342         assertTrue(property.validate(new AttributeValue(value)));
343     }
344
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);
350
351         ArrayProperty property = arrayBuilder.build();
352
353         boolean[] value = { true, false };
354
355         assertNotNull(property);
356         assertFalse(property.validate(new AttributeValue(value)));
357     }
358
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());
365
366         ArrayProperty property = arrayBuilder1.build();
367
368         boolean[][] value = { { true, false } };
369
370         assertNotNull(property);
371         assertTrue(property.validate(new AttributeValue(value)));
372     }
373
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());
381
382         ArrayProperty property = arrayBuilder1.build();
383
384         boolean[][] value = { { true, false } };
385
386         assertNotNull(property);
387         assertFalse(property.validate(new AttributeValue(value)));
388     }
389
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);
398
399         ArrayProperty property = arrayBuilder1.build();
400
401         boolean[][] value = { { true }, { false } };
402
403         assertNotNull(property);
404         assertFalse(property.validate(new AttributeValue(value)));
405     }
406
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());
412
413         ArrayProperty property = arrayBuilder.build();
414
415         String[] value = { "12345" };
416
417         assertNotNull(property);
418         assertTrue(property.validate(new AttributeValue(value)));
419     }
420
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());
426
427         ArrayProperty property = arrayBuilder.build();
428
429         String[] value = { "123456" };
430
431         assertNotNull(property);
432         assertFalse(property.validate(new AttributeValue(value)));
433     }
434
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);
441
442         ArrayProperty property = arrayBuilder.build();
443
444         String[] value = { "1", "2", "3", "4" };
445
446         assertNotNull(property);
447         assertFalse(property.validate(new AttributeValue(value)));
448     }
449
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());
457
458         ArrayProperty property = arrayBuilder1.build();
459
460         String[][] value = { { "12345" } };
461
462         assertNotNull(property);
463         assertTrue(property.validate(new AttributeValue(value)));
464     }
465
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());
473
474         ArrayProperty property = arrayBuilder1.build();
475
476         String[][] value = { { "123456" } };
477
478         assertNotNull(property);
479         assertFalse(property.validate(new AttributeValue(value)));
480     }
481
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);
491
492         ArrayProperty property = arrayBuilder1.build();
493
494         String[][] value = { { "1", "2" } };
495
496         assertNotNull(property);
497         assertFalse(property.validate(new AttributeValue(value)));
498     }
499
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);
509
510         ArrayProperty property = arrayBuilder1.build();
511
512         String[][] value = { { "1", "2" } };
513
514         assertNotNull(property);
515         assertFalse(property.validate(new AttributeValue(value)));
516     }
517
518     public void testValidateModel1DArray_P01() {
519         ArrayProperty.Builder arrayBuilder = new ArrayProperty.Builder();
520
521         {
522             ModelProperty modelProperty = new ModelProperty();
523
524             IntegerProperty.Builder intBuilder = new IntegerProperty.Builder();
525             intBuilder.setRange(1, 10);
526             modelProperty.add("int", intBuilder.build(), true);
527
528             DoubleProperty.Builder doubleBuilder = new DoubleProperty.Builder();
529             doubleBuilder.setRange(1.5, 5.5);
530             modelProperty.add("double", doubleBuilder.build(), true);
531
532             BooleanProperty.Builder booleanBuilder = new BooleanProperty.Builder();
533             modelProperty.add("boolean", booleanBuilder.build(), true);
534
535             StringProperty.Builder stringBuilder = new StringProperty.Builder();
536             stringBuilder.setRange(1, 5);
537             modelProperty.add("string", stringBuilder.build(), true);
538
539             arrayBuilder.setElementProperty(modelProperty);
540         }
541
542         ArrayProperty property = arrayBuilder.build();
543
544         SimulatorResourceModel value = new SimulatorResourceModel();
545         try {
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) {
551             e.printStackTrace();
552         }
553
554         SimulatorResourceModel[] values = { value };
555
556         assertNotNull(property);
557         assertTrue(property.validate(new AttributeValue(values)));
558     }
559
560     public void testValidateModel1DArray_N01() {
561         ArrayProperty.Builder arrayBuilder = new ArrayProperty.Builder();
562
563         {
564             ModelProperty modelProperty = new ModelProperty();
565
566             IntegerProperty.Builder intBuilder = new IntegerProperty.Builder();
567             intBuilder.setRange(1, 10);
568             modelProperty.add("int", intBuilder.build(), true);
569
570             DoubleProperty.Builder doubleBuilder = new DoubleProperty.Builder();
571             doubleBuilder.setRange(1.5, 5.5);
572             modelProperty.add("double", doubleBuilder.build(), true);
573
574             BooleanProperty.Builder booleanBuilder = new BooleanProperty.Builder();
575             modelProperty.add("boolean", booleanBuilder.build(), true);
576
577             StringProperty.Builder stringBuilder = new StringProperty.Builder();
578             stringBuilder.setRange(1, 5);
579             modelProperty.add("string", stringBuilder.build(), true);
580
581             arrayBuilder.setElementProperty(modelProperty);
582         }
583
584         ArrayProperty property = arrayBuilder.build();
585
586         SimulatorResourceModel value = new SimulatorResourceModel();
587         try {
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) {
593             e.printStackTrace();
594         }
595
596         SimulatorResourceModel[] values = { value };
597
598         assertNotNull(property);
599         assertFalse(property.validate(new AttributeValue(values)));
600     }
601 }