Merge test folder of test branch
[iotivity.git] / test / src / tc / re / junit / src / org / iotivity / test / re / tc / stc / REResourceCacheTest.java
1 //******************************************************************
2 //
3 // Copyright 2016 Samsung Electronics All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21 package org.iotivity.test.re.tc.stc;
22
23 import org.iotivity.base.ModeType;
24 import org.iotivity.base.OcPlatform;
25 import org.iotivity.base.PlatformConfig;
26 import org.iotivity.base.QualityOfService;
27 import org.iotivity.base.ServiceType;
28 import org.iotivity.service.RcsException;
29 import org.iotivity.service.RcsResourceAttributes;
30 import org.iotivity.service.RcsValue;
31 import org.iotivity.service.client.RcsRemoteResourceObject;
32 import org.iotivity.service.client.RcsRemoteResourceObject.CacheState;
33 import org.iotivity.test.re.tc.helper.REAPIHelper;
34 import static org.iotivity.test.re.tc.helper.ResourceUtil.*;
35 import android.test.InstrumentationTestCase;
36 import android.util.Log;
37
38 public class REResourceCacheTest extends InstrumentationTestCase {
39   private static final String            LOG_TAG    = "RETest";
40   private REAPIHelper                    m_REHelper;
41   private static RcsRemoteResourceObject m_Resource;
42   private StringBuilder                  m_ErrorMsg = new StringBuilder();
43   int m_count = 10;
44
45   protected void setUp() throws Exception {
46     super.setUp();
47
48     m_REHelper = new REAPIHelper();
49     m_ErrorMsg.setLength(0);
50
51     PlatformConfig platformConfigObj = new PlatformConfig(
52         getInstrumentation().getTargetContext(), ServiceType.IN_PROC,
53         ModeType.CLIENT_SERVER, "0.0.0.0", 0, QualityOfService.LOW);
54
55     OcPlatform.Configure(platformConfigObj);
56     Log.i(LOG_TAG, "Configuration done Successfully");
57
58     if (!m_REHelper.disocverResources(m_ErrorMsg)) {
59       assertTrue(
60           "Precondition Failed, No Resource Found!! " + m_ErrorMsg.toString(),
61           false);
62     } else {
63       m_Resource = m_REHelper.getFoundResourceList().get(0);
64       Log.i(LOG_TAG, m_ErrorMsg.toString());
65     }
66
67     m_ErrorMsg.setLength(0);
68   }
69
70   protected void tearDown() throws Exception {
71     super.tearDown();
72
73     m_REHelper.distroyResources();
74
75     if (m_Resource != null) {
76       m_Resource.destroy();
77       m_Resource = null;
78     }
79
80     Log.i(LOG_TAG, "tearDown called for REResourceCacheTest");
81   }
82
83   /**
84    * @since 2015-11-04
85    * @see OnCacheUpdatedListener
86    * @objective Test 'startCaching' function with positive way for Callback
87    *            validation
88    * @target void startCaching(OnCacheUpdatedListener listener)
89    * @test_data OnCacheUpdatedListener function for receiving cached attribute
90    * @pre_condition Remote Resource Object should be instantialized
91    * @procedure Perform startCaching() API
92    * @post_condition None
93    * @expected 1. Callback should be invoked. 2. No crash occurs
94    **/
95   public void testStartCachingWithCallback_CV_P() {
96     try {
97       m_Resource.startCaching(m_REHelper.mOnCacheUpdatedListener);
98       m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
99
100       if (REAPIHelper.g_IsCasheUpdated == false) {
101         fail("Callback did not come");
102       }
103     } catch (RcsException e) {
104       fail("Exception occurred inside testStartCaching_CV_P: "
105           + e.getLocalizedMessage());
106     }
107   }
108
109   /**
110    * @since 2016-03-02
111    * @see None
112    * @objective Test 'startCaching' function with State Change Validation
113    * @target void startCaching(OnCacheUpdatedListener listener)
114    * @target boolean isCaching()
115    * @target void stopCaching()
116    * @test_data Callback function for receiving cached attribute
117    * @pre_condition Remote Resource Object should be instantialized
118    * @procedure 1. Perform startCaching() API 2. Perform isCaching() API 3. Perform
119    *            stopCaching() API 4. Again perform isCaching() API
120    * @post_condition None
121    * @expected 1. isCaching() should return true. 2. Should not throw any exception
122    **/
123   public void testStartCachingWithCallback_SCV_P() {
124     try {
125       m_Resource.startCaching(m_REHelper.mOnCacheUpdatedListener);
126       boolean isCaching = m_Resource.isCaching();
127       assertEquals(
128           "isCaching() API returns false, where it should return true.", true,
129           isCaching);
130
131       m_Resource.stopCaching();
132       isCaching = m_Resource.isCaching();
133       assertEquals(
134           "isCaching() API returns true, where it should return false.", false,
135           isCaching);
136     } catch (Exception e) {
137       fail("Exception occurred inside estStartCachingWithCallback_SCV_P: "
138           + e.getLocalizedMessage());
139     }
140   }
141
142   /**
143    * @since 2016-03-02
144    * @see None
145    * @objective Test 'startCaching' function with Sequential Validation
146    * @target void startCaching(OnCacheUpdatedListener listener)
147    * @target void stopCaching()
148    * @test_data Callback function for receiving cached attribute
149    * @pre_condition Remote Resource Object should be instantialized
150    * @procedure 1. Perform startCaching() API 2. Perform stopCaching() API.
151    * @post_condition None
152    * @expected Should not throw any Exception
153    **/
154   public void testStartCachingWithCallback_SQV_P() {
155     try {
156       m_Resource.startCaching(m_REHelper.mOnCacheUpdatedListener);
157
158       m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
159
160       m_Resource.stopCaching();
161     } catch (Exception e) {
162       fail("Exception occurred inside testStartCachingWithCallback_SQV_P: "
163           + e.getLocalizedMessage());
164     }
165   }
166
167   /**
168    * @since 2016-07-25
169    * @see startCaching(OnCacheUpdatedListener)
170    * @objective Test 'startCaching' function with Null Callback
171    * @target void 1. void startCaching() 2. CacheState getCacheState() 3.
172    *         stopCaching()
173    * @test_data Null Callback function
174    * @pre_condition Remote Resource Object should be instantialized
175    * @procedure 1. Perform startCaching() API 2. Perform getCacheState() API 3.
176    *            Perform stopCaching() API 4. Again perform getCacheState() API
177    * @post_condition None
178    * @expected 1. API should return Cachestate as 'Ready' after startcaching 2.
179    *           Should return Cachestate as 'None' after Stopcaching 3. No
180    *           exception should occur
181    **/
182   public void testStartCachingWithNullCallback_SQV_P() {
183     try {
184       m_Resource.startCaching(null);
185       CacheState cacheState = m_Resource.getCacheState();
186
187       if (cacheState != CacheState.UNREADY) {
188         fail("Cache state should READY after CachingStart. But got "
189             + cacheState);
190       }
191       m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
192
193       m_Resource.stopCaching();
194       cacheState = m_Resource.getCacheState();
195       if (cacheState != CacheState.NONE) {
196         fail(
197             "Cache state should NONE after CachingStop. But got " + cacheState);
198       }
199     } catch (Exception e) {
200       fail(
201           "Exception occurred inside testStartCachingWithNullCallback_SQV_P, exception is: "
202               + e.getLocalizedMessage());
203     }
204   }
205
206   /**
207    * @since 2016-03-02
208    * @see None
209    * @objective Test 'startCaching' function with State Change Validation
210    * @target void startCaching()
211    * @target boolean isCaching()
212    * @target void stopCaching()
213    * @test_data None
214    * @pre_condition Remote Resource Object should be instantialized
215    * @procedure 1. Perform startCaching() API without callback 2. Perform isCaching() API. 3. Perform
216    *            stopCaching() API 4. Perform isCaching() API again.
217    * @post_condition None
218    * @expected 1. isCaching() should return true. 2. No exception occur.
219    **/
220   public void testStartCachingWithoutCallback_SCV_P() {
221     try {
222       m_Resource.startCaching();
223       boolean isCaching = m_Resource.isCaching();
224       assertEquals(
225           "isCaching() API returns false, where it should return true.", true,
226           isCaching);
227
228       m_Resource.stopCaching();
229       isCaching = m_Resource.isCaching();
230       assertEquals(
231           "isCaching() API returns true, where it should return false.", false,
232           isCaching);
233     } catch (Exception e) {
234       fail("Exception occurred inside testStartCachingWithoutCallback_SCV_P: "
235           + e.getLocalizedMessage());
236     }
237   }
238
239   /**
240    * @since 2015-11-04
241    * @see None
242    * @objective Test 'startCaching' function with Sequential Validation
243    * @target void startCaching()
244    * @target void stopCaching()
245    * @test_data None
246    * @pre_condition Remote Resource Object should be instantialized
247    * @procedure 1. Perform startCaching() API 2. Perform stopCaching() API.
248    * @post_condition None
249    * @expected No exception occur.
250    **/
251   public void testStartCachingWithoutCallback_SQV_P() {
252     try {
253       m_Resource.startCaching();
254
255       m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
256
257       m_Resource.stopCaching();
258     } catch (Exception e) {
259       fail("Exception occurred inside testStartCachingWithoutCallback_SCV_P: "
260           + e.getLocalizedMessage());
261     }
262   }
263
264   /**
265    * @since 2015-11-04
266    * @see None
267    * @objective Test 'startCaching' function without callback invoking
268    * @target void startCaching()
269    * @test_data None
270    * @pre_condition Remote Resource Object should be instantialized
271    * @procedure 1. Perform startCaching() API 2. check for IsCasheUpdated
272    * @post_condition None
273    * @expected No crash occurs
274    **/
275   public void testStartCachingWithoutCallback_EG_N() {
276     try {
277       m_Resource.startCaching();
278
279       m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
280
281       if (REAPIHelper.g_IsCasheUpdated) {
282         fail("Callback is coming, while the callback was null");
283       }
284     } catch (RcsException e) {
285       fail("Exception occurred inside StartCachingWithoutCallback_SRC_P: "
286           + e.getLocalizedMessage());
287     }
288   }
289
290   /**
291    * @since 2015-11-04
292    * @see None
293    * @objective Test 'startCaching' function for twice
294    * @target void startCaching(OnCacheUpdatedListener listener)
295    * @test_data None
296    * @pre_condition Remote Resource Object should be instantialized
297    * @procedure Perform startCaching() API twice
298    * @post_condition None
299    * @expected No crash occurs
300    **/
301   public void testStartCachingTwice_VLCC_N() {
302     try {
303       m_Resource.startCaching();
304       m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
305       m_Resource.startCaching();
306
307       fail("Cache is started successfully second time.");
308     } catch (RcsException e) {
309       if (e.getLocalizedMessage().compareTo("Caching already started.") != 0) {
310         fail(
311             "Didn't get proper exception message. \"Cheching Caching already started.\" but got "
312                 + e.getLocalizedMessage());
313       }
314     }
315   }
316
317   /**
318    * @since 2015-11-04
319    * @see startCaching(OnCacheUpdatedListener)
320    * @objective Test 'stopCaching' function with positive basic way
321    * @target void stopCaching()
322    * @test_data None
323    * @pre_condition 1. Remote Resource Object should be instantialized 2.
324    *                Perform startCaching() API
325    * @procedure Perform stopCaching() API with isCaching() API
326    * @post_condition None
327    * @expected The API should not generate any exception
328    **/
329   public void testStopCachingWithisCaching_SQV_P() {
330     try {
331       m_Resource.startCaching(m_REHelper.mOnCacheUpdatedListener);
332
333       m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
334       m_Resource.stopCaching();
335       m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
336
337       if (m_Resource.isCaching() == true) {
338         fail("isCaching() API returns true, where it should return false.");
339       }
340     } catch (Exception e) {
341       fail("Exception occurred inside StopCaching_P: "
342           + e.getLocalizedMessage());
343     }
344   }
345
346   /**
347    * @since 2016-03-02
348    * @see None
349    * @objective Test 'stopCaching' function with Initial/Terminate Loop Check
350    * @target void stopCaching()
351    * @test_data None
352    * @pre_condition Remote Resource Object should be instantialized
353    * @procedure Perform stopCaching() API multiple times
354    * @post_condition None
355    * @expected No crash occurs
356    **/
357   public void testStopCaching_ITLC_P() {
358     for (int i = 0; i < 10; i++) {
359       try {
360         m_Resource.stopCaching();
361       } catch (RcsException e) {
362         assertTrue("Exception occurred inside testStopCaching_ITLC_P: "
363             + e.getLocalizedMessage(), false);
364       }
365     }
366   }
367
368   /**
369    * @since 2015-11-04
370    * @see startCaching(OnCacheUpdatedListener)
371    * @objective Test 'getCachedAttributes' function with positive basic way
372    * @target RcsResourceAttributes getCachedAttributes()
373    * @test_data None
374    * @pre_condition Remote Resource Object should be instantialized
375    * @procedure 1. Perform startCaching() API 2. Perform getCachedAttributes()
376    *            API
377    * @post_condition None
378    * @expected Returned Resource Attributes is not null
379    **/
380   public void testGetCachedAttributes_SQV_P() {
381     try {
382       m_Resource.startCaching(m_REHelper.mOnCacheUpdatedListener);
383       m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
384
385       RcsResourceAttributes attributes = m_Resource.getCachedAttributes();
386
387       if (attributes.size() == 0) {
388         fail("getCachedAttributes() API returned NULL resource attributes");
389       }
390
391       m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
392       if (REAPIHelper.g_IsCasheUpdated == false) {
393         fail("Callback is not coming.");
394       }
395     } catch (RcsException e) {
396       fail("Exception occurred inside GetCachedAttributes_SRC_P: "
397           + e.getLocalizedMessage());
398     }
399   }
400
401   /**
402    * @since 2015-11-04
403    * @see void startCaching()
404    * @objective Test 'getCachedAttributes' function with Sequential Validation
405    * @target RcsResourceAttributes getCachedAttributes()
406    * @test_data None
407    * @pre_condition 1. Remote Resource Object should be instantialized 2.
408    *                Perform startCaching() API.
409    * @procedure Perform getCachedAttributes() API
410    * @post_condition None
411    * @expected Returned Resource Attributes is not null
412    **/
413   public void testGetCachedAttributesWithoutCallback_SQV_P() {
414     try {
415       m_Resource.startCaching();
416       m_REHelper.waitInSecond(CALLBACK_WAIT_MAX);
417
418       RcsResourceAttributes attributes = m_Resource.getCachedAttributes();
419
420       if (attributes.size() == 0) {
421         fail("getCachedAttributes() API returned NULL resource attributes");
422       }
423
424       m_REHelper.waitInSecond(CALLBACK_WAIT_MAX);
425       if (REAPIHelper.g_IsCasheUpdated == true) {
426         fail(
427             "Callback is coming after calling startCaching() without callback.");
428       }
429     } catch (RcsException e) {
430       fail("Exception occurred inside GetCachedAttributes_P: "
431           + e.getLocalizedMessage());
432     }
433   }
434
435   /**
436    * @since 2015-11-04
437    * @see startCaching(OnCacheUpdatedListener)
438    * @objective Test 'getCachedAttribute' function with Sequential Validation
439    * @target RcsValue getCachedAttribute(String key)
440    * @test_data key = "Temperature"
441    * @pre_condition 1. Remote Resource Object should be instantialized 2.
442    *                Perform startCaching() APi with callback
443    * @procedure Perform getCachedAttribute(String key) API
444    * @post_condition None
445    * @expected returned Attribute is not empty
446    **/
447   public void testGetCachedAttributeWithKey_SQV_P() {
448     try {
449       m_Resource.startCaching(m_REHelper.mOnCacheUpdatedListener);
450       m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
451
452       RcsValue value = m_Resource.getCachedAttribute(ATTR_KEY_POWER);
453
454       if (value == null) {
455         fail("Can't getCachedAttribute for " + ATTR_KEY_POWER);
456       }
457
458       if (!(value.asString().equalsIgnoreCase(ATTR_VALUE_POWER_ON)
459           || value.asString().equalsIgnoreCase(ATTR_VALUE_POWER_OFF))) {
460         fail("Got " + value.asString() + " for " + ATTR_KEY_POWER
461             + " it should be " + ATTR_VALUE_POWER_ON + " or "
462             + ATTR_VALUE_POWER_OFF);
463       }
464     } catch (RcsException e) {
465       fail("Exception occurred inside GetCachedAttributeWithKey_SRC_P: "
466           + e.getLocalizedMessage());
467     }
468   }
469
470   /**
471    * @since 2015-11-04
472    * @see None
473    * @objective Test 'getCachedAttribute' function without Caching
474    * @target void getCachedAttribute(string key)
475    * @test_data key = "power"
476    * @pre_condition Remote Resource Object should be instantialized
477    * @procedure Perform getCachedAttributes(string key) API
478    * @post_condition None
479    * @expected returned Attribute is empty
480    **/
481   public void testGetCachedAttributeWithKey_ECRC_N() {
482     try {
483       m_Resource.getCachedAttribute(ATTR_KEY_POWER);
484
485       fail("Successfully got attribute without starting cache.");
486     } catch (RcsException e) {
487       if (e.getLocalizedMessage().compareTo("Caching not started.") != 0) {
488         fail(
489             "Didn't get proper exception message. \"Cheching Caching not started.\" but got "
490                 + e.getLocalizedMessage());
491       }
492     }
493   }
494
495   /**
496    * @since 2017-03-02
497    * @see None
498    * @objective Test 'getCachedAttribute' function with invalid key
499    * @target void getCachedAttribute(string key)
500    * @test_data key = "invalid_key"
501    * @pre_condition Remote Resource Object should be instantialized
502    * @procedure Perform getCachedAttributes(string key) API
503    * @post_condition None
504    * @expected returned Attribute is empty
505    **/
506   public void testGetCachedAttributeWithInvalidKey_EG_N() {
507     try {
508       String key = "invalid_key";
509       m_Resource.getCachedAttribute(key);
510
511       fail("Successfully called getCachedAttribute() with invalid key.");
512     } catch (RcsException e) {
513       if (e.getLocalizedMessage().compareTo("Caching not started.") != 0) {
514         fail(
515             "Didn't get proper exception message. \"Cheching Caching not started.\" but got "
516                 + e.getLocalizedMessage());
517       }
518     }
519   }
520
521   /**
522    * @since 2015-11-04
523    * @see None
524    * @objective Test 'getResourceCacheState' function with Squential Validation
525    * @target void getResourceCacheState()
526    * @test_data None
527    * @pre_condition Remote Resource Object should be instantialized
528    * @procedure 1. Perform getCacheState() API 2. Perform startCaching() API 3.
529    *            Perform getCacheState() API again
530    * @post_condition None
531    * @expected No crash occurs
532    **/
533   public void testGetCacheStateWithoutCallback_SQV_P() {
534     try {
535       CacheState cacheState = m_Resource.getCacheState();
536       if (cacheState != CacheState.NONE) {
537         fail("Cache state should NONE before CachingStart. But got "
538             + cacheState);
539       }
540
541       m_Resource.startCaching();
542
543       m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
544
545       cacheState = m_Resource.getCacheState();
546       if (cacheState != CacheState.READY) {
547         fail("Cache state should READY after CachingStart. But got "
548             + cacheState);
549       }
550     } catch (RcsException e) {
551       fail("Exception occurred inside GetCacheState_P: "
552           + e.getLocalizedMessage());
553     }
554   }
555
556   /**
557    * @since 2017-03-02
558    * @see None
559    * @objective Test 'getCacheState' function with State Transition Condition Check
560    * @target CacheState getCacheState()
561    * @test_data None
562    * @pre_condition 1. Remote Resource Object should be instantialized
563    *                2. Perform startCaching() API
564    *                3. Waited for 5 seconds
565    * @procedure Perform getCacheState() API
566    * @post_condition None
567    * @expected Should return CacheState = READY
568    **/
569   public void testGetCacheState_STCC_P() {
570     CacheState cacheState;
571     try {
572       m_Resource.startCaching();
573
574       cacheState = m_Resource.getCacheState();
575       if (cacheState != CacheState.UNREADY) {
576         fail("Cache state should UNREADY atfter CachingStart. But got "
577             + cacheState);
578       }
579       m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
580
581       cacheState = m_Resource.getCacheState();
582       if (cacheState != CacheState.READY) {
583         fail("Cache state should READY after CachingStart. But got "
584             + cacheState);
585       }
586     } catch (RcsException e) {
587       fail("Exception occurred inside GetCacheState_P: "
588           + e.getLocalizedMessage());
589     }
590   }
591
592   /**
593    * @since 2017-03-02
594    * @see None
595    * @objective Test 'getCacheState' function with State Loop Transition Check
596    * @target CacheState getCacheState()
597    * @test_data None
598    * @pre_condition Remote Resource Object should be instantialized *
599    * @procedure 1. Perform startCaching() API
600    *            2. Perform getCacheState() API
601    *            3. Waited for 5 seconds
602    *            4. Perform getCacheState() API
603    *            5. Perform stopCaching() API
604    *            6. Repeat 1~5 multiple times
605    * @post_condition None
606    * @expected No crash occurs
607    **/
608   public void testGetCacheState_SLCC_P() {
609     CacheState cacheState;
610     try {
611       for (int i = 0; i < m_count; i++)
612       {
613         m_Resource.startCaching();
614
615         cacheState = m_Resource.getCacheState();
616         if (cacheState != CacheState.UNREADY) {
617           fail("Cache state should UNREADY atfter CachingStart. But got "
618               + cacheState);
619         }
620         m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
621
622         cacheState = m_Resource.getCacheState();
623         if (cacheState != CacheState.READY) {
624           fail("Cache state should READY after CachingStart. But got "
625               + cacheState);
626         }
627         m_Resource.stopCaching();
628       }
629     } catch (RcsException e) {
630       fail("Exception occurred inside testGetCacheState_SLCC_P: "
631           + e.getLocalizedMessage());
632     }
633   }
634
635   /**
636    * @since 2015-11-04
637    * @see OnRemoteAttributesReceivedListener
638    * @objective Test 'getRemoteAttributes' function with Sequential Validation
639    * @target void getRemoteAttributes(OnRemoteAttributesReceivedListener
640    *         listener)
641    * @test_data OnRemoteAttributesReceivedListener
642    * @pre_condition Remote Resource Object should be instantialized
643    * @procedure Perform getRemoteAttributes() API
644    * @post_condition None
645    * @expected The API should not generate any exception
646    **/
647   public void testGetRemoteAttributes_SQV_P() {
648     try {
649       m_Resource
650       .getRemoteAttributes(m_REHelper.mOnRemoteAttributesReceivedListener);
651       m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
652
653       if (REAPIHelper.g_IsAttributeReceived == false) {
654         fail("Callback did not come");
655       }
656     } catch (Exception e) {
657       fail("Exception occurred inside GetRemoteAttributes_SQV_P: "
658           + e.getLocalizedMessage());
659     }
660   }
661
662   /**
663    * @since 2015-11-05
664    * @see None
665    * @objective Test 'getRemoteAttributes' function with null Listener
666    * @target void getRemoteAttributes(OnRemoteAttributesReceivedListener
667    *         listener)
668    * @test_data NULL listener
669    * @pre_condition Remote Resource Object should be instantialized
670    * @procedure Perform getRemoteAttributes() API
671    * @post_condition None
672    * @expected The API should not crash
673    **/
674   public void testGetRemoteAttributes_ETC_N() {
675     try {
676       m_Resource.getRemoteAttributes(null);
677       m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
678
679       if (REAPIHelper.g_IsAttributeReceived == true) {
680         fail("Callback is coming while listener was null.");
681       }
682     } catch (NullPointerException enull) {
683       if (enull.getLocalizedMessage().compareTo("listener is null.") != 0) {
684         fail("Expected exception message is \"listener is null.\" but got "
685             + enull.getLocalizedMessage());
686       }
687     } catch (RcsException e) {
688       fail("Exception occurred inside GetRemoteAttributes_N: "
689           + e.getLocalizedMessage());
690     }
691   }
692
693   /**
694    * @since 2015-11-05
695    * @see OnRemoteAttributesReceivedListener
696    * @objective Test 'setRemoteAttributes' function with sequential validation
697    * @target void setRemoteAttributes(RcsResourceAttributes attributes,
698    *         OnRemoteAttributesReceivedListener listener)
699    * @test_data Resource Attributes, listener
700    * @pre_condition Remote Resource Object should be instantialized
701    * @procedure 1. Create resource Attributes 2. Perform setRemoteAttributes()
702    *            API
703    * @post_condition None
704    * @expected The API should not generate any exception
705    **/
706   public void testSetRemoteAttributes_SQV_P() {
707     try {
708       RcsValue rcsValue = new RcsValue(ATTR_VALUE_POWER_OFF);
709       RcsResourceAttributes rcsAttributes = new RcsResourceAttributes();
710       rcsAttributes.put(ATTR_KEY_POWER, rcsValue);
711
712       m_Resource.setRemoteAttributes(rcsAttributes,
713           m_REHelper.mOnRemoteAttributesReceivedListener);
714       m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
715
716       if (REAPIHelper.g_IsAttributeReceived == false) {
717         fail("Callback did not come");
718       }
719
720       RcsResourceAttributes attr = m_REHelper.getRcsResourceAttributes();
721
722       if (attr == null) {
723         Log.e(LOG_TAG, "RcsResourceAttributes is Null");
724       }
725
726       RcsValue receivedValue = attr.get(ATTR_KEY_POWER);
727
728       if (receivedValue != null) {
729         if (!receivedValue.asString().equals(ATTR_VALUE_POWER_OFF)) {
730           fail("Received Value should be " + ATTR_VALUE_POWER_OFF + " but got "
731               + receivedValue.asString());
732         }
733       } else {
734         fail("Can't get the proper set value in callback");
735       }
736     } catch (Exception e) {
737       fail("Exception occurred inside testSetRemoteAttributes_SQV_P: "
738           + e.getLocalizedMessage());
739     }
740   }
741
742   /**
743    * @since 2015-11-05
744    * @see OnRemoteAttributesReceivedListener
745    * @objective Test 'setRemoteAttributes' function without creating Resource
746    *            Attributes
747    * @target void setRemoteAttributes(RcsResourceAttributes attributes,
748    *         OnRemoteAttributesReceivedListener listener)
749    * @test_data Null Resource Attributes, listener
750    * @pre_condition Remote Resource Object should be instantialized
751    * @procedure 1. Create resource Attributes 2. Perform setRemoteAttributes()
752    *            API
753    * @post_condition None
754    * @expected No crash occurs
755    **/
756   public void testSetRemoteAttributes_ECRC_N() {
757     REAPIHelper.g_IsAttributeReceived = false;
758     try {
759       RcsResourceAttributes rcsAttributes = new RcsResourceAttributes();
760
761       m_Resource.setRemoteAttributes(rcsAttributes,
762           m_REHelper.mOnRemoteAttributesReceivedListener);
763       m_REHelper.waitInSecond(CALLBACK_WAIT_MIN);
764
765       if (REAPIHelper.g_IsAttributeReceived == false) {
766         fail("Callback is not coming for setRemoteAttributes");
767       }
768     } catch (RcsException e) {
769       fail("Exception occurred inside SetRemoteAttributes_ECRC_N: "
770           + e.getLocalizedMessage());
771     }
772   }
773 }