FRDM K64F Metronome

Committer:
ram54288
Date:
Sun May 14 18:37:05 2017 +0000
Revision:
0:dbad57390bd1
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ram54288 0:dbad57390bd1 1 /*
ram54288 0:dbad57390bd1 2 * Copyright (c) 2015 ARM Limited. All rights reserved.
ram54288 0:dbad57390bd1 3 * SPDX-License-Identifier: Apache-2.0
ram54288 0:dbad57390bd1 4 * Licensed under the Apache License, Version 2.0 (the License); you may
ram54288 0:dbad57390bd1 5 * not use this file except in compliance with the License.
ram54288 0:dbad57390bd1 6 * You may obtain a copy of the License at
ram54288 0:dbad57390bd1 7 *
ram54288 0:dbad57390bd1 8 * http://www.apache.org/licenses/LICENSE-2.0
ram54288 0:dbad57390bd1 9 *
ram54288 0:dbad57390bd1 10 * Unless required by applicable law or agreed to in writing, software
ram54288 0:dbad57390bd1 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
ram54288 0:dbad57390bd1 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ram54288 0:dbad57390bd1 13 * See the License for the specific language governing permissions and
ram54288 0:dbad57390bd1 14 * limitations under the License.
ram54288 0:dbad57390bd1 15 */
ram54288 0:dbad57390bd1 16 #include "CppUTest/TestHarness.h"
ram54288 0:dbad57390bd1 17 #include "test_m2mresource.h"
ram54288 0:dbad57390bd1 18 #include "CppUTest/MemoryLeakDetectorMallocMacros.h"
ram54288 0:dbad57390bd1 19 #include "m2mbase_stub.h"
ram54288 0:dbad57390bd1 20 #include "m2mresourceinstance_stub.h"
ram54288 0:dbad57390bd1 21 #include "m2mobjectinstance_stub.h"
ram54288 0:dbad57390bd1 22 #include "m2mtlvdeserializer_stub.h"
ram54288 0:dbad57390bd1 23 #include "m2mreporthandler_stub.h"
ram54288 0:dbad57390bd1 24 #include "m2mobject_stub.h"
ram54288 0:dbad57390bd1 25 #include "common_stub.h"
ram54288 0:dbad57390bd1 26 #include "m2mreporthandler.h"
ram54288 0:dbad57390bd1 27
ram54288 0:dbad57390bd1 28 class TestReportObserver : public M2MReportObserver{
ram54288 0:dbad57390bd1 29 public :
ram54288 0:dbad57390bd1 30 TestReportObserver() {}
ram54288 0:dbad57390bd1 31 ~TestReportObserver() {}
ram54288 0:dbad57390bd1 32 void observation_to_be_sent(m2m::Vector<uint16_t>,bool){ }
ram54288 0:dbad57390bd1 33 };
ram54288 0:dbad57390bd1 34
ram54288 0:dbad57390bd1 35 class Handler : public M2MObservationHandler {
ram54288 0:dbad57390bd1 36
ram54288 0:dbad57390bd1 37 public:
ram54288 0:dbad57390bd1 38
ram54288 0:dbad57390bd1 39 Handler(){}
ram54288 0:dbad57390bd1 40 ~Handler(){}
ram54288 0:dbad57390bd1 41 void observation_to_be_sent(M2MBase *, uint16_t,m2m::Vector<uint16_t>,bool){
ram54288 0:dbad57390bd1 42 visited = true;
ram54288 0:dbad57390bd1 43 }
ram54288 0:dbad57390bd1 44 void send_delayed_response(M2MBase *){}
ram54288 0:dbad57390bd1 45 void resource_to_be_deleted(M2MBase *){visited=true;}
ram54288 0:dbad57390bd1 46 void remove_object(M2MBase *){visited = true;}
ram54288 0:dbad57390bd1 47 void value_updated(M2MBase *,const String&){visited = true;}
ram54288 0:dbad57390bd1 48
ram54288 0:dbad57390bd1 49 void clear() {visited = false;}
ram54288 0:dbad57390bd1 50 bool visited;
ram54288 0:dbad57390bd1 51 };
ram54288 0:dbad57390bd1 52
ram54288 0:dbad57390bd1 53 Test_M2MResource::Test_M2MResource()
ram54288 0:dbad57390bd1 54 {
ram54288 0:dbad57390bd1 55 handler = new Handler();
ram54288 0:dbad57390bd1 56 object = new M2MObject("name", "name");
ram54288 0:dbad57390bd1 57 object_instance = new M2MObjectInstance(*object, "name", "type", "");
ram54288 0:dbad57390bd1 58 resource = new M2MResource(*object_instance,
ram54288 0:dbad57390bd1 59 "name","resource_type",
ram54288 0:dbad57390bd1 60 M2MResourceInstance::INTEGER,false, "name");
ram54288 0:dbad57390bd1 61 }
ram54288 0:dbad57390bd1 62
ram54288 0:dbad57390bd1 63 Test_M2MResource::~Test_M2MResource()
ram54288 0:dbad57390bd1 64 {
ram54288 0:dbad57390bd1 65 delete object;
ram54288 0:dbad57390bd1 66 delete object_instance;
ram54288 0:dbad57390bd1 67 delete resource;
ram54288 0:dbad57390bd1 68 delete handler;
ram54288 0:dbad57390bd1 69 m2mtlvdeserializer_stub::clear();
ram54288 0:dbad57390bd1 70 }
ram54288 0:dbad57390bd1 71
ram54288 0:dbad57390bd1 72 void Test_M2MResource::test_static_resource()
ram54288 0:dbad57390bd1 73 {
ram54288 0:dbad57390bd1 74 u_int8_t value[] = {"value"};
ram54288 0:dbad57390bd1 75 M2MResource *res = new M2MResource(*m2mobject_stub::inst,
ram54288 0:dbad57390bd1 76 "name",
ram54288 0:dbad57390bd1 77 "resource_type",
ram54288 0:dbad57390bd1 78 M2MResourceInstance::INTEGER,
ram54288 0:dbad57390bd1 79 value,
ram54288 0:dbad57390bd1 80 (uint32_t)sizeof(value),"name");
ram54288 0:dbad57390bd1 81
ram54288 0:dbad57390bd1 82 CHECK(res != NULL);
ram54288 0:dbad57390bd1 83 delete res;
ram54288 0:dbad57390bd1 84
ram54288 0:dbad57390bd1 85 }
ram54288 0:dbad57390bd1 86
ram54288 0:dbad57390bd1 87 void Test_M2MResource::test_base_type()
ram54288 0:dbad57390bd1 88 {
ram54288 0:dbad57390bd1 89 m2mresourceinstance_stub::base_type = M2MBase::Resource;
ram54288 0:dbad57390bd1 90 CHECK(M2MBase::Resource == resource->base_type());
ram54288 0:dbad57390bd1 91 }
ram54288 0:dbad57390bd1 92
ram54288 0:dbad57390bd1 93 void Test_M2MResource::test_muliptle_instances()
ram54288 0:dbad57390bd1 94 {
ram54288 0:dbad57390bd1 95 CHECK(false == resource->supports_multiple_instances());
ram54288 0:dbad57390bd1 96 }
ram54288 0:dbad57390bd1 97
ram54288 0:dbad57390bd1 98 void Test_M2MResource::test_handle_observation_attribute()
ram54288 0:dbad57390bd1 99 {
ram54288 0:dbad57390bd1 100 char *d = "s";
ram54288 0:dbad57390bd1 101
ram54288 0:dbad57390bd1 102 m2mresourceinstance_stub::resource_type = M2MResourceInstance::INTEGER;
ram54288 0:dbad57390bd1 103 CHECK(false == resource->handle_observation_attribute(d));
ram54288 0:dbad57390bd1 104
ram54288 0:dbad57390bd1 105 m2mresourceinstance_stub::resource_type = M2MResourceInstance::FLOAT;
ram54288 0:dbad57390bd1 106 CHECK(false == resource->handle_observation_attribute(d));
ram54288 0:dbad57390bd1 107
ram54288 0:dbad57390bd1 108 M2MResourceInstance *res = new M2MResourceInstance(*m2mobjectinstance_stub::resource,
ram54288 0:dbad57390bd1 109 "name",
ram54288 0:dbad57390bd1 110 "type",
ram54288 0:dbad57390bd1 111 M2MResourceInstance::INTEGER,
ram54288 0:dbad57390bd1 112 0,
ram54288 0:dbad57390bd1 113 "name",
ram54288 0:dbad57390bd1 114 false);
ram54288 0:dbad57390bd1 115
ram54288 0:dbad57390bd1 116 resource->add_resource_instance(res);
ram54288 0:dbad57390bd1 117
ram54288 0:dbad57390bd1 118 TestReportObserver obs;
ram54288 0:dbad57390bd1 119 m2mbase_stub::report = new M2MReportHandler(obs);
ram54288 0:dbad57390bd1 120
ram54288 0:dbad57390bd1 121 m2mbase_stub::bool_value = true;
ram54288 0:dbad57390bd1 122 CHECK(false == resource->handle_observation_attribute(d));
ram54288 0:dbad57390bd1 123
ram54288 0:dbad57390bd1 124 resource->_resource_type = M2MResourceInstance::INTEGER;
ram54288 0:dbad57390bd1 125 m2mreporthandler_stub::bool_return = true;
ram54288 0:dbad57390bd1 126 CHECK(true == resource->handle_observation_attribute(d));
ram54288 0:dbad57390bd1 127
ram54288 0:dbad57390bd1 128 m2mbase_stub::bool_value = false;
ram54288 0:dbad57390bd1 129 CHECK(true == resource->handle_observation_attribute(d));
ram54288 0:dbad57390bd1 130
ram54288 0:dbad57390bd1 131 delete m2mbase_stub::report;
ram54288 0:dbad57390bd1 132 m2mbase_stub::report = NULL;
ram54288 0:dbad57390bd1 133 }
ram54288 0:dbad57390bd1 134
ram54288 0:dbad57390bd1 135 void Test_M2MResource::test_add_resource_instance()
ram54288 0:dbad57390bd1 136 {
ram54288 0:dbad57390bd1 137 M2MResourceInstance *res = new M2MResourceInstance(*m2mobjectinstance_stub::resource,
ram54288 0:dbad57390bd1 138 "name",
ram54288 0:dbad57390bd1 139 "type",
ram54288 0:dbad57390bd1 140 M2MResourceInstance::INTEGER,
ram54288 0:dbad57390bd1 141 0,
ram54288 0:dbad57390bd1 142 "name",
ram54288 0:dbad57390bd1 143 false);
ram54288 0:dbad57390bd1 144 resource->add_resource_instance(res);
ram54288 0:dbad57390bd1 145 CHECK(resource->_resource_instance_list.size() == 1);
ram54288 0:dbad57390bd1 146 }
ram54288 0:dbad57390bd1 147
ram54288 0:dbad57390bd1 148 void Test_M2MResource::test_remove_resource_instance()
ram54288 0:dbad57390bd1 149 {
ram54288 0:dbad57390bd1 150 M2MResourceInstance *res = new M2MResourceInstance(*m2mobjectinstance_stub::resource,
ram54288 0:dbad57390bd1 151 "name",
ram54288 0:dbad57390bd1 152 "type",
ram54288 0:dbad57390bd1 153 M2MResourceInstance::STRING,
ram54288 0:dbad57390bd1 154 0,
ram54288 0:dbad57390bd1 155 "name",
ram54288 0:dbad57390bd1 156 false);
ram54288 0:dbad57390bd1 157 resource->_resource_instance_list.push_back(res);
ram54288 0:dbad57390bd1 158 CHECK(resource->remove_resource_instance(0) == true);
ram54288 0:dbad57390bd1 159 }
ram54288 0:dbad57390bd1 160
ram54288 0:dbad57390bd1 161 void Test_M2MResource::test_resource_instance()
ram54288 0:dbad57390bd1 162 {
ram54288 0:dbad57390bd1 163 M2MResourceInstance *res = new M2MResourceInstance(*m2mobjectinstance_stub::resource,
ram54288 0:dbad57390bd1 164 "name",
ram54288 0:dbad57390bd1 165 "type",
ram54288 0:dbad57390bd1 166 M2MResourceInstance::STRING,
ram54288 0:dbad57390bd1 167 0,
ram54288 0:dbad57390bd1 168 "name",
ram54288 0:dbad57390bd1 169 false);
ram54288 0:dbad57390bd1 170 resource->_resource_instance_list.push_back(res);
ram54288 0:dbad57390bd1 171 CHECK(resource->resource_instance(0) != NULL);
ram54288 0:dbad57390bd1 172 }
ram54288 0:dbad57390bd1 173
ram54288 0:dbad57390bd1 174 void Test_M2MResource::test_resource_instances()
ram54288 0:dbad57390bd1 175 {
ram54288 0:dbad57390bd1 176 M2MResourceInstance *res = new M2MResourceInstance(*m2mobjectinstance_stub::resource,
ram54288 0:dbad57390bd1 177 "name",
ram54288 0:dbad57390bd1 178 "type",
ram54288 0:dbad57390bd1 179 M2MResourceInstance::STRING,
ram54288 0:dbad57390bd1 180 0,
ram54288 0:dbad57390bd1 181 "name",
ram54288 0:dbad57390bd1 182 false);
ram54288 0:dbad57390bd1 183 resource->_resource_instance_list.push_back(res);
ram54288 0:dbad57390bd1 184 M2MResourceInstanceList list = resource->resource_instances();
ram54288 0:dbad57390bd1 185 CHECK(list.size() ==1);
ram54288 0:dbad57390bd1 186 }
ram54288 0:dbad57390bd1 187
ram54288 0:dbad57390bd1 188 void Test_M2MResource::test_resource_instance_count()
ram54288 0:dbad57390bd1 189 {
ram54288 0:dbad57390bd1 190 M2MResourceInstance *res = new M2MResourceInstance(*m2mobjectinstance_stub::resource,
ram54288 0:dbad57390bd1 191 "name",
ram54288 0:dbad57390bd1 192 "type",
ram54288 0:dbad57390bd1 193 M2MResourceInstance::STRING,
ram54288 0:dbad57390bd1 194 0,
ram54288 0:dbad57390bd1 195 "name",
ram54288 0:dbad57390bd1 196 false);
ram54288 0:dbad57390bd1 197 resource->_resource_instance_list.push_back(res);
ram54288 0:dbad57390bd1 198 CHECK(resource->resource_instance_count() ==1);
ram54288 0:dbad57390bd1 199 }
ram54288 0:dbad57390bd1 200
ram54288 0:dbad57390bd1 201 void Test_M2MResource::test_add_observation_level()
ram54288 0:dbad57390bd1 202 {
ram54288 0:dbad57390bd1 203 M2MResourceInstance *res = new M2MResourceInstance(*m2mobjectinstance_stub::resource,
ram54288 0:dbad57390bd1 204 "name",
ram54288 0:dbad57390bd1 205 "type",
ram54288 0:dbad57390bd1 206 M2MResourceInstance::STRING,
ram54288 0:dbad57390bd1 207 0,
ram54288 0:dbad57390bd1 208 "name",
ram54288 0:dbad57390bd1 209 false);
ram54288 0:dbad57390bd1 210 resource->_resource_instance_list.push_back(res);
ram54288 0:dbad57390bd1 211
ram54288 0:dbad57390bd1 212 M2MBase::Observation obs_level = M2MBase::R_Attribute;
ram54288 0:dbad57390bd1 213
ram54288 0:dbad57390bd1 214 resource->add_observation_level(obs_level);
ram54288 0:dbad57390bd1 215 }
ram54288 0:dbad57390bd1 216
ram54288 0:dbad57390bd1 217 void Test_M2MResource::test_remove_observation_level()
ram54288 0:dbad57390bd1 218 {
ram54288 0:dbad57390bd1 219 M2MResourceInstance *res = new M2MResourceInstance(*m2mobjectinstance_stub::resource,
ram54288 0:dbad57390bd1 220 "name",
ram54288 0:dbad57390bd1 221 "type",
ram54288 0:dbad57390bd1 222 M2MResourceInstance::STRING,
ram54288 0:dbad57390bd1 223 0,
ram54288 0:dbad57390bd1 224 "name",
ram54288 0:dbad57390bd1 225 false);
ram54288 0:dbad57390bd1 226 resource->_resource_instance_list.push_back(res);
ram54288 0:dbad57390bd1 227
ram54288 0:dbad57390bd1 228 M2MBase::Observation obs_level = M2MBase::R_Attribute;
ram54288 0:dbad57390bd1 229
ram54288 0:dbad57390bd1 230 resource->remove_observation_level(obs_level);
ram54288 0:dbad57390bd1 231 }
ram54288 0:dbad57390bd1 232
ram54288 0:dbad57390bd1 233 void Test_M2MResource::test_handle_get_request()
ram54288 0:dbad57390bd1 234 {
ram54288 0:dbad57390bd1 235 uint8_t value[] = {"name"};
ram54288 0:dbad57390bd1 236 sn_coap_hdr_s *coap_header = (sn_coap_hdr_s *)malloc(sizeof(sn_coap_hdr_s));
ram54288 0:dbad57390bd1 237 memset(coap_header, 0, sizeof(sn_coap_hdr_s));
ram54288 0:dbad57390bd1 238
ram54288 0:dbad57390bd1 239 coap_header->uri_path_ptr = value;
ram54288 0:dbad57390bd1 240 coap_header->uri_path_len = sizeof(value);
ram54288 0:dbad57390bd1 241
ram54288 0:dbad57390bd1 242 coap_header->msg_code = COAP_MSG_CODE_REQUEST_GET;
ram54288 0:dbad57390bd1 243
ram54288 0:dbad57390bd1 244 common_stub::int_value = 0;
ram54288 0:dbad57390bd1 245 m2mbase_stub::string_value = "name";
ram54288 0:dbad57390bd1 246
ram54288 0:dbad57390bd1 247 m2mbase_stub::operation = M2MBase::GET_ALLOWED;
ram54288 0:dbad57390bd1 248 m2mbase_stub::uint8_value = 200;
ram54288 0:dbad57390bd1 249
ram54288 0:dbad57390bd1 250 common_stub::coap_header = (sn_coap_hdr_ *)malloc(sizeof(sn_coap_hdr_));
ram54288 0:dbad57390bd1 251 memset(common_stub::coap_header,0,sizeof(sn_coap_hdr_));
ram54288 0:dbad57390bd1 252 common_stub::coap_header->options_list_ptr = (sn_coap_options_list_s*)malloc(sizeof(sn_coap_options_list_s));
ram54288 0:dbad57390bd1 253
ram54288 0:dbad57390bd1 254 coap_header->token_ptr = (uint8_t*)malloc(sizeof(value));
ram54288 0:dbad57390bd1 255 memcpy(coap_header->token_ptr, value, sizeof(value));
ram54288 0:dbad57390bd1 256
ram54288 0:dbad57390bd1 257 coap_header->options_list_ptr = (sn_coap_options_list_s*)malloc(sizeof(sn_coap_options_list_s));
ram54288 0:dbad57390bd1 258 coap_header->options_list_ptr->observe = 0;
ram54288 0:dbad57390bd1 259
ram54288 0:dbad57390bd1 260 coap_header->content_format = sn_coap_content_format_e(110);
ram54288 0:dbad57390bd1 261
ram54288 0:dbad57390bd1 262 m2mresourceinstance_stub::header = NULL;
ram54288 0:dbad57390bd1 263
ram54288 0:dbad57390bd1 264 M2MResourceInstance *res_instance = new M2MResourceInstance(*m2mobjectinstance_stub::resource,
ram54288 0:dbad57390bd1 265 "name",
ram54288 0:dbad57390bd1 266 "res2",
ram54288 0:dbad57390bd1 267 M2MResourceInstance::STRING,
ram54288 0:dbad57390bd1 268 0,
ram54288 0:dbad57390bd1 269 "name",
ram54288 0:dbad57390bd1 270 false);
ram54288 0:dbad57390bd1 271
ram54288 0:dbad57390bd1 272 M2MResourceInstance *res_instance_1 = new M2MResourceInstance(*m2mobjectinstance_stub::resource,
ram54288 0:dbad57390bd1 273 "name",
ram54288 0:dbad57390bd1 274 "res2",
ram54288 0:dbad57390bd1 275 M2MResourceInstance::STRING,
ram54288 0:dbad57390bd1 276 0,
ram54288 0:dbad57390bd1 277 "name",
ram54288 0:dbad57390bd1 278 false);
ram54288 0:dbad57390bd1 279 CHECK(resource->handle_get_request(NULL,coap_header,handler) == NULL);
ram54288 0:dbad57390bd1 280
ram54288 0:dbad57390bd1 281 resource->_has_multiple_instances = true;
ram54288 0:dbad57390bd1 282 resource->add_resource_instance(res_instance);
ram54288 0:dbad57390bd1 283 resource->add_resource_instance(res_instance_1);
ram54288 0:dbad57390bd1 284
ram54288 0:dbad57390bd1 285 CHECK(resource->handle_get_request(NULL,coap_header,handler) != NULL);
ram54288 0:dbad57390bd1 286
ram54288 0:dbad57390bd1 287
ram54288 0:dbad57390bd1 288 CHECK(resource->handle_get_request(NULL,coap_header,handler) != NULL);
ram54288 0:dbad57390bd1 289
ram54288 0:dbad57390bd1 290 // Not OMA TLV or JSON
ram54288 0:dbad57390bd1 291 common_stub::coap_header->content_format = sn_coap_content_format_e(-1);
ram54288 0:dbad57390bd1 292 m2mbase_stub::uint8_value = 110;
ram54288 0:dbad57390bd1 293 coap_header->content_format = sn_coap_content_format_e(-1);
ram54288 0:dbad57390bd1 294
ram54288 0:dbad57390bd1 295 CHECK(resource->handle_get_request(NULL,coap_header,handler) != NULL);
ram54288 0:dbad57390bd1 296
ram54288 0:dbad57390bd1 297 // OMA TLV
ram54288 0:dbad57390bd1 298 m2mbase_stub::uint8_value = 99;
ram54288 0:dbad57390bd1 299 CHECK(resource->handle_get_request(NULL,coap_header,handler) != NULL);
ram54288 0:dbad57390bd1 300
ram54288 0:dbad57390bd1 301 // OMA JSON
ram54288 0:dbad57390bd1 302 m2mbase_stub::uint8_value = 100;
ram54288 0:dbad57390bd1 303 CHECK(resource->handle_get_request(NULL,coap_header,handler) != NULL);
ram54288 0:dbad57390bd1 304
ram54288 0:dbad57390bd1 305 coap_header->options_list_ptr->observe = 0;
ram54288 0:dbad57390bd1 306 m2mbase_stub::uint16_value = 0x1c1c;
ram54288 0:dbad57390bd1 307 m2mbase_stub::bool_value = true;
ram54288 0:dbad57390bd1 308
ram54288 0:dbad57390bd1 309 CHECK(resource->handle_get_request(NULL,coap_header,handler) != NULL);
ram54288 0:dbad57390bd1 310
ram54288 0:dbad57390bd1 311 m2mbase_stub::uint16_value = 10;
ram54288 0:dbad57390bd1 312 CHECK(resource->handle_get_request(NULL,coap_header,handler) != NULL);
ram54288 0:dbad57390bd1 313
ram54288 0:dbad57390bd1 314 coap_header->options_list_ptr->observe = 0;
ram54288 0:dbad57390bd1 315
ram54288 0:dbad57390bd1 316 CHECK(resource->handle_get_request(NULL,coap_header,handler) != NULL);
ram54288 0:dbad57390bd1 317
ram54288 0:dbad57390bd1 318 coap_header->options_list_ptr->observe = 1;
ram54288 0:dbad57390bd1 319 CHECK(resource->handle_get_request(NULL,coap_header,handler) != NULL);
ram54288 0:dbad57390bd1 320
ram54288 0:dbad57390bd1 321 // Not observable
ram54288 0:dbad57390bd1 322 m2mbase_stub::bool_value = false;
ram54288 0:dbad57390bd1 323 CHECK(resource->handle_get_request(NULL,coap_header,handler) != NULL);
ram54288 0:dbad57390bd1 324
ram54288 0:dbad57390bd1 325 m2mbase_stub::operation = M2MBase::NOT_ALLOWED;
ram54288 0:dbad57390bd1 326 CHECK(resource->handle_get_request(NULL,coap_header,handler) != NULL);
ram54288 0:dbad57390bd1 327
ram54288 0:dbad57390bd1 328 CHECK(resource->handle_get_request(NULL,NULL,handler) != NULL);
ram54288 0:dbad57390bd1 329
ram54288 0:dbad57390bd1 330 if(coap_header->token_ptr) {
ram54288 0:dbad57390bd1 331 free(coap_header->token_ptr);
ram54288 0:dbad57390bd1 332 coap_header->token_ptr = NULL;
ram54288 0:dbad57390bd1 333 }
ram54288 0:dbad57390bd1 334 if(coap_header->options_list_ptr) {
ram54288 0:dbad57390bd1 335 free(coap_header->options_list_ptr);
ram54288 0:dbad57390bd1 336 coap_header->options_list_ptr = NULL;
ram54288 0:dbad57390bd1 337 }
ram54288 0:dbad57390bd1 338
ram54288 0:dbad57390bd1 339 if(common_stub::coap_header){
ram54288 0:dbad57390bd1 340 if(common_stub::coap_header->options_list_ptr) {
ram54288 0:dbad57390bd1 341 free(common_stub::coap_header->options_list_ptr);
ram54288 0:dbad57390bd1 342 common_stub::coap_header->options_list_ptr = NULL;
ram54288 0:dbad57390bd1 343 }
ram54288 0:dbad57390bd1 344 free(common_stub::coap_header);
ram54288 0:dbad57390bd1 345 common_stub::coap_header = NULL;
ram54288 0:dbad57390bd1 346 }
ram54288 0:dbad57390bd1 347 free(coap_header);
ram54288 0:dbad57390bd1 348 coap_header = NULL;
ram54288 0:dbad57390bd1 349
ram54288 0:dbad57390bd1 350 m2mbase_stub::clear();
ram54288 0:dbad57390bd1 351 common_stub::clear();
ram54288 0:dbad57390bd1 352 }
ram54288 0:dbad57390bd1 353
ram54288 0:dbad57390bd1 354 void Test_M2MResource::test_handle_put_request()
ram54288 0:dbad57390bd1 355 {
ram54288 0:dbad57390bd1 356 uint8_t value[] = {"name"};
ram54288 0:dbad57390bd1 357 bool execute_value_updated = false;
ram54288 0:dbad57390bd1 358 sn_coap_hdr_s *coap_header = (sn_coap_hdr_s *)malloc(sizeof(sn_coap_hdr_s));
ram54288 0:dbad57390bd1 359 TestReportObserver obs;
ram54288 0:dbad57390bd1 360 m2mbase_stub::report = new M2MReportHandler(obs);
ram54288 0:dbad57390bd1 361
ram54288 0:dbad57390bd1 362 memset(coap_header, 0, sizeof(sn_coap_hdr_s));
ram54288 0:dbad57390bd1 363
ram54288 0:dbad57390bd1 364 coap_header->uri_path_ptr = value;
ram54288 0:dbad57390bd1 365 coap_header->uri_path_len = sizeof(value);
ram54288 0:dbad57390bd1 366
ram54288 0:dbad57390bd1 367 coap_header->msg_code = COAP_MSG_CODE_REQUEST_PUT;
ram54288 0:dbad57390bd1 368
ram54288 0:dbad57390bd1 369 common_stub::int_value = 0;
ram54288 0:dbad57390bd1 370 m2mbase_stub::string_value = "name";
ram54288 0:dbad57390bd1 371
ram54288 0:dbad57390bd1 372 m2mbase_stub::operation = M2MBase::PUT_ALLOWED;
ram54288 0:dbad57390bd1 373 m2mbase_stub::uint8_value = 200;
ram54288 0:dbad57390bd1 374
ram54288 0:dbad57390bd1 375 common_stub::coap_header = (sn_coap_hdr_ *)malloc(sizeof(sn_coap_hdr_));
ram54288 0:dbad57390bd1 376 memset(common_stub::coap_header,0,sizeof(sn_coap_hdr_));
ram54288 0:dbad57390bd1 377
ram54288 0:dbad57390bd1 378 coap_header->payload_ptr = (uint8_t*)malloc(1);
ram54288 0:dbad57390bd1 379
ram54288 0:dbad57390bd1 380 sn_coap_hdr_s *coap_response = NULL;
ram54288 0:dbad57390bd1 381
ram54288 0:dbad57390bd1 382 m2mresourceinstance_stub::header = NULL;
ram54288 0:dbad57390bd1 383
ram54288 0:dbad57390bd1 384 CHECK(resource->handle_put_request(NULL,coap_header,handler,execute_value_updated) == NULL);
ram54288 0:dbad57390bd1 385
ram54288 0:dbad57390bd1 386 resource->_has_multiple_instances = true;
ram54288 0:dbad57390bd1 387 m2mbase_stub::uint8_value = 99;
ram54288 0:dbad57390bd1 388 coap_header->content_format = sn_coap_content_format_e(-1);
ram54288 0:dbad57390bd1 389 coap_response = resource->handle_put_request(NULL,coap_header,handler,execute_value_updated);
ram54288 0:dbad57390bd1 390 CHECK( coap_response != NULL);
ram54288 0:dbad57390bd1 391
ram54288 0:dbad57390bd1 392 m2mbase_stub::uint8_value = 0;
ram54288 0:dbad57390bd1 393
ram54288 0:dbad57390bd1 394 coap_header->options_list_ptr = (sn_coap_options_list_s*)malloc(sizeof(sn_coap_options_list_s));
ram54288 0:dbad57390bd1 395 coap_header->options_list_ptr->uri_query_ptr = value;
ram54288 0:dbad57390bd1 396 coap_header->options_list_ptr->uri_query_len = sizeof(value);
ram54288 0:dbad57390bd1 397
ram54288 0:dbad57390bd1 398 coap_header->content_format = sn_coap_content_format_e(99);
ram54288 0:dbad57390bd1 399 m2mtlvdeserializer_stub::bool_value = true;
ram54288 0:dbad57390bd1 400
ram54288 0:dbad57390bd1 401 m2mbase_stub::bool_value = false;
ram54288 0:dbad57390bd1 402
ram54288 0:dbad57390bd1 403
ram54288 0:dbad57390bd1 404 coap_response = resource->handle_put_request(NULL,coap_header,handler,execute_value_updated);
ram54288 0:dbad57390bd1 405 CHECK( coap_response != NULL);
ram54288 0:dbad57390bd1 406
ram54288 0:dbad57390bd1 407 free(coap_header->options_list_ptr);
ram54288 0:dbad57390bd1 408 coap_header->options_list_ptr = NULL;
ram54288 0:dbad57390bd1 409
ram54288 0:dbad57390bd1 410 coap_response = resource->handle_put_request(NULL,coap_header,handler,execute_value_updated);
ram54288 0:dbad57390bd1 411 CHECK( coap_response != NULL);
ram54288 0:dbad57390bd1 412
ram54288 0:dbad57390bd1 413 m2mtlvdeserializer_stub::bool_value = false;
ram54288 0:dbad57390bd1 414
ram54288 0:dbad57390bd1 415 coap_response = resource->handle_put_request(NULL,coap_header,handler,execute_value_updated);
ram54288 0:dbad57390bd1 416
ram54288 0:dbad57390bd1 417 CHECK( coap_response != NULL);
ram54288 0:dbad57390bd1 418
ram54288 0:dbad57390bd1 419 m2mtlvdeserializer_stub::error = M2MTLVDeserializer::NotFound;
ram54288 0:dbad57390bd1 420 coap_response = resource->handle_put_request(NULL,coap_header,handler,execute_value_updated);
ram54288 0:dbad57390bd1 421
ram54288 0:dbad57390bd1 422 CHECK( coap_response != NULL);
ram54288 0:dbad57390bd1 423
ram54288 0:dbad57390bd1 424 m2mtlvdeserializer_stub::error = M2MTLVDeserializer::NotValid;
ram54288 0:dbad57390bd1 425 coap_response = resource->handle_put_request(NULL,coap_header,handler,execute_value_updated);
ram54288 0:dbad57390bd1 426
ram54288 0:dbad57390bd1 427 CHECK( coap_response != NULL);
ram54288 0:dbad57390bd1 428
ram54288 0:dbad57390bd1 429 m2mtlvdeserializer_stub::error = M2MTLVDeserializer::NotAllowed;
ram54288 0:dbad57390bd1 430 coap_response = resource->handle_put_request(NULL,coap_header,handler,execute_value_updated);
ram54288 0:dbad57390bd1 431
ram54288 0:dbad57390bd1 432 CHECK( coap_response != NULL);
ram54288 0:dbad57390bd1 433
ram54288 0:dbad57390bd1 434 coap_header->content_format = sn_coap_content_format_e(100);
ram54288 0:dbad57390bd1 435
ram54288 0:dbad57390bd1 436 coap_response = resource->handle_put_request(NULL,coap_header,handler,execute_value_updated);
ram54288 0:dbad57390bd1 437
ram54288 0:dbad57390bd1 438 CHECK( coap_response != NULL);
ram54288 0:dbad57390bd1 439
ram54288 0:dbad57390bd1 440 m2mbase_stub::bool_value = true;
ram54288 0:dbad57390bd1 441
ram54288 0:dbad57390bd1 442 coap_response = resource->handle_put_request(NULL,coap_header,handler,execute_value_updated);
ram54288 0:dbad57390bd1 443
ram54288 0:dbad57390bd1 444 CHECK( coap_response != NULL);
ram54288 0:dbad57390bd1 445
ram54288 0:dbad57390bd1 446 m2mbase_stub::operation = M2MBase::NOT_ALLOWED;
ram54288 0:dbad57390bd1 447
ram54288 0:dbad57390bd1 448 coap_response = resource->handle_put_request(NULL,coap_header,handler,execute_value_updated);
ram54288 0:dbad57390bd1 449
ram54288 0:dbad57390bd1 450 CHECK( coap_response != NULL);
ram54288 0:dbad57390bd1 451
ram54288 0:dbad57390bd1 452 coap_response = resource->handle_put_request(NULL,NULL,handler,execute_value_updated);
ram54288 0:dbad57390bd1 453
ram54288 0:dbad57390bd1 454 CHECK( coap_response != NULL);
ram54288 0:dbad57390bd1 455
ram54288 0:dbad57390bd1 456 //free(coap_header->options_list_ptr);
ram54288 0:dbad57390bd1 457 free(coap_header->payload_ptr);
ram54288 0:dbad57390bd1 458 free(common_stub::coap_header);
ram54288 0:dbad57390bd1 459 free(coap_header);
ram54288 0:dbad57390bd1 460 delete m2mbase_stub::report;
ram54288 0:dbad57390bd1 461 m2mbase_stub::report = NULL;
ram54288 0:dbad57390bd1 462 m2mtlvdeserializer_stub::clear();
ram54288 0:dbad57390bd1 463 common_stub::clear();
ram54288 0:dbad57390bd1 464 m2mbase_stub::clear();
ram54288 0:dbad57390bd1 465 }
ram54288 0:dbad57390bd1 466
ram54288 0:dbad57390bd1 467 void Test_M2MResource::test_handle_post_request()
ram54288 0:dbad57390bd1 468 {
ram54288 0:dbad57390bd1 469 uint8_t value[] = {"name"};
ram54288 0:dbad57390bd1 470 bool execute_value_updated = false;
ram54288 0:dbad57390bd1 471 sn_coap_hdr_s *coap_header = (sn_coap_hdr_s *)malloc(sizeof(sn_coap_hdr_s));
ram54288 0:dbad57390bd1 472 memset(coap_header, 0, sizeof(sn_coap_hdr_s));
ram54288 0:dbad57390bd1 473
ram54288 0:dbad57390bd1 474 coap_header->uri_path_ptr = value;
ram54288 0:dbad57390bd1 475 coap_header->uri_path_len = sizeof(value);
ram54288 0:dbad57390bd1 476
ram54288 0:dbad57390bd1 477 coap_header->msg_code = COAP_MSG_CODE_REQUEST_POST;
ram54288 0:dbad57390bd1 478
ram54288 0:dbad57390bd1 479 String *name = new String("name");
ram54288 0:dbad57390bd1 480 common_stub::int_value = 0;
ram54288 0:dbad57390bd1 481 m2mbase_stub::string_value = "name";
ram54288 0:dbad57390bd1 482
ram54288 0:dbad57390bd1 483 m2mbase_stub::operation = M2MBase::POST_ALLOWED;
ram54288 0:dbad57390bd1 484 m2mbase_stub::uint8_value = 200;
ram54288 0:dbad57390bd1 485
ram54288 0:dbad57390bd1 486 common_stub::coap_header = (sn_coap_hdr_ *)malloc(sizeof(sn_coap_hdr_));
ram54288 0:dbad57390bd1 487 memset(common_stub::coap_header,0,sizeof(sn_coap_hdr_));
ram54288 0:dbad57390bd1 488
ram54288 0:dbad57390bd1 489 coap_header->payload_ptr = (uint8_t*)malloc(1);
ram54288 0:dbad57390bd1 490
ram54288 0:dbad57390bd1 491 coap_header->options_list_ptr = (sn_coap_options_list_s*)malloc(sizeof(sn_coap_options_list_s));
ram54288 0:dbad57390bd1 492 coap_header->options_list_ptr->uri_query_ptr = value;
ram54288 0:dbad57390bd1 493 coap_header->options_list_ptr->uri_query_len = sizeof(value);
ram54288 0:dbad57390bd1 494
ram54288 0:dbad57390bd1 495 coap_header->content_format = sn_coap_content_format_e(99);
ram54288 0:dbad57390bd1 496
ram54288 0:dbad57390bd1 497
ram54288 0:dbad57390bd1 498 resource->_delayed_response = true;
ram54288 0:dbad57390bd1 499 resource->_delayed_token = (uint8_t*)malloc(1);
ram54288 0:dbad57390bd1 500 *resource->_delayed_token = 2;
ram54288 0:dbad57390bd1 501 coap_header->token_ptr = (uint8_t*)malloc(1);
ram54288 0:dbad57390bd1 502 *coap_header->token_ptr = 1;
ram54288 0:dbad57390bd1 503 coap_header->token_len = 1;
ram54288 0:dbad57390bd1 504
ram54288 0:dbad57390bd1 505 m2mbase_stub::bool_value = false;
ram54288 0:dbad57390bd1 506 m2mresourceinstance_stub::string_value = name;
ram54288 0:dbad57390bd1 507
ram54288 0:dbad57390bd1 508 CHECK(resource->handle_post_request(NULL,coap_header,handler,execute_value_updated) != NULL);
ram54288 0:dbad57390bd1 509
ram54288 0:dbad57390bd1 510 coap_header->content_format = sn_coap_content_format_e(0);
ram54288 0:dbad57390bd1 511
ram54288 0:dbad57390bd1 512 CHECK(resource->handle_post_request(NULL,coap_header,handler,execute_value_updated) != NULL);
ram54288 0:dbad57390bd1 513
ram54288 0:dbad57390bd1 514 m2mresourceinstance_stub::int_value = sizeof(value);
ram54288 0:dbad57390bd1 515 m2mresourceinstance_stub::value = value;
ram54288 0:dbad57390bd1 516
ram54288 0:dbad57390bd1 517 resource->_delayed_response = false;
ram54288 0:dbad57390bd1 518 sn_coap_hdr_s *coap_response = resource->handle_post_request(NULL,coap_header,handler,execute_value_updated);
ram54288 0:dbad57390bd1 519
ram54288 0:dbad57390bd1 520 CHECK(coap_response != NULL);
ram54288 0:dbad57390bd1 521 free(coap_response->payload_ptr);
ram54288 0:dbad57390bd1 522
ram54288 0:dbad57390bd1 523 m2mbase_stub::operation = M2MBase::NOT_ALLOWED;
ram54288 0:dbad57390bd1 524 CHECK(resource->handle_post_request(NULL,coap_header,handler,execute_value_updated) != NULL);
ram54288 0:dbad57390bd1 525
ram54288 0:dbad57390bd1 526 CHECK(resource->handle_post_request(NULL,NULL,handler,execute_value_updated) != NULL);
ram54288 0:dbad57390bd1 527
ram54288 0:dbad57390bd1 528 free(coap_header->token_ptr);
ram54288 0:dbad57390bd1 529 free(coap_header->options_list_ptr);
ram54288 0:dbad57390bd1 530 free(coap_header->payload_ptr);
ram54288 0:dbad57390bd1 531
ram54288 0:dbad57390bd1 532 delete name;
ram54288 0:dbad57390bd1 533 free(coap_header);
ram54288 0:dbad57390bd1 534 free(common_stub::coap_header);
ram54288 0:dbad57390bd1 535
ram54288 0:dbad57390bd1 536 m2mbase_stub::clear();
ram54288 0:dbad57390bd1 537 common_stub::clear();
ram54288 0:dbad57390bd1 538 }
ram54288 0:dbad57390bd1 539
ram54288 0:dbad57390bd1 540 void Test_M2MResource::test_notification_update()
ram54288 0:dbad57390bd1 541 {
ram54288 0:dbad57390bd1 542 TestReportObserver obs;
ram54288 0:dbad57390bd1 543 m2mbase_stub::report = new M2MReportHandler(obs);
ram54288 0:dbad57390bd1 544 m2mbase_stub::bool_value = true;
ram54288 0:dbad57390bd1 545
ram54288 0:dbad57390bd1 546 resource->notification_update();
ram54288 0:dbad57390bd1 547
ram54288 0:dbad57390bd1 548 delete m2mbase_stub::report;
ram54288 0:dbad57390bd1 549 m2mbase_stub::report = NULL;
ram54288 0:dbad57390bd1 550 }
ram54288 0:dbad57390bd1 551
ram54288 0:dbad57390bd1 552 void Test_M2MResource::test_set_delayed_response()
ram54288 0:dbad57390bd1 553 {
ram54288 0:dbad57390bd1 554 resource->set_delayed_response(true);
ram54288 0:dbad57390bd1 555 CHECK(resource->_delayed_response == true);
ram54288 0:dbad57390bd1 556 }
ram54288 0:dbad57390bd1 557
ram54288 0:dbad57390bd1 558 void Test_M2MResource::test_send_delayed_post_response()
ram54288 0:dbad57390bd1 559 {
ram54288 0:dbad57390bd1 560 resource->_delayed_response = true;
ram54288 0:dbad57390bd1 561 m2mbase_stub::observe = handler;
ram54288 0:dbad57390bd1 562 CHECK(resource->send_delayed_post_response() == true);
ram54288 0:dbad57390bd1 563 }
ram54288 0:dbad57390bd1 564
ram54288 0:dbad57390bd1 565 void Test_M2MResource::test_get_delayed_token()
ram54288 0:dbad57390bd1 566 {
ram54288 0:dbad57390bd1 567 uint8_t value[] = {"1"};
ram54288 0:dbad57390bd1 568 uint8_t *token = NULL;
ram54288 0:dbad57390bd1 569 uint8_t token_len = 0;
ram54288 0:dbad57390bd1 570 resource->_delayed_token_len = 1;
ram54288 0:dbad57390bd1 571 resource->_delayed_token = (uint8_t*)malloc(sizeof(1));
ram54288 0:dbad57390bd1 572 memcpy(resource->_delayed_token,value,1);
ram54288 0:dbad57390bd1 573 resource->get_delayed_token(token,token_len);
ram54288 0:dbad57390bd1 574 CHECK(token != NULL);
ram54288 0:dbad57390bd1 575 free(token);
ram54288 0:dbad57390bd1 576
ram54288 0:dbad57390bd1 577 token = NULL;
ram54288 0:dbad57390bd1 578 token = (uint8_t*)malloc(1);
ram54288 0:dbad57390bd1 579 token_len = 1;
ram54288 0:dbad57390bd1 580 resource->get_delayed_token(token,token_len);
ram54288 0:dbad57390bd1 581 CHECK(token != NULL);
ram54288 0:dbad57390bd1 582 free(token);
ram54288 0:dbad57390bd1 583
ram54288 0:dbad57390bd1 584 }
ram54288 0:dbad57390bd1 585
ram54288 0:dbad57390bd1 586 void Test_M2MResource::test_delayed_response()
ram54288 0:dbad57390bd1 587 {
ram54288 0:dbad57390bd1 588 resource->_delayed_response = false;
ram54288 0:dbad57390bd1 589 CHECK(resource->delayed_response() == false);
ram54288 0:dbad57390bd1 590 }
ram54288 0:dbad57390bd1 591
ram54288 0:dbad57390bd1 592 void Test_M2MResource::test_execute_params()
ram54288 0:dbad57390bd1 593 {
ram54288 0:dbad57390bd1 594 M2MResource::M2MExecuteParameter *params = new M2MResource::M2MExecuteParameter();
ram54288 0:dbad57390bd1 595 CHECK(params->get_argument_value() == NULL);
ram54288 0:dbad57390bd1 596 CHECK(params->get_argument_value_length() == 0);
ram54288 0:dbad57390bd1 597 CHECK(params->get_argument_object_name() == "");
ram54288 0:dbad57390bd1 598 CHECK(params->get_argument_resource_name() == "");
ram54288 0:dbad57390bd1 599 CHECK(params->get_argument_object_instance_id() == 0);
ram54288 0:dbad57390bd1 600
ram54288 0:dbad57390bd1 601 uint8_t value[] = {"test"};
ram54288 0:dbad57390bd1 602 int length = sizeof(value);
ram54288 0:dbad57390bd1 603 params->_value = (uint8_t*)malloc(length);
ram54288 0:dbad57390bd1 604 memcpy(params->_value,value,length);
ram54288 0:dbad57390bd1 605 params->_value_length = length;
ram54288 0:dbad57390bd1 606 params->_object_name = "object";
ram54288 0:dbad57390bd1 607 params->_resource_name = "resource";
ram54288 0:dbad57390bd1 608 params->_object_instance_id = 0;
ram54288 0:dbad57390bd1 609 CHECK(params->_value == params->get_argument_value());
ram54288 0:dbad57390bd1 610 CHECK(params->_value_length == params->get_argument_value_length());
ram54288 0:dbad57390bd1 611 CHECK(params->_resource_name == params->get_argument_resource_name());
ram54288 0:dbad57390bd1 612 CHECK(params->_object_name == params->get_argument_object_name());
ram54288 0:dbad57390bd1 613 CHECK(params->_object_instance_id == params->get_argument_object_instance_id());
ram54288 0:dbad57390bd1 614
ram54288 0:dbad57390bd1 615 delete params;
ram54288 0:dbad57390bd1 616 }
ram54288 0:dbad57390bd1 617
ram54288 0:dbad57390bd1 618 void Test_M2MResource::test_ctor()
ram54288 0:dbad57390bd1 619 {
ram54288 0:dbad57390bd1 620 M2MResource* res = new M2MResource(*m2mobject_stub::inst,&params,M2MResourceInstance::INTEGER,0);
ram54288 0:dbad57390bd1 621 delete res;
ram54288 0:dbad57390bd1 622 }
ram54288 0:dbad57390bd1 623
ram54288 0:dbad57390bd1 624 void Test_M2MResource::test_get_parent_object_instance()
ram54288 0:dbad57390bd1 625 {
ram54288 0:dbad57390bd1 626 M2MResource* res = new M2MResource(*m2mobject_stub::inst,&params,M2MResourceInstance::INTEGER,0);
ram54288 0:dbad57390bd1 627
ram54288 0:dbad57390bd1 628 // Only for the code coverage
ram54288 0:dbad57390bd1 629 res->get_parent_object_instance();
ram54288 0:dbad57390bd1 630 delete res;
ram54288 0:dbad57390bd1 631
ram54288 0:dbad57390bd1 632 }