Donald Meyers / Mbed OS evan
Committer:
djmeyers
Date:
Sat Mar 18 22:37:16 2017 +0000
Revision:
0:06ee5f8a484a
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
djmeyers 0:06ee5f8a484a 1 /*
djmeyers 0:06ee5f8a484a 2 * Copyright (c) 2015 ARM Limited. All rights reserved.
djmeyers 0:06ee5f8a484a 3 * SPDX-License-Identifier: Apache-2.0
djmeyers 0:06ee5f8a484a 4 * Licensed under the Apache License, Version 2.0 (the License); you may
djmeyers 0:06ee5f8a484a 5 * not use this file except in compliance with the License.
djmeyers 0:06ee5f8a484a 6 * You may obtain a copy of the License at
djmeyers 0:06ee5f8a484a 7 *
djmeyers 0:06ee5f8a484a 8 * http://www.apache.org/licenses/LICENSE-2.0
djmeyers 0:06ee5f8a484a 9 *
djmeyers 0:06ee5f8a484a 10 * Unless required by applicable law or agreed to in writing, software
djmeyers 0:06ee5f8a484a 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
djmeyers 0:06ee5f8a484a 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
djmeyers 0:06ee5f8a484a 13 * See the License for the specific language governing permissions and
djmeyers 0:06ee5f8a484a 14 * limitations under the License.
djmeyers 0:06ee5f8a484a 15 */
djmeyers 0:06ee5f8a484a 16 #include "CppUTest/TestHarness.h"
djmeyers 0:06ee5f8a484a 17 #include "test_m2mserver.h"
djmeyers 0:06ee5f8a484a 18 #include "m2mobject_stub.h"
djmeyers 0:06ee5f8a484a 19 #include "m2mobjectinstance_stub.h"
djmeyers 0:06ee5f8a484a 20 #include "m2mresource_stub.h"
djmeyers 0:06ee5f8a484a 21 #include "m2mresourceinstance_stub.h"
djmeyers 0:06ee5f8a484a 22 #include "m2mbase_stub.h"
djmeyers 0:06ee5f8a484a 23 #include "nsdlaccesshelper_stub.h"
djmeyers 0:06ee5f8a484a 24
djmeyers 0:06ee5f8a484a 25 Test_M2MServer::Test_M2MServer()
djmeyers 0:06ee5f8a484a 26 {
djmeyers 0:06ee5f8a484a 27 M2MObject* obj = new M2MObject("name", "name");
djmeyers 0:06ee5f8a484a 28 m2mobject_stub::inst = new M2MObjectInstance(*obj,"name", "type", "name");
djmeyers 0:06ee5f8a484a 29 m2mresource_stub::bool_value = true;
djmeyers 0:06ee5f8a484a 30 m2mobjectinstance_stub::create_resource = new M2MResource(*m2mobject_stub::inst,
djmeyers 0:06ee5f8a484a 31 "name",
djmeyers 0:06ee5f8a484a 32 "type",
djmeyers 0:06ee5f8a484a 33 M2MResourceInstance::STRING,
djmeyers 0:06ee5f8a484a 34 false,
djmeyers 0:06ee5f8a484a 35 "name");
djmeyers 0:06ee5f8a484a 36 server = new M2MServer();
djmeyers 0:06ee5f8a484a 37
djmeyers 0:06ee5f8a484a 38 delete m2mobjectinstance_stub::create_resource;
djmeyers 0:06ee5f8a484a 39 m2mobjectinstance_stub::create_resource = NULL;
djmeyers 0:06ee5f8a484a 40 delete obj;
djmeyers 0:06ee5f8a484a 41 }
djmeyers 0:06ee5f8a484a 42
djmeyers 0:06ee5f8a484a 43 Test_M2MServer::~Test_M2MServer()
djmeyers 0:06ee5f8a484a 44 {
djmeyers 0:06ee5f8a484a 45 delete m2mobject_stub::inst;
djmeyers 0:06ee5f8a484a 46 m2mobject_stub::inst = NULL;
djmeyers 0:06ee5f8a484a 47
djmeyers 0:06ee5f8a484a 48 m2mobject_stub::clear();
djmeyers 0:06ee5f8a484a 49 m2mobjectinstance_stub::clear();
djmeyers 0:06ee5f8a484a 50 m2mresource_stub::clear();
djmeyers 0:06ee5f8a484a 51 m2mbase_stub::clear();
djmeyers 0:06ee5f8a484a 52 delete server;
djmeyers 0:06ee5f8a484a 53 }
djmeyers 0:06ee5f8a484a 54
djmeyers 0:06ee5f8a484a 55 void Test_M2MServer::test_create_resource_int()
djmeyers 0:06ee5f8a484a 56 {
djmeyers 0:06ee5f8a484a 57 m2mobjectinstance_stub::create_resource = new M2MResource(*m2mobject_stub::inst,
djmeyers 0:06ee5f8a484a 58 "name",
djmeyers 0:06ee5f8a484a 59 "type",
djmeyers 0:06ee5f8a484a 60 M2MResourceInstance::STRING,
djmeyers 0:06ee5f8a484a 61 false,
djmeyers 0:06ee5f8a484a 62 "name");
djmeyers 0:06ee5f8a484a 63
djmeyers 0:06ee5f8a484a 64 CHECK(server->create_resource(M2MServer::DefaultMinPeriod,10) != NULL);
djmeyers 0:06ee5f8a484a 65 CHECK(server->create_resource(M2MServer::DefaultMaxPeriod,10) != NULL);
djmeyers 0:06ee5f8a484a 66 CHECK(server->create_resource(M2MServer::DisableTimeout,10) != NULL);
djmeyers 0:06ee5f8a484a 67
djmeyers 0:06ee5f8a484a 68 CHECK(server->create_resource(M2MServer::ShortServerID,10) == NULL);
djmeyers 0:06ee5f8a484a 69 CHECK(server->create_resource(M2MServer::Lifetime,10) == NULL);
djmeyers 0:06ee5f8a484a 70 CHECK(server->create_resource(M2MServer::Disable,10) == NULL);
djmeyers 0:06ee5f8a484a 71 CHECK(server->create_resource(M2MServer::Binding,10) == NULL);
djmeyers 0:06ee5f8a484a 72 CHECK(server->create_resource(M2MServer::NotificationStorage,10) == NULL);
djmeyers 0:06ee5f8a484a 73 CHECK(server->create_resource(M2MServer::Binding,10) == NULL);
djmeyers 0:06ee5f8a484a 74 CHECK(server->create_resource(M2MServer::RegistrationUpdate,10) == NULL);
djmeyers 0:06ee5f8a484a 75
djmeyers 0:06ee5f8a484a 76 delete m2mobjectinstance_stub::create_resource;
djmeyers 0:06ee5f8a484a 77 m2mobjectinstance_stub::create_resource = NULL;
djmeyers 0:06ee5f8a484a 78 }
djmeyers 0:06ee5f8a484a 79
djmeyers 0:06ee5f8a484a 80 void Test_M2MServer::test_create_resource()
djmeyers 0:06ee5f8a484a 81 {
djmeyers 0:06ee5f8a484a 82 m2mobjectinstance_stub::create_resource = new M2MResource(*m2mobject_stub::inst,
djmeyers 0:06ee5f8a484a 83 "name",
djmeyers 0:06ee5f8a484a 84 "type",
djmeyers 0:06ee5f8a484a 85 M2MResourceInstance::STRING,
djmeyers 0:06ee5f8a484a 86 false,
djmeyers 0:06ee5f8a484a 87 "name");
djmeyers 0:06ee5f8a484a 88
djmeyers 0:06ee5f8a484a 89 CHECK(server->create_resource(M2MServer::Disable) != NULL);
djmeyers 0:06ee5f8a484a 90
djmeyers 0:06ee5f8a484a 91 CHECK(server->create_resource(M2MServer::DefaultMinPeriod) == NULL);
djmeyers 0:06ee5f8a484a 92 CHECK(server->create_resource(M2MServer::DefaultMaxPeriod) == NULL);
djmeyers 0:06ee5f8a484a 93 CHECK(server->create_resource(M2MServer::DefaultMaxPeriod) == NULL);
djmeyers 0:06ee5f8a484a 94 CHECK(server->create_resource(M2MServer::ShortServerID) == NULL);
djmeyers 0:06ee5f8a484a 95 CHECK(server->create_resource(M2MServer::Lifetime) == NULL);
djmeyers 0:06ee5f8a484a 96 CHECK(server->create_resource(M2MServer::DisableTimeout) == NULL);
djmeyers 0:06ee5f8a484a 97 CHECK(server->create_resource(M2MServer::Binding) == NULL);
djmeyers 0:06ee5f8a484a 98 CHECK(server->create_resource(M2MServer::NotificationStorage) == NULL);
djmeyers 0:06ee5f8a484a 99 CHECK(server->create_resource(M2MServer::RegistrationUpdate) == NULL);
djmeyers 0:06ee5f8a484a 100
djmeyers 0:06ee5f8a484a 101 delete m2mobjectinstance_stub::create_resource;
djmeyers 0:06ee5f8a484a 102 m2mobjectinstance_stub::create_resource = NULL;
djmeyers 0:06ee5f8a484a 103 }
djmeyers 0:06ee5f8a484a 104
djmeyers 0:06ee5f8a484a 105 void Test_M2MServer::test_delete_resource()
djmeyers 0:06ee5f8a484a 106 {
djmeyers 0:06ee5f8a484a 107 m2mobjectinstance_stub::bool_value = true;
djmeyers 0:06ee5f8a484a 108
djmeyers 0:06ee5f8a484a 109 CHECK(server->delete_resource(M2MServer::ShortServerID) == false);
djmeyers 0:06ee5f8a484a 110 CHECK(server->delete_resource(M2MServer::Binding) == false);
djmeyers 0:06ee5f8a484a 111 CHECK(server->delete_resource(M2MServer::NotificationStorage) == false);
djmeyers 0:06ee5f8a484a 112 CHECK(server->delete_resource(M2MServer::Lifetime) == false);
djmeyers 0:06ee5f8a484a 113 CHECK(server->delete_resource(M2MServer::RegistrationUpdate) == false);
djmeyers 0:06ee5f8a484a 114
djmeyers 0:06ee5f8a484a 115 CHECK(server->delete_resource(M2MServer::DefaultMinPeriod) == true);
djmeyers 0:06ee5f8a484a 116 CHECK(server->delete_resource(M2MServer::DefaultMaxPeriod) == true);
djmeyers 0:06ee5f8a484a 117 CHECK(server->delete_resource(M2MServer::DisableTimeout) == true);
djmeyers 0:06ee5f8a484a 118 CHECK(server->delete_resource(M2MServer::Disable) == true);
djmeyers 0:06ee5f8a484a 119 }
djmeyers 0:06ee5f8a484a 120
djmeyers 0:06ee5f8a484a 121 void Test_M2MServer::test_set_resource_value_int()
djmeyers 0:06ee5f8a484a 122 {
djmeyers 0:06ee5f8a484a 123 m2mbase_stub::bool_value = true;
djmeyers 0:06ee5f8a484a 124
djmeyers 0:06ee5f8a484a 125 m2mobjectinstance_stub::resource = new M2MResource(*m2mobject_stub::inst,
djmeyers 0:06ee5f8a484a 126 "name",
djmeyers 0:06ee5f8a484a 127 "type",
djmeyers 0:06ee5f8a484a 128 M2MResourceInstance::STRING,
djmeyers 0:06ee5f8a484a 129 false,
djmeyers 0:06ee5f8a484a 130 "name");
djmeyers 0:06ee5f8a484a 131
djmeyers 0:06ee5f8a484a 132 CHECK(server->set_resource_value(M2MServer::DefaultMinPeriod,10) == true);
djmeyers 0:06ee5f8a484a 133 CHECK(server->set_resource_value(M2MServer::DefaultMaxPeriod,10) == true);
djmeyers 0:06ee5f8a484a 134 CHECK(server->set_resource_value(M2MServer::DisableTimeout,10) == true);
djmeyers 0:06ee5f8a484a 135 CHECK(server->set_resource_value(M2MServer::ShortServerID,10) == true);
djmeyers 0:06ee5f8a484a 136 CHECK(server->set_resource_value(M2MServer::NotificationStorage,10) == true);
djmeyers 0:06ee5f8a484a 137 CHECK(server->set_resource_value(M2MServer::Lifetime,10) == true);
djmeyers 0:06ee5f8a484a 138
djmeyers 0:06ee5f8a484a 139 CHECK(server->set_resource_value(M2MServer::Binding,10) == false);
djmeyers 0:06ee5f8a484a 140 CHECK(server->set_resource_value(M2MServer::RegistrationUpdate,10) == false);
djmeyers 0:06ee5f8a484a 141 CHECK(server->set_resource_value(M2MServer::Disable,10) == false);
djmeyers 0:06ee5f8a484a 142
djmeyers 0:06ee5f8a484a 143 delete m2mobjectinstance_stub::resource;
djmeyers 0:06ee5f8a484a 144 m2mobjectinstance_stub::resource = NULL;
djmeyers 0:06ee5f8a484a 145 }
djmeyers 0:06ee5f8a484a 146
djmeyers 0:06ee5f8a484a 147 void Test_M2MServer::test_set_resource_value_string()
djmeyers 0:06ee5f8a484a 148 {
djmeyers 0:06ee5f8a484a 149 m2mresourceinstance_stub::bool_value = true;
djmeyers 0:06ee5f8a484a 150
djmeyers 0:06ee5f8a484a 151 m2mobjectinstance_stub::resource = new M2MResource(*m2mobject_stub::inst,
djmeyers 0:06ee5f8a484a 152 "name",
djmeyers 0:06ee5f8a484a 153 "type",
djmeyers 0:06ee5f8a484a 154 M2MResourceInstance::STRING,
djmeyers 0:06ee5f8a484a 155 false,
djmeyers 0:06ee5f8a484a 156 "name");
djmeyers 0:06ee5f8a484a 157
djmeyers 0:06ee5f8a484a 158 CHECK(server->set_resource_value(M2MServer::Binding,"test") == true);
djmeyers 0:06ee5f8a484a 159
djmeyers 0:06ee5f8a484a 160 CHECK(server->set_resource_value(M2MServer::DefaultMinPeriod,"test") == false);
djmeyers 0:06ee5f8a484a 161 CHECK(server->set_resource_value(M2MServer::DefaultMaxPeriod,"test") == false);
djmeyers 0:06ee5f8a484a 162 CHECK(server->set_resource_value(M2MServer::DisableTimeout,"test") == false);
djmeyers 0:06ee5f8a484a 163 CHECK(server->set_resource_value(M2MServer::ShortServerID,"test") == false);
djmeyers 0:06ee5f8a484a 164 CHECK(server->set_resource_value(M2MServer::NotificationStorage,"test") == false);
djmeyers 0:06ee5f8a484a 165 CHECK(server->set_resource_value(M2MServer::Lifetime,"test") == false);
djmeyers 0:06ee5f8a484a 166 CHECK(server->set_resource_value(M2MServer::RegistrationUpdate,"test") == false);
djmeyers 0:06ee5f8a484a 167 CHECK(server->set_resource_value(M2MServer::Disable,"test") == false);
djmeyers 0:06ee5f8a484a 168
djmeyers 0:06ee5f8a484a 169 delete m2mobjectinstance_stub::resource;
djmeyers 0:06ee5f8a484a 170 m2mobjectinstance_stub::resource = NULL;
djmeyers 0:06ee5f8a484a 171 }
djmeyers 0:06ee5f8a484a 172
djmeyers 0:06ee5f8a484a 173 void Test_M2MServer::test_resource_value_int()
djmeyers 0:06ee5f8a484a 174 {
djmeyers 0:06ee5f8a484a 175 uint8_t value[] = {"10"};
djmeyers 0:06ee5f8a484a 176 m2mresourceinstance_stub::value = (uint8_t*)malloc((uint32_t)sizeof(value));
djmeyers 0:06ee5f8a484a 177 memset(m2mresourceinstance_stub::value,0,(uint32_t)sizeof(value));
djmeyers 0:06ee5f8a484a 178 memcpy(m2mresourceinstance_stub::value,value,sizeof(value));
djmeyers 0:06ee5f8a484a 179 m2mresourceinstance_stub::int_value = (uint32_t)sizeof(value);
djmeyers 0:06ee5f8a484a 180
djmeyers 0:06ee5f8a484a 181 m2mobjectinstance_stub::resource = new M2MResource(*m2mobject_stub::inst,
djmeyers 0:06ee5f8a484a 182 "name",
djmeyers 0:06ee5f8a484a 183 "type",
djmeyers 0:06ee5f8a484a 184 M2MResourceInstance::STRING,
djmeyers 0:06ee5f8a484a 185 false,
djmeyers 0:06ee5f8a484a 186 "name");
djmeyers 0:06ee5f8a484a 187
djmeyers 0:06ee5f8a484a 188 CHECK(server->resource_value_int(M2MServer::ShortServerID) == 10);
djmeyers 0:06ee5f8a484a 189 CHECK(server->resource_value_int(M2MServer::DefaultMinPeriod) == 10);
djmeyers 0:06ee5f8a484a 190 CHECK(server->resource_value_int(M2MServer::DefaultMaxPeriod) == 10);
djmeyers 0:06ee5f8a484a 191 CHECK(server->resource_value_int(M2MServer::DisableTimeout) == 10);
djmeyers 0:06ee5f8a484a 192 CHECK(server->resource_value_int(M2MServer::NotificationStorage) == 10);
djmeyers 0:06ee5f8a484a 193 CHECK(server->resource_value_int(M2MServer::Lifetime) == 10);
djmeyers 0:06ee5f8a484a 194 CHECK(server->resource_value_int(M2MServer::Binding) == 0);
djmeyers 0:06ee5f8a484a 195 CHECK(server->resource_value_int(M2MServer::RegistrationUpdate) == 0);
djmeyers 0:06ee5f8a484a 196 CHECK(server->resource_value_int(M2MServer::Disable) == 0);
djmeyers 0:06ee5f8a484a 197
djmeyers 0:06ee5f8a484a 198 delete m2mobjectinstance_stub::resource;
djmeyers 0:06ee5f8a484a 199 m2mobjectinstance_stub::resource = NULL;
djmeyers 0:06ee5f8a484a 200
djmeyers 0:06ee5f8a484a 201 free(m2mresourceinstance_stub::value);
djmeyers 0:06ee5f8a484a 202 m2mresourceinstance_stub::value = NULL;
djmeyers 0:06ee5f8a484a 203 }
djmeyers 0:06ee5f8a484a 204
djmeyers 0:06ee5f8a484a 205 void Test_M2MServer::test_resource_value_string()
djmeyers 0:06ee5f8a484a 206 {
djmeyers 0:06ee5f8a484a 207 String test = "string";
djmeyers 0:06ee5f8a484a 208 uint8_t value[] = {"string"};
djmeyers 0:06ee5f8a484a 209
djmeyers 0:06ee5f8a484a 210 m2mresourceinstance_stub::value = (uint8_t*)malloc((uint32_t)sizeof(value));
djmeyers 0:06ee5f8a484a 211 memset(m2mresourceinstance_stub::value,0,(uint32_t)sizeof(value));
djmeyers 0:06ee5f8a484a 212 memcpy(m2mresourceinstance_stub::value,value,sizeof(value));
djmeyers 0:06ee5f8a484a 213 m2mresourceinstance_stub::int_value = (uint32_t)sizeof(value);
djmeyers 0:06ee5f8a484a 214
djmeyers 0:06ee5f8a484a 215 m2mobjectinstance_stub::resource = new M2MResource(*m2mobject_stub::inst,
djmeyers 0:06ee5f8a484a 216 "name",
djmeyers 0:06ee5f8a484a 217 "type",
djmeyers 0:06ee5f8a484a 218 M2MResourceInstance::STRING,
djmeyers 0:06ee5f8a484a 219 false,
djmeyers 0:06ee5f8a484a 220 "name");
djmeyers 0:06ee5f8a484a 221
djmeyers 0:06ee5f8a484a 222 CHECK(server->resource_value_string(M2MServer::Binding) == test);
djmeyers 0:06ee5f8a484a 223
djmeyers 0:06ee5f8a484a 224 CHECK(server->resource_value_string(M2MServer::Disable) == "");
djmeyers 0:06ee5f8a484a 225 CHECK(server->resource_value_string(M2MServer::RegistrationUpdate) == "");
djmeyers 0:06ee5f8a484a 226 CHECK(server->resource_value_string(M2MServer::Lifetime) == "");
djmeyers 0:06ee5f8a484a 227 CHECK(server->resource_value_string(M2MServer::NotificationStorage) == "");
djmeyers 0:06ee5f8a484a 228 CHECK(server->resource_value_string(M2MServer::DisableTimeout) == "");
djmeyers 0:06ee5f8a484a 229 CHECK(server->resource_value_string(M2MServer::DefaultMaxPeriod) == "");
djmeyers 0:06ee5f8a484a 230 CHECK(server->resource_value_string(M2MServer::DefaultMinPeriod) == "");
djmeyers 0:06ee5f8a484a 231 CHECK(server->resource_value_string(M2MServer::ShortServerID) == "");
djmeyers 0:06ee5f8a484a 232
djmeyers 0:06ee5f8a484a 233 delete m2mobjectinstance_stub::resource;
djmeyers 0:06ee5f8a484a 234 m2mobjectinstance_stub::resource = NULL;
djmeyers 0:06ee5f8a484a 235
djmeyers 0:06ee5f8a484a 236 free(m2mresourceinstance_stub::value);
djmeyers 0:06ee5f8a484a 237 m2mresourceinstance_stub::value = NULL;
djmeyers 0:06ee5f8a484a 238 }
djmeyers 0:06ee5f8a484a 239
djmeyers 0:06ee5f8a484a 240 void Test_M2MServer::test_is_resource_present()
djmeyers 0:06ee5f8a484a 241 {
djmeyers 0:06ee5f8a484a 242 m2mobjectinstance_stub::resource = new M2MResource(*m2mobject_stub::inst,
djmeyers 0:06ee5f8a484a 243 "name",
djmeyers 0:06ee5f8a484a 244 "type",
djmeyers 0:06ee5f8a484a 245 M2MResourceInstance::STRING,
djmeyers 0:06ee5f8a484a 246 false,
djmeyers 0:06ee5f8a484a 247 "name");
djmeyers 0:06ee5f8a484a 248
djmeyers 0:06ee5f8a484a 249 CHECK(server->is_resource_present(M2MServer::ShortServerID) == true);
djmeyers 0:06ee5f8a484a 250
djmeyers 0:06ee5f8a484a 251 delete m2mobjectinstance_stub::resource;
djmeyers 0:06ee5f8a484a 252 m2mobjectinstance_stub::resource = NULL;
djmeyers 0:06ee5f8a484a 253
djmeyers 0:06ee5f8a484a 254 CHECK(server->is_resource_present(M2MServer::DefaultMinPeriod) == false);
djmeyers 0:06ee5f8a484a 255 }
djmeyers 0:06ee5f8a484a 256
djmeyers 0:06ee5f8a484a 257 void Test_M2MServer::test_total_resource_count()
djmeyers 0:06ee5f8a484a 258 {
djmeyers 0:06ee5f8a484a 259 M2MResource *res = new M2MResource(*m2mobject_stub::inst,
djmeyers 0:06ee5f8a484a 260 "name",
djmeyers 0:06ee5f8a484a 261 "type",
djmeyers 0:06ee5f8a484a 262 M2MResourceInstance::STRING,
djmeyers 0:06ee5f8a484a 263 false,
djmeyers 0:06ee5f8a484a 264 "name");
djmeyers 0:06ee5f8a484a 265
djmeyers 0:06ee5f8a484a 266 m2mobjectinstance_stub::resource_list.push_back(res);
djmeyers 0:06ee5f8a484a 267 M2MResource *res2 = new M2MResource(*m2mobject_stub::inst,
djmeyers 0:06ee5f8a484a 268 "name",
djmeyers 0:06ee5f8a484a 269 "type",
djmeyers 0:06ee5f8a484a 270 M2MResourceInstance::STRING,
djmeyers 0:06ee5f8a484a 271 false,
djmeyers 0:06ee5f8a484a 272 "name");
djmeyers 0:06ee5f8a484a 273
djmeyers 0:06ee5f8a484a 274 m2mobjectinstance_stub::resource_list.push_back(res2);
djmeyers 0:06ee5f8a484a 275
djmeyers 0:06ee5f8a484a 276 CHECK(server->total_resource_count() == 2);
djmeyers 0:06ee5f8a484a 277
djmeyers 0:06ee5f8a484a 278 m2mobjectinstance_stub::resource_list.clear();
djmeyers 0:06ee5f8a484a 279
djmeyers 0:06ee5f8a484a 280 delete res2;
djmeyers 0:06ee5f8a484a 281 delete res;
djmeyers 0:06ee5f8a484a 282 }