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.
TestTopicIdMap.cpp
00001 /************************************************************************************** 00002 * Copyright (c) 2016, Tomoaki Yamaguchi 00003 * 00004 * All rights reserved. This program and the accompanying materials 00005 * are made available under the terms of the Eclipse Public License v1.0 00006 * and Eclipse Distribution License v1.0 which accompany this distribution. 00007 * 00008 * The Eclipse Public License is available at 00009 * http://www.eclipse.org/legal/epl-v10.html 00010 * and the Eclipse Distribution License is available at 00011 * http://www.eclipse.org/org/documents/edl-v10.php. 00012 * 00013 * Contributors: 00014 * Tomoaki Yamaguchi - initial API and implementation 00015 **************************************************************************************/ 00016 #include <stdlib.h> 00017 #include <string.h> 00018 #include <cassert> 00019 #include "TestTopicIdMap.h" 00020 00021 using namespace std; 00022 using namespace MQTTSNGW; 00023 00024 TestTopicIdMap::TestTopicIdMap() 00025 { 00026 _map = new TopicIdMap(); 00027 } 00028 00029 TestTopicIdMap::~TestTopicIdMap() 00030 { 00031 delete _map; 00032 } 00033 00034 00035 bool TestTopicIdMap::testGetElement(uint16_t msgid, uint16_t id, MQTTSN_topicTypes type) 00036 { 00037 TopicIdMapElement* elm = _map->getElement((uint16_t)msgid ); 00038 if ( elm ) 00039 { 00040 //printf("msgid=%d id=%d type=%d\n", msgid, elm->getTopicId(), elm->getTopicType()); 00041 return elm->getTopicId() == id && elm->getTopicType() == type; 00042 } 00043 //printf("msgid=%d\n", msgid); 00044 return false; 00045 } 00046 00047 #define MAXID 30 00048 00049 void TestTopicIdMap::test(void) 00050 { 00051 uint16_t id[MAXID]; 00052 00053 for ( int i = 0; i < MAXID; i++ ) 00054 { 00055 id[i] = i + 1; 00056 _map->add(id[i], id[i], MQTTSN_TOPIC_TYPE_NORMAL); 00057 } 00058 00059 for ( int i = 0; i < MAX_INFLIGHTMESSAGES * 2 + 1; i++ ) 00060 { 00061 assert(testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_NORMAL)); 00062 } 00063 00064 for ( int i = MAX_INFLIGHTMESSAGES * 2 + 1; i < MAXID; i++ ) 00065 { 00066 assert(!testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_NORMAL)); 00067 } 00068 00069 for ( int i = 0; i < MAX_INFLIGHTMESSAGES * 2 + 1; i++ ) 00070 { 00071 assert(!testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_PREDEFINED)); 00072 } 00073 00074 for ( int i = 0; i < 5; i++ ) 00075 { 00076 _map->erase(id[i]); 00077 } 00078 for ( int i = 0; i < 5; i++ ) 00079 { 00080 assert(!testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_NORMAL)); 00081 } 00082 00083 for ( int i = 5; i < MAX_INFLIGHTMESSAGES * 2 + 1; i++ ) 00084 { 00085 assert(testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_NORMAL)); 00086 } 00087 00088 for ( int i = MAX_INFLIGHTMESSAGES * 2 + 1; i < MAXID; i++ ) 00089 { 00090 assert(!testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_NORMAL)); 00091 } 00092 00093 _map->clear(); 00094 00095 for ( int i = 0; i < MAXID; i++ ) 00096 { 00097 assert(!testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_NORMAL)); 00098 } 00099 00100 for ( int i = 0; i < MAXID; i++ ) 00101 { 00102 _map->add(id[i], id[i], MQTTSN_TOPIC_TYPE_SHORT); 00103 } 00104 00105 for ( int i = 0; i < MAX_INFLIGHTMESSAGES * 2 + 1; i++ ) 00106 { 00107 assert(testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_SHORT)); 00108 } 00109 00110 for ( int i = MAX_INFLIGHTMESSAGES * 2 + 1; i < MAXID; i++ ) 00111 { 00112 assert(!testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_SHORT)); 00113 } 00114 00115 for ( int i = 0; i < MAX_INFLIGHTMESSAGES * 2 + 1; i++ ) 00116 { 00117 assert(!testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_NORMAL)); 00118 } 00119 00120 for ( int i = 0; i < 5; i++ ) 00121 { 00122 _map->erase(id[i]); 00123 } 00124 for ( int i = 0; i < 5; i++ ) 00125 { 00126 assert(!testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_SHORT)); 00127 } 00128 00129 for ( int i = 5; i < MAX_INFLIGHTMESSAGES * 2 + 1; i++ ) 00130 { 00131 assert(testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_SHORT)); 00132 } 00133 00134 for ( int i = MAX_INFLIGHTMESSAGES * 2 + 1; i < MAXID; i++ ) 00135 { 00136 assert(!testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_SHORT)); 00137 } 00138 00139 _map->clear(); 00140 00141 for ( int i = 0; i < MAXID; i++ ) 00142 { 00143 assert(!testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_SHORT)); 00144 } 00145 00146 for ( int i = 0; i < MAXID; i++ ) 00147 { 00148 _map->add(id[i], id[i], MQTTSN_TOPIC_TYPE_PREDEFINED); 00149 } 00150 00151 for ( int i = 0; i < MAX_INFLIGHTMESSAGES * 2 + 1; i++ ) 00152 { 00153 assert(testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_PREDEFINED)); 00154 } 00155 00156 for ( int i = MAX_INFLIGHTMESSAGES * 2 + 1; i < MAXID; i++ ) 00157 { 00158 assert(!testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_PREDEFINED)); 00159 } 00160 00161 for ( int i = 0; i < MAX_INFLIGHTMESSAGES * 2 + 1; i++ ) 00162 { 00163 assert(!testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_SHORT)); 00164 } 00165 00166 for ( int i = 0; i < 5; i++ ) 00167 { 00168 _map->erase(id[i]); 00169 } 00170 for ( int i = 0; i < 5; i++ ) 00171 { 00172 assert(!testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_PREDEFINED)); 00173 } 00174 00175 for ( int i = 5; i < MAX_INFLIGHTMESSAGES * 2 + 1; i++ ) 00176 { 00177 assert(testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_PREDEFINED)); 00178 } 00179 00180 for ( int i = MAX_INFLIGHTMESSAGES * 2 + 1; i < MAXID; i++ ) 00181 { 00182 assert(!testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_PREDEFINED)); 00183 } 00184 00185 _map->clear(); 00186 00187 for ( int i = 0; i < MAXID; i++ ) 00188 { 00189 assert(!testGetElement(id[i], id[i], MQTTSN_TOPIC_TYPE_PREDEFINED)); 00190 } 00191 printf("[ OK ]\n"); 00192 } 00193
Generated on Wed Jul 13 2022 10:46:03 by
1.7.2