| OLD | NEW |
| (Empty) | |
| 1 // Protocol Buffers - Google's data interchange format |
| 2 // Copyright 2008 Google Inc. All rights reserved. |
| 3 // https://developers.google.com/protocol-buffers/ |
| 4 // |
| 5 // Redistribution and use in source and binary forms, with or without |
| 6 // modification, are permitted provided that the following conditions are |
| 7 // met: |
| 8 // |
| 9 // * Redistributions of source code must retain the above copyright |
| 10 // notice, this list of conditions and the following disclaimer. |
| 11 // * Redistributions in binary form must reproduce the above |
| 12 // copyright notice, this list of conditions and the following disclaimer |
| 13 // in the documentation and/or other materials provided with the |
| 14 // distribution. |
| 15 // * Neither the name of Google Inc. nor the names of its |
| 16 // contributors may be used to endorse or promote products derived from |
| 17 // this software without specific prior written permission. |
| 18 // |
| 19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| 20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| 21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| 22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| 23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| 24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| 25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 30 |
| 31 #ifndef GOOGLE_PROTOBUF_MAP_TEST_UTIL_IMPL_H__ |
| 32 #define GOOGLE_PROTOBUF_MAP_TEST_UTIL_IMPL_H__ |
| 33 |
| 34 #include <google/protobuf/stubs/logging.h> |
| 35 #include <google/protobuf/stubs/common.h> |
| 36 |
| 37 |
| 38 #define EXPECT_TRUE GOOGLE_CHECK |
| 39 #define ASSERT_TRUE GOOGLE_CHECK |
| 40 #define EXPECT_FALSE(COND) GOOGLE_CHECK(!(COND)) |
| 41 #define EXPECT_EQ GOOGLE_CHECK_EQ |
| 42 #define ASSERT_EQ GOOGLE_CHECK_EQ |
| 43 |
| 44 namespace google { |
| 45 namespace protobuf_unittest {} // forward declaration |
| 46 |
| 47 namespace protobuf { |
| 48 |
| 49 namespace unittest = ::protobuf_unittest; |
| 50 |
| 51 class MapTestUtilImpl { |
| 52 public: |
| 53 // Set every field in the TestMap message to a unique value. |
| 54 template <typename EnumType, EnumType enum_value0, |
| 55 EnumType enum_value1, typename MapMessage> |
| 56 static void SetMapFields(MapMessage* message); |
| 57 |
| 58 // Set every field in the TestArenaMap message to a unique value. |
| 59 template <typename EnumType, EnumType enum_value0, |
| 60 EnumType enum_value1, typename MapMessage> |
| 61 static void SetArenaMapFields(MapMessage* message); |
| 62 |
| 63 // Set every field in the message to a default value. |
| 64 template <typename MapMessage> |
| 65 static void SetMapFieldsInitialized(MapMessage* message); |
| 66 |
| 67 // Modify all the map fields of the message (which should already have been |
| 68 // initialized with SetMapFields()). |
| 69 template <typename EnumType, EnumType enum_value, typename MapMessage> |
| 70 static void ModifyMapFields(MapMessage* message); |
| 71 |
| 72 // Check that all fields have the values that they should have after |
| 73 // SetMapFields() is called. |
| 74 template <typename EnumType, EnumType enum_value0, |
| 75 EnumType enum_value1, typename MapMessage> |
| 76 static void ExpectMapFieldsSet(const MapMessage& message); |
| 77 |
| 78 // Check that all fields have the values that they should have after |
| 79 // SetMapFields() is called for TestArenaMap. |
| 80 template <typename EnumType, EnumType enum_value0, |
| 81 EnumType enum_value1, typename MapMessage> |
| 82 static void ExpectArenaMapFieldsSet(const MapMessage& message); |
| 83 |
| 84 // Check that all fields have the values that they should have after |
| 85 // SetMapFieldsInitialized() is called. |
| 86 template <typename EnumType, EnumType enum_value, typename MapMessage> |
| 87 static void ExpectMapFieldsSetInitialized(const MapMessage& message); |
| 88 |
| 89 // Expect that the message is modified as would be expected from |
| 90 // ModifyMapFields(). |
| 91 template <typename EnumType, EnumType enum_value0, |
| 92 EnumType enum_value1, typename MapMessage> |
| 93 static void ExpectMapFieldsModified(const MapMessage& message); |
| 94 |
| 95 // Check that all fields are empty. |
| 96 template <typename MapMessage> |
| 97 static void ExpectClear(const MapMessage& message); |
| 98 |
| 99 // // Check that all map fields have the given size. |
| 100 // template <typename MapMessage> |
| 101 // static void ExpectMapsSize(const MapMessage& message, int size); |
| 102 |
| 103 // // Get pointers of map entries at given index. |
| 104 // static std::vector<const Message*> GetMapEntries( |
| 105 // const MapMessage& message, int index); |
| 106 |
| 107 // // Get pointers of map entries from release. |
| 108 // static std::vector<const Message*> GetMapEntriesFromRelease( |
| 109 // MapMessage* message); |
| 110 }; |
| 111 |
| 112 template <typename EnumType, EnumType enum_value0, |
| 113 EnumType enum_value1, typename MapMessage> |
| 114 void MapTestUtilImpl::SetMapFields(MapMessage* message) { |
| 115 // Add first element. |
| 116 (*message->mutable_map_int32_int32())[0] = 0; |
| 117 (*message->mutable_map_int64_int64())[0] = 0; |
| 118 (*message->mutable_map_uint32_uint32())[0] = 0; |
| 119 (*message->mutable_map_uint64_uint64())[0] = 0; |
| 120 (*message->mutable_map_sint32_sint32())[0] = 0; |
| 121 (*message->mutable_map_sint64_sint64())[0] = 0; |
| 122 (*message->mutable_map_fixed32_fixed32())[0] = 0; |
| 123 (*message->mutable_map_fixed64_fixed64())[0] = 0; |
| 124 (*message->mutable_map_sfixed32_sfixed32())[0] = 0; |
| 125 (*message->mutable_map_sfixed64_sfixed64())[0] = 0; |
| 126 (*message->mutable_map_int32_float())[0] = 0.0; |
| 127 (*message->mutable_map_int32_double())[0] = 0.0; |
| 128 (*message->mutable_map_bool_bool())[0] = false; |
| 129 (*message->mutable_map_string_string())["0"] = "0"; |
| 130 (*message->mutable_map_int32_bytes())[0] = "0"; |
| 131 (*message->mutable_map_int32_enum())[0] = enum_value0; |
| 132 (*message->mutable_map_int32_foreign_message())[0].set_c(0); |
| 133 |
| 134 // Add second element |
| 135 (*message->mutable_map_int32_int32())[1] = 1; |
| 136 (*message->mutable_map_int64_int64())[1] = 1; |
| 137 (*message->mutable_map_uint32_uint32())[1] = 1; |
| 138 (*message->mutable_map_uint64_uint64())[1] = 1; |
| 139 (*message->mutable_map_sint32_sint32())[1] = 1; |
| 140 (*message->mutable_map_sint64_sint64())[1] = 1; |
| 141 (*message->mutable_map_fixed32_fixed32())[1] = 1; |
| 142 (*message->mutable_map_fixed64_fixed64())[1] = 1; |
| 143 (*message->mutable_map_sfixed32_sfixed32())[1] = 1; |
| 144 (*message->mutable_map_sfixed64_sfixed64())[1] = 1; |
| 145 (*message->mutable_map_int32_float())[1] = 1.0; |
| 146 (*message->mutable_map_int32_double())[1] = 1.0; |
| 147 (*message->mutable_map_bool_bool())[1] = true; |
| 148 (*message->mutable_map_string_string())["1"] = "1"; |
| 149 (*message->mutable_map_int32_bytes())[1] = "1"; |
| 150 (*message->mutable_map_int32_enum())[1] = enum_value1; |
| 151 (*message->mutable_map_int32_foreign_message())[1].set_c(1); |
| 152 } |
| 153 |
| 154 template <typename EnumType, EnumType enum_value0, |
| 155 EnumType enum_value1, typename MapMessage> |
| 156 void MapTestUtilImpl::SetArenaMapFields(MapMessage* message) { |
| 157 // Add first element. |
| 158 (*message->mutable_map_int32_int32())[0] = 0; |
| 159 (*message->mutable_map_int64_int64())[0] = 0; |
| 160 (*message->mutable_map_uint32_uint32())[0] = 0; |
| 161 (*message->mutable_map_uint64_uint64())[0] = 0; |
| 162 (*message->mutable_map_sint32_sint32())[0] = 0; |
| 163 (*message->mutable_map_sint64_sint64())[0] = 0; |
| 164 (*message->mutable_map_fixed32_fixed32())[0] = 0; |
| 165 (*message->mutable_map_fixed64_fixed64())[0] = 0; |
| 166 (*message->mutable_map_sfixed32_sfixed32())[0] = 0; |
| 167 (*message->mutable_map_sfixed64_sfixed64())[0] = 0; |
| 168 (*message->mutable_map_int32_float())[0] = 0.0; |
| 169 (*message->mutable_map_int32_double())[0] = 0.0; |
| 170 (*message->mutable_map_bool_bool())[0] = false; |
| 171 (*message->mutable_map_string_string())["0"] = "0"; |
| 172 (*message->mutable_map_int32_bytes())[0] = "0"; |
| 173 (*message->mutable_map_int32_enum())[0] = enum_value0; |
| 174 (*message->mutable_map_int32_foreign_message())[0].set_c(0); |
| 175 (*message->mutable_map_int32_foreign_message_no_arena())[0].set_c(0); |
| 176 |
| 177 // Add second element |
| 178 (*message->mutable_map_int32_int32())[1] = 1; |
| 179 (*message->mutable_map_int64_int64())[1] = 1; |
| 180 (*message->mutable_map_uint32_uint32())[1] = 1; |
| 181 (*message->mutable_map_uint64_uint64())[1] = 1; |
| 182 (*message->mutable_map_sint32_sint32())[1] = 1; |
| 183 (*message->mutable_map_sint64_sint64())[1] = 1; |
| 184 (*message->mutable_map_fixed32_fixed32())[1] = 1; |
| 185 (*message->mutable_map_fixed64_fixed64())[1] = 1; |
| 186 (*message->mutable_map_sfixed32_sfixed32())[1] = 1; |
| 187 (*message->mutable_map_sfixed64_sfixed64())[1] = 1; |
| 188 (*message->mutable_map_int32_float())[1] = 1.0; |
| 189 (*message->mutable_map_int32_double())[1] = 1.0; |
| 190 (*message->mutable_map_bool_bool())[1] = true; |
| 191 (*message->mutable_map_string_string())["1"] = "1"; |
| 192 (*message->mutable_map_int32_bytes())[1] = "1"; |
| 193 (*message->mutable_map_int32_enum())[1] = enum_value1; |
| 194 (*message->mutable_map_int32_foreign_message())[1].set_c(1); |
| 195 (*message->mutable_map_int32_foreign_message_no_arena())[1].set_c(1); |
| 196 } |
| 197 |
| 198 template <typename MapMessage> |
| 199 void MapTestUtilImpl::SetMapFieldsInitialized(MapMessage* message) { |
| 200 // Add first element using bracket operator, which should assign default |
| 201 // value automatically. |
| 202 (*message->mutable_map_int32_int32())[0]; |
| 203 (*message->mutable_map_int64_int64())[0]; |
| 204 (*message->mutable_map_uint32_uint32())[0]; |
| 205 (*message->mutable_map_uint64_uint64())[0]; |
| 206 (*message->mutable_map_sint32_sint32())[0]; |
| 207 (*message->mutable_map_sint64_sint64())[0]; |
| 208 (*message->mutable_map_fixed32_fixed32())[0]; |
| 209 (*message->mutable_map_fixed64_fixed64())[0]; |
| 210 (*message->mutable_map_sfixed32_sfixed32())[0]; |
| 211 (*message->mutable_map_sfixed64_sfixed64())[0]; |
| 212 (*message->mutable_map_int32_float())[0]; |
| 213 (*message->mutable_map_int32_double())[0]; |
| 214 (*message->mutable_map_bool_bool())[0]; |
| 215 (*message->mutable_map_string_string())["0"]; |
| 216 (*message->mutable_map_int32_bytes())[0]; |
| 217 (*message->mutable_map_int32_enum())[0]; |
| 218 (*message->mutable_map_int32_foreign_message())[0]; |
| 219 } |
| 220 |
| 221 template <typename EnumType, EnumType enum_value, typename MapMessage> |
| 222 void MapTestUtilImpl::ModifyMapFields(MapMessage* message) { |
| 223 (*message->mutable_map_int32_int32())[1] = 2; |
| 224 (*message->mutable_map_int64_int64())[1] = 2; |
| 225 (*message->mutable_map_uint32_uint32())[1] = 2; |
| 226 (*message->mutable_map_uint64_uint64())[1] = 2; |
| 227 (*message->mutable_map_sint32_sint32())[1] = 2; |
| 228 (*message->mutable_map_sint64_sint64())[1] = 2; |
| 229 (*message->mutable_map_fixed32_fixed32())[1] = 2; |
| 230 (*message->mutable_map_fixed64_fixed64())[1] = 2; |
| 231 (*message->mutable_map_sfixed32_sfixed32())[1] = 2; |
| 232 (*message->mutable_map_sfixed64_sfixed64())[1] = 2; |
| 233 (*message->mutable_map_int32_float())[1] = 2.0; |
| 234 (*message->mutable_map_int32_double())[1] = 2.0; |
| 235 (*message->mutable_map_bool_bool())[1] = false; |
| 236 (*message->mutable_map_string_string())["1"] = "2"; |
| 237 (*message->mutable_map_int32_bytes())[1] = "2"; |
| 238 (*message->mutable_map_int32_enum())[1] = enum_value; |
| 239 (*message->mutable_map_int32_foreign_message())[1].set_c(2); |
| 240 } |
| 241 |
| 242 template <typename MapMessage> |
| 243 void MapTestUtilImpl::ExpectClear(const MapMessage& message) { |
| 244 EXPECT_EQ(0, message.map_int32_int32().size()); |
| 245 EXPECT_EQ(0, message.map_int64_int64().size()); |
| 246 EXPECT_EQ(0, message.map_uint32_uint32().size()); |
| 247 EXPECT_EQ(0, message.map_uint64_uint64().size()); |
| 248 EXPECT_EQ(0, message.map_sint32_sint32().size()); |
| 249 EXPECT_EQ(0, message.map_sint64_sint64().size()); |
| 250 EXPECT_EQ(0, message.map_fixed32_fixed32().size()); |
| 251 EXPECT_EQ(0, message.map_fixed64_fixed64().size()); |
| 252 EXPECT_EQ(0, message.map_sfixed32_sfixed32().size()); |
| 253 EXPECT_EQ(0, message.map_sfixed64_sfixed64().size()); |
| 254 EXPECT_EQ(0, message.map_int32_float().size()); |
| 255 EXPECT_EQ(0, message.map_int32_double().size()); |
| 256 EXPECT_EQ(0, message.map_bool_bool().size()); |
| 257 EXPECT_EQ(0, message.map_string_string().size()); |
| 258 EXPECT_EQ(0, message.map_int32_bytes().size()); |
| 259 EXPECT_EQ(0, message.map_int32_enum().size()); |
| 260 EXPECT_EQ(0, message.map_int32_foreign_message().size()); |
| 261 } |
| 262 |
| 263 |
| 264 |
| 265 template <typename EnumType, EnumType enum_value0, |
| 266 EnumType enum_value1, typename MapMessage> |
| 267 void MapTestUtilImpl::ExpectMapFieldsSet(const MapMessage& message) { |
| 268 EXPECT_EQ(2, message.map_int32_int32().size()); |
| 269 EXPECT_EQ(2, message.map_int64_int64().size()); |
| 270 EXPECT_EQ(2, message.map_uint32_uint32().size()); |
| 271 EXPECT_EQ(2, message.map_uint64_uint64().size()); |
| 272 EXPECT_EQ(2, message.map_sint32_sint32().size()); |
| 273 EXPECT_EQ(2, message.map_sint64_sint64().size()); |
| 274 EXPECT_EQ(2, message.map_fixed32_fixed32().size()); |
| 275 EXPECT_EQ(2, message.map_fixed64_fixed64().size()); |
| 276 EXPECT_EQ(2, message.map_sfixed32_sfixed32().size()); |
| 277 EXPECT_EQ(2, message.map_sfixed64_sfixed64().size()); |
| 278 EXPECT_EQ(2, message.map_int32_float().size()); |
| 279 EXPECT_EQ(2, message.map_int32_double().size()); |
| 280 EXPECT_EQ(2, message.map_bool_bool().size()); |
| 281 EXPECT_EQ(2, message.map_string_string().size()); |
| 282 EXPECT_EQ(2, message.map_int32_bytes().size()); |
| 283 EXPECT_EQ(2, message.map_int32_enum().size()); |
| 284 EXPECT_EQ(2, message.map_int32_foreign_message().size()); |
| 285 |
| 286 EXPECT_EQ(0, message.map_int32_int32().at(0)); |
| 287 EXPECT_EQ(0, message.map_int64_int64().at(0)); |
| 288 EXPECT_EQ(0, message.map_uint32_uint32().at(0)); |
| 289 EXPECT_EQ(0, message.map_uint64_uint64().at(0)); |
| 290 EXPECT_EQ(0, message.map_sint32_sint32().at(0)); |
| 291 EXPECT_EQ(0, message.map_sint64_sint64().at(0)); |
| 292 EXPECT_EQ(0, message.map_fixed32_fixed32().at(0)); |
| 293 EXPECT_EQ(0, message.map_fixed64_fixed64().at(0)); |
| 294 EXPECT_EQ(0, message.map_sfixed32_sfixed32().at(0)); |
| 295 EXPECT_EQ(0, message.map_sfixed64_sfixed64().at(0)); |
| 296 EXPECT_EQ(0, message.map_int32_float().at(0)); |
| 297 EXPECT_EQ(0, message.map_int32_double().at(0)); |
| 298 EXPECT_EQ(false, message.map_bool_bool().at(0)); |
| 299 EXPECT_EQ("0", message.map_string_string().at("0")); |
| 300 EXPECT_EQ("0", message.map_int32_bytes().at(0)); |
| 301 EXPECT_EQ(enum_value0, message.map_int32_enum().at(0)); |
| 302 EXPECT_EQ(0, message.map_int32_foreign_message().at(0).c()); |
| 303 |
| 304 EXPECT_EQ(1, message.map_int32_int32().at(1)); |
| 305 EXPECT_EQ(1, message.map_int64_int64().at(1)); |
| 306 EXPECT_EQ(1, message.map_uint32_uint32().at(1)); |
| 307 EXPECT_EQ(1, message.map_uint64_uint64().at(1)); |
| 308 EXPECT_EQ(1, message.map_sint32_sint32().at(1)); |
| 309 EXPECT_EQ(1, message.map_sint64_sint64().at(1)); |
| 310 EXPECT_EQ(1, message.map_fixed32_fixed32().at(1)); |
| 311 EXPECT_EQ(1, message.map_fixed64_fixed64().at(1)); |
| 312 EXPECT_EQ(1, message.map_sfixed32_sfixed32().at(1)); |
| 313 EXPECT_EQ(1, message.map_sfixed64_sfixed64().at(1)); |
| 314 EXPECT_EQ(1, message.map_int32_float().at(1)); |
| 315 EXPECT_EQ(1, message.map_int32_double().at(1)); |
| 316 EXPECT_EQ(true, message.map_bool_bool().at(1)); |
| 317 EXPECT_EQ("1", message.map_string_string().at("1")); |
| 318 EXPECT_EQ("1", message.map_int32_bytes().at(1)); |
| 319 EXPECT_EQ(enum_value1, message.map_int32_enum().at(1)); |
| 320 EXPECT_EQ(1, message.map_int32_foreign_message().at(1).c()); |
| 321 } |
| 322 |
| 323 template <typename EnumType, EnumType enum_value0, |
| 324 EnumType enum_value1, typename MapMessage> |
| 325 void MapTestUtilImpl::ExpectArenaMapFieldsSet(const MapMessage& message) { |
| 326 EXPECT_EQ(2, message.map_int32_int32().size()); |
| 327 EXPECT_EQ(2, message.map_int64_int64().size()); |
| 328 EXPECT_EQ(2, message.map_uint32_uint32().size()); |
| 329 EXPECT_EQ(2, message.map_uint64_uint64().size()); |
| 330 EXPECT_EQ(2, message.map_sint32_sint32().size()); |
| 331 EXPECT_EQ(2, message.map_sint64_sint64().size()); |
| 332 EXPECT_EQ(2, message.map_fixed32_fixed32().size()); |
| 333 EXPECT_EQ(2, message.map_fixed64_fixed64().size()); |
| 334 EXPECT_EQ(2, message.map_sfixed32_sfixed32().size()); |
| 335 EXPECT_EQ(2, message.map_sfixed64_sfixed64().size()); |
| 336 EXPECT_EQ(2, message.map_int32_float().size()); |
| 337 EXPECT_EQ(2, message.map_int32_double().size()); |
| 338 EXPECT_EQ(2, message.map_bool_bool().size()); |
| 339 EXPECT_EQ(2, message.map_string_string().size()); |
| 340 EXPECT_EQ(2, message.map_int32_bytes().size()); |
| 341 EXPECT_EQ(2, message.map_int32_enum().size()); |
| 342 EXPECT_EQ(2, message.map_int32_foreign_message().size()); |
| 343 EXPECT_EQ(2, message.map_int32_foreign_message_no_arena().size()); |
| 344 |
| 345 EXPECT_EQ(0, message.map_int32_int32().at(0)); |
| 346 EXPECT_EQ(0, message.map_int64_int64().at(0)); |
| 347 EXPECT_EQ(0, message.map_uint32_uint32().at(0)); |
| 348 EXPECT_EQ(0, message.map_uint64_uint64().at(0)); |
| 349 EXPECT_EQ(0, message.map_sint32_sint32().at(0)); |
| 350 EXPECT_EQ(0, message.map_sint64_sint64().at(0)); |
| 351 EXPECT_EQ(0, message.map_fixed32_fixed32().at(0)); |
| 352 EXPECT_EQ(0, message.map_fixed64_fixed64().at(0)); |
| 353 EXPECT_EQ(0, message.map_sfixed32_sfixed32().at(0)); |
| 354 EXPECT_EQ(0, message.map_sfixed64_sfixed64().at(0)); |
| 355 EXPECT_EQ(0, message.map_int32_float().at(0)); |
| 356 EXPECT_EQ(0, message.map_int32_double().at(0)); |
| 357 EXPECT_EQ(false, message.map_bool_bool().at(0)); |
| 358 EXPECT_EQ("0", message.map_string_string().at("0")); |
| 359 EXPECT_EQ("0", message.map_int32_bytes().at(0)); |
| 360 EXPECT_EQ(enum_value0, message.map_int32_enum().at(0)); |
| 361 EXPECT_EQ(0, message.map_int32_foreign_message().at(0).c()); |
| 362 EXPECT_EQ(0, message.map_int32_foreign_message_no_arena().at(0).c()); |
| 363 |
| 364 EXPECT_EQ(1, message.map_int32_int32().at(1)); |
| 365 EXPECT_EQ(1, message.map_int64_int64().at(1)); |
| 366 EXPECT_EQ(1, message.map_uint32_uint32().at(1)); |
| 367 EXPECT_EQ(1, message.map_uint64_uint64().at(1)); |
| 368 EXPECT_EQ(1, message.map_sint32_sint32().at(1)); |
| 369 EXPECT_EQ(1, message.map_sint64_sint64().at(1)); |
| 370 EXPECT_EQ(1, message.map_fixed32_fixed32().at(1)); |
| 371 EXPECT_EQ(1, message.map_fixed64_fixed64().at(1)); |
| 372 EXPECT_EQ(1, message.map_sfixed32_sfixed32().at(1)); |
| 373 EXPECT_EQ(1, message.map_sfixed64_sfixed64().at(1)); |
| 374 EXPECT_EQ(1, message.map_int32_float().at(1)); |
| 375 EXPECT_EQ(1, message.map_int32_double().at(1)); |
| 376 EXPECT_EQ(true, message.map_bool_bool().at(1)); |
| 377 EXPECT_EQ("1", message.map_string_string().at("1")); |
| 378 EXPECT_EQ("1", message.map_int32_bytes().at(1)); |
| 379 EXPECT_EQ(enum_value1, message.map_int32_enum().at(1)); |
| 380 EXPECT_EQ(1, message.map_int32_foreign_message().at(1).c()); |
| 381 EXPECT_EQ(1, message.map_int32_foreign_message_no_arena().at(1).c()); |
| 382 } |
| 383 |
| 384 template <typename EnumType, EnumType enum_value, typename MapMessage> |
| 385 void MapTestUtilImpl::ExpectMapFieldsSetInitialized( |
| 386 const MapMessage& message) { |
| 387 EXPECT_EQ(1, message.map_int32_int32().size()); |
| 388 EXPECT_EQ(1, message.map_int64_int64().size()); |
| 389 EXPECT_EQ(1, message.map_uint32_uint32().size()); |
| 390 EXPECT_EQ(1, message.map_uint64_uint64().size()); |
| 391 EXPECT_EQ(1, message.map_sint32_sint32().size()); |
| 392 EXPECT_EQ(1, message.map_sint64_sint64().size()); |
| 393 EXPECT_EQ(1, message.map_fixed32_fixed32().size()); |
| 394 EXPECT_EQ(1, message.map_fixed64_fixed64().size()); |
| 395 EXPECT_EQ(1, message.map_sfixed32_sfixed32().size()); |
| 396 EXPECT_EQ(1, message.map_sfixed64_sfixed64().size()); |
| 397 EXPECT_EQ(1, message.map_int32_float().size()); |
| 398 EXPECT_EQ(1, message.map_int32_double().size()); |
| 399 EXPECT_EQ(1, message.map_bool_bool().size()); |
| 400 EXPECT_EQ(1, message.map_string_string().size()); |
| 401 EXPECT_EQ(1, message.map_int32_bytes().size()); |
| 402 EXPECT_EQ(1, message.map_int32_enum().size()); |
| 403 EXPECT_EQ(1, message.map_int32_foreign_message().size()); |
| 404 |
| 405 EXPECT_EQ(0, message.map_int32_int32().at(0)); |
| 406 EXPECT_EQ(0, message.map_int64_int64().at(0)); |
| 407 EXPECT_EQ(0, message.map_uint32_uint32().at(0)); |
| 408 EXPECT_EQ(0, message.map_uint64_uint64().at(0)); |
| 409 EXPECT_EQ(0, message.map_sint32_sint32().at(0)); |
| 410 EXPECT_EQ(0, message.map_sint64_sint64().at(0)); |
| 411 EXPECT_EQ(0, message.map_fixed32_fixed32().at(0)); |
| 412 EXPECT_EQ(0, message.map_fixed64_fixed64().at(0)); |
| 413 EXPECT_EQ(0, message.map_sfixed32_sfixed32().at(0)); |
| 414 EXPECT_EQ(0, message.map_sfixed64_sfixed64().at(0)); |
| 415 EXPECT_EQ(0, message.map_int32_float().at(0)); |
| 416 EXPECT_EQ(0, message.map_int32_double().at(0)); |
| 417 EXPECT_EQ(false, message.map_bool_bool().at(0)); |
| 418 EXPECT_EQ("", message.map_string_string().at("0")); |
| 419 EXPECT_EQ("", message.map_int32_bytes().at(0)); |
| 420 EXPECT_EQ(enum_value, message.map_int32_enum().at(0)); |
| 421 EXPECT_EQ(0, message.map_int32_foreign_message().at(0).ByteSize()); |
| 422 } |
| 423 |
| 424 template <typename EnumType, EnumType enum_value0, |
| 425 EnumType enum_value1, typename MapMessage> |
| 426 void MapTestUtilImpl::ExpectMapFieldsModified( |
| 427 const MapMessage& message) { |
| 428 // ModifyMapFields only sets the second element of each field. In addition to |
| 429 // verifying this, we also verify that the first element and size were *not* |
| 430 // modified. |
| 431 EXPECT_EQ(2, message.map_int32_int32().size()); |
| 432 EXPECT_EQ(2, message.map_int64_int64().size()); |
| 433 EXPECT_EQ(2, message.map_uint32_uint32().size()); |
| 434 EXPECT_EQ(2, message.map_uint64_uint64().size()); |
| 435 EXPECT_EQ(2, message.map_sint32_sint32().size()); |
| 436 EXPECT_EQ(2, message.map_sint64_sint64().size()); |
| 437 EXPECT_EQ(2, message.map_fixed32_fixed32().size()); |
| 438 EXPECT_EQ(2, message.map_fixed64_fixed64().size()); |
| 439 EXPECT_EQ(2, message.map_sfixed32_sfixed32().size()); |
| 440 EXPECT_EQ(2, message.map_sfixed64_sfixed64().size()); |
| 441 EXPECT_EQ(2, message.map_int32_float().size()); |
| 442 EXPECT_EQ(2, message.map_int32_double().size()); |
| 443 EXPECT_EQ(2, message.map_bool_bool().size()); |
| 444 EXPECT_EQ(2, message.map_string_string().size()); |
| 445 EXPECT_EQ(2, message.map_int32_bytes().size()); |
| 446 EXPECT_EQ(2, message.map_int32_enum().size()); |
| 447 EXPECT_EQ(2, message.map_int32_foreign_message().size()); |
| 448 |
| 449 EXPECT_EQ(0, message.map_int32_int32().at(0)); |
| 450 EXPECT_EQ(0, message.map_int64_int64().at(0)); |
| 451 EXPECT_EQ(0, message.map_uint32_uint32().at(0)); |
| 452 EXPECT_EQ(0, message.map_uint64_uint64().at(0)); |
| 453 EXPECT_EQ(0, message.map_sint32_sint32().at(0)); |
| 454 EXPECT_EQ(0, message.map_sint64_sint64().at(0)); |
| 455 EXPECT_EQ(0, message.map_fixed32_fixed32().at(0)); |
| 456 EXPECT_EQ(0, message.map_fixed64_fixed64().at(0)); |
| 457 EXPECT_EQ(0, message.map_sfixed32_sfixed32().at(0)); |
| 458 EXPECT_EQ(0, message.map_sfixed64_sfixed64().at(0)); |
| 459 EXPECT_EQ(0, message.map_int32_float().at(0)); |
| 460 EXPECT_EQ(0, message.map_int32_double().at(0)); |
| 461 EXPECT_EQ(false, message.map_bool_bool().at(0)); |
| 462 EXPECT_EQ("0", message.map_string_string().at("0")); |
| 463 EXPECT_EQ("0", message.map_int32_bytes().at(0)); |
| 464 EXPECT_EQ(enum_value0, message.map_int32_enum().at(0)); |
| 465 EXPECT_EQ(0, message.map_int32_foreign_message().at(0).c()); |
| 466 |
| 467 // Actually verify the second (modified) elements now. |
| 468 EXPECT_EQ(2, message.map_int32_int32().at(1)); |
| 469 EXPECT_EQ(2, message.map_int64_int64().at(1)); |
| 470 EXPECT_EQ(2, message.map_uint32_uint32().at(1)); |
| 471 EXPECT_EQ(2, message.map_uint64_uint64().at(1)); |
| 472 EXPECT_EQ(2, message.map_sint32_sint32().at(1)); |
| 473 EXPECT_EQ(2, message.map_sint64_sint64().at(1)); |
| 474 EXPECT_EQ(2, message.map_fixed32_fixed32().at(1)); |
| 475 EXPECT_EQ(2, message.map_fixed64_fixed64().at(1)); |
| 476 EXPECT_EQ(2, message.map_sfixed32_sfixed32().at(1)); |
| 477 EXPECT_EQ(2, message.map_sfixed64_sfixed64().at(1)); |
| 478 EXPECT_EQ(2, message.map_int32_float().at(1)); |
| 479 EXPECT_EQ(2, message.map_int32_double().at(1)); |
| 480 EXPECT_EQ(false, message.map_bool_bool().at(1)); |
| 481 EXPECT_EQ("2", message.map_string_string().at("1")); |
| 482 EXPECT_EQ("2", message.map_int32_bytes().at(1)); |
| 483 EXPECT_EQ(enum_value1, message.map_int32_enum().at(1)); |
| 484 EXPECT_EQ(2, message.map_int32_foreign_message().at(1).c()); |
| 485 } |
| 486 |
| 487 } // namespace protobuf |
| 488 |
| 489 } // namespace google |
| 490 #endif // GOOGLE_PROTOBUF_MAP_TEST_UTIL_IMPL_H__ |
| OLD | NEW |