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

« Back to documentation index

Show/hide line numbers test_m2mblockmessage.cpp Source File

test_m2mblockmessage.cpp

00001 /*
00002  * Copyright (c) 2015 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_m2mblockmessage.h"
00018 #include "sn_coap_header.h"
00019 #include <string.h>
00020 Test_M2MBlockMessage::Test_M2MBlockMessage()
00021 {
00022     block_message = new M2MBlockMessage();
00023 }
00024 
00025 Test_M2MBlockMessage::~Test_M2MBlockMessage()
00026 {
00027     delete block_message;
00028 }
00029 
00030 void Test_M2MBlockMessage::test_set_message_info()
00031 {
00032     sn_coap_hdr_s *coap_header = (sn_coap_hdr_s *)malloc(sizeof(sn_coap_hdr_s));
00033     memset(coap_header, 0, sizeof(sn_coap_hdr_s));
00034     block_message->set_message_info(NULL);
00035     CHECK(block_message->is_block_message() == false);
00036     CHECK(block_message->total_message_size() == 0);
00037 
00038     coap_header->options_list_ptr = (sn_coap_options_list_s *)malloc(sizeof(sn_coap_options_list_s));
00039     memset(coap_header->options_list_ptr, 0, sizeof(sn_coap_options_list_s));
00040     coap_header->options_list_ptr->size1 = 0xffff;
00041     coap_header->options_list_ptr->use_size1 = true;
00042     coap_header->options_list_ptr->block1 = -1;
00043 
00044     block_message->set_message_info(coap_header);
00045     CHECK(block_message->total_message_size() == 0xffff);
00046     CHECK(!block_message->is_block_message());
00047     block_message->clear_values();
00048 
00049     coap_header->options_list_ptr->size1 = 0xffffff;
00050 
00051     block_message->set_message_info(coap_header);
00052     CHECK(block_message->error_code() == M2MBlockMessage::EntityTooLarge);
00053     block_message->clear_values();
00054 
00055     coap_header->options_list_ptr->size1 = 0xffff;
00056     coap_header->options_list_ptr->block1 = 0x010101;
00057     block_message->set_message_info(coap_header);
00058     CHECK(block_message->is_block_message());
00059     CHECK(block_message->block_number() == 4112);
00060     block_message->clear_values();
00061 
00062     coap_header->options_list_ptr->block1 = 0x0101;
00063     block_message->set_message_info(coap_header);
00064     CHECK(block_message->is_block_message());
00065     CHECK(block_message->block_number() == 16);
00066     block_message->clear_values();
00067 
00068     coap_header->options_list_ptr->block1 = 0x01;
00069     block_message->set_message_info(coap_header);
00070     CHECK(block_message->is_block_message());
00071     CHECK(block_message->block_number() == 0);
00072     block_message->clear_values();
00073 
00074     coap_header->options_list_ptr->block1 = 0x010108;
00075     block_message->set_message_info(coap_header);
00076     CHECK(!block_message->is_last_block());
00077     block_message->clear_values();
00078 
00079     coap_header->payload_len = 10;
00080     coap_header->payload_ptr = (uint8_t *)malloc(10);
00081     memset(coap_header->payload_ptr, 'x', 10);
00082     block_message->set_message_info(coap_header);
00083     CHECK(!block_message->is_last_block());
00084     CHECK(block_message->block_data_len() == 10);
00085     CHECK(memcmp(coap_header->payload_ptr, block_message->block_data(),10) == 0);
00086     block_message->clear_values();
00087 
00088     free(coap_header->payload_ptr);
00089     free(coap_header->options_list_ptr);
00090     free(coap_header);
00091 }