Ram Gandikota / Mbed OS ABCD
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers test_m2mtimerpimpl_classic.cpp Source File

test_m2mtimerpimpl_classic.cpp

00001 /*
00002  * Copyright (c) 2016 ARM Limited. All rights reserved.
00003  * SPDX-License-Identifier: Apache-2.0
00004  * Licensed under the Apache License, Version 2.0 (the License); you may
00005  * not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  * http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an AS IS BASIS, WITHOUT
00012  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 #include "CppUTest/TestHarness.h"
00017 #include "test_m2mtimerpimpl_classic.h"
00018 #include "eventOS_event.h"
00019 #include <unistd.h>
00020 
00021 extern void expired(union sigval sigval);
00022 class TestObserver : public M2MTimerObserver {
00023 
00024 public:
00025     TestObserver(){}
00026     virtual ~TestObserver(){}
00027     void timer_expired(M2MTimerObserver::Type){
00028         visited = true;
00029     }
00030     bool visited;
00031 
00032 };
00033 
00034 Test_M2MTimerPimpl_classic::Test_M2MTimerPimpl_classic()
00035 {
00036     observer = new TestObserver();
00037     timer = new M2MTimerPimpl(*observer);
00038 }
00039 
00040 Test_M2MTimerPimpl_classic::~Test_M2MTimerPimpl_classic()
00041 {
00042     delete observer;
00043     delete timer;
00044 }
00045 
00046 void Test_M2MTimerPimpl_classic::test_start_timer()
00047 {
00048     timer->start_timer(100,M2MTimerObserver::Notdefined,true);
00049     CHECK(!timer->_still_left);
00050     timer->start_timer(10000000000,M2MTimerObserver::Notdefined,true);
00051     CHECK(timer->_still_left);
00052 }
00053 
00054 void Test_M2MTimerPimpl_classic::test_stop_timer()
00055 {
00056     //common_stub::int_value = 0;
00057     timer->start_timer(100,M2MTimerObserver::Notdefined,true);
00058     timer->stop_timer();
00059     timer->start_timer(100,M2MTimerObserver::Notdefined,false);
00060     timer->stop_timer();
00061     //CHECK(timer->_timer_specs.it_value.tv_sec == 0);
00062     //CHECK(timer->_timer_specs.it_value.tv_nsec == 0);
00063 }
00064 
00065 void Test_M2MTimerPimpl_classic::test_timer_expired()
00066 {
00067     observer->visited = false;
00068     timer->timer_expired();
00069     CHECK(observer->visited == true);
00070 
00071     timer->_single_shot = false;
00072     timer->timer_expired();
00073     CHECK(observer->visited == true);
00074 }
00075 
00076 void Test_M2MTimerPimpl_classic::test_start_dtls_timer()
00077 {
00078     timer->start_dtls_timer(10, 100, M2MTimerObserver::Dtls);
00079 }
00080 
00081 void Test_M2MTimerPimpl_classic::test_is_intermediate_interval_passed()
00082 {
00083     timer->start_dtls_timer(2500, 10000, M2MTimerObserver::Dtls);
00084     CHECK(false == timer->is_intermediate_interval_passed());
00085     timer->timer_expired();
00086     CHECK(true == timer->is_intermediate_interval_passed());
00087 }
00088 
00089 void Test_M2MTimerPimpl_classic::test_is_total_interval_passed()
00090 {
00091     timer->start_dtls_timer(250, 2000, M2MTimerObserver::Dtls);
00092     timer->timer_expired();
00093     CHECK(false == timer->is_total_interval_passed());
00094     timer->timer_expired();
00095     CHECK(true == timer->is_total_interval_passed());
00096 }
00097 
00098 extern "C" void tasklet_func(arm_event_s *event);
00099 
00100 void Test_M2MTimerPimpl_classic::test_tasklet_func()
00101 {
00102     arm_event_s event;
00103 
00104     event.event_type = 10;
00105     event.event_id = (-1);
00106 
00107     observer->visited = false;
00108     tasklet_func(&event);
00109     CHECK(!observer->visited);
00110 
00111     event.event_id = timer->get_timer_id();
00112 
00113     tasklet_func(&event);
00114     CHECK(observer->visited);
00115 
00116     observer->visited = false;
00117     timer->_still_left = 1;
00118     tasklet_func(&event);
00119     CHECK(!observer->visited);
00120 }
00121 
00122 void Test_M2MTimerPimpl_classic::test_start_still_left_timer()
00123 {
00124     observer->visited = false;
00125     timer->_still_left = (uint64_t)INT32_MAX + 1;
00126     timer->start_still_left_timer();
00127     CHECK(!observer->visited);
00128     CHECK(timer->_still_left);
00129 
00130     timer->start_still_left_timer();
00131     CHECK(!observer->visited);
00132     CHECK(!timer->_still_left);
00133 
00134     timer->_still_left = 0;
00135     timer->_single_shot = false;
00136     timer->start_still_left_timer();
00137     CHECK(observer->visited);
00138 
00139 }
00140