Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
Generated on Tue Jul 12 2022 21:20:30 by
1.7.2