Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(224)

Side by Side Diff: mojo/public/cpp/bindings/tests/validation_unittest.cc

Issue 1618963006: Mojo C++ bindings: support enum validation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 #include <stdio.h> 7 #include <stdio.h>
8 #include <algorithm> 8 #include <algorithm>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 } 187 }
188 } 188 }
189 189
190 class DummyMessageReceiver : public MessageReceiver { 190 class DummyMessageReceiver : public MessageReceiver {
191 public: 191 public:
192 bool Accept(Message* message) override { 192 bool Accept(Message* message) override {
193 return true; // Any message is OK. 193 return true; // Any message is OK.
194 } 194 }
195 }; 195 };
196 196
197 using ValidationTest = testing::Test; 197 class ValidationTest : public testing::Test {
198 public:
199 ValidationTest() : loop_(common::MessagePumpMojo::Create()) {}
200
201 protected:
202 base::MessageLoop loop_;
203 };
198 204
199 class ValidationIntegrationTest : public ValidationTest { 205 class ValidationIntegrationTest : public ValidationTest {
200 public: 206 public:
201 ValidationIntegrationTest() 207 ValidationIntegrationTest() : test_message_receiver_(nullptr) {}
202 : loop_(common::MessagePumpMojo::Create()),
203 test_message_receiver_(nullptr) {}
204 208
205 ~ValidationIntegrationTest() override {} 209 ~ValidationIntegrationTest() override {}
206 210
207 void SetUp() override { 211 void SetUp() override {
208 ScopedMessagePipeHandle tester_endpoint; 212 ScopedMessagePipeHandle tester_endpoint;
209 ASSERT_EQ(MOJO_RESULT_OK, 213 ASSERT_EQ(MOJO_RESULT_OK,
210 CreateMessagePipe(nullptr, &tester_endpoint, &testee_endpoint_)); 214 CreateMessagePipe(nullptr, &tester_endpoint, &testee_endpoint_));
211 test_message_receiver_ = 215 test_message_receiver_ =
212 new TestMessageReceiver(this, std::move(tester_endpoint)); 216 new TestMessageReceiver(this, std::move(tester_endpoint));
213 } 217 }
(...skipping 29 matching lines...) Expand all
243 return connector_.Accept(message); 247 return connector_.Accept(message);
244 } 248 }
245 249
246 public: 250 public:
247 ValidationIntegrationTest* owner_; 251 ValidationIntegrationTest* owner_;
248 mojo::internal::Connector connector_; 252 mojo::internal::Connector connector_;
249 }; 253 };
250 254
251 void PumpMessages() { loop_.RunUntilIdle(); } 255 void PumpMessages() { loop_.RunUntilIdle(); }
252 256
253 base::MessageLoop loop_;
254 TestMessageReceiver* test_message_receiver_; 257 TestMessageReceiver* test_message_receiver_;
255 ScopedMessagePipeHandle testee_endpoint_; 258 ScopedMessagePipeHandle testee_endpoint_;
256 }; 259 };
257 260
258 class IntegrationTestInterfaceImpl : public IntegrationTestInterface { 261 class IntegrationTestInterfaceImpl : public IntegrationTestInterface {
259 public: 262 public:
260 ~IntegrationTestInterfaceImpl() override {} 263 ~IntegrationTestInterfaceImpl() override {}
261 264
262 void Method0(BasicStructPtr param0, 265 void Method0(BasicStructPtr param0,
263 const Method0Callback& callback) override { 266 const Method0Callback& callback) override {
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
455 EXPECT_TRUE(mojo::internal::ValidateEncodedPointer(&offset)); 458 EXPECT_TRUE(mojo::internal::ValidateEncodedPointer(&offset));
456 459
457 offset = 1ULL; 460 offset = 1ULL;
458 EXPECT_TRUE(mojo::internal::ValidateEncodedPointer(&offset)); 461 EXPECT_TRUE(mojo::internal::ValidateEncodedPointer(&offset));
459 462
460 // offset must be <= 32-bit. 463 // offset must be <= 32-bit.
461 offset = std::numeric_limits<uint32_t>::max() + 1ULL; 464 offset = std::numeric_limits<uint32_t>::max() + 1ULL;
462 EXPECT_FALSE(mojo::internal::ValidateEncodedPointer(&offset)); 465 EXPECT_FALSE(mojo::internal::ValidateEncodedPointer(&offset));
463 } 466 }
464 467
465 // Tests the IsValidValue() function generated for BasicEnum. 468 // Tests the IsKnownEnumValue() function generated for BasicEnum.
466 TEST(EnumValueValidationTest, BasicEnum) { 469 TEST(EnumValueValidationTest, BasicEnum) {
467 // BasicEnum can have -3,0,1,10 as possible integral values. 470 // BasicEnum can have -3,0,1,10 as possible integral values.
468 EXPECT_FALSE(BasicEnum_IsValidValue(static_cast<BasicEnum>(-4))); 471 EXPECT_FALSE(IsKnownEnumValue(static_cast<BasicEnum>(-4)));
469 EXPECT_TRUE(BasicEnum_IsValidValue(static_cast<BasicEnum>(-3))); 472 EXPECT_TRUE(IsKnownEnumValue(static_cast<BasicEnum>(-3)));
470 EXPECT_FALSE(BasicEnum_IsValidValue(static_cast<BasicEnum>(-2))); 473 EXPECT_FALSE(IsKnownEnumValue(static_cast<BasicEnum>(-2)));
471 EXPECT_FALSE(BasicEnum_IsValidValue(static_cast<BasicEnum>(-1))); 474 EXPECT_FALSE(IsKnownEnumValue(static_cast<BasicEnum>(-1)));
472 EXPECT_TRUE(BasicEnum_IsValidValue(static_cast<BasicEnum>(0))); 475 EXPECT_TRUE(IsKnownEnumValue(static_cast<BasicEnum>(0)));
473 EXPECT_TRUE(BasicEnum_IsValidValue(static_cast<BasicEnum>(1))); 476 EXPECT_TRUE(IsKnownEnumValue(static_cast<BasicEnum>(1)));
474 EXPECT_FALSE(BasicEnum_IsValidValue(static_cast<BasicEnum>(2))); 477 EXPECT_FALSE(IsKnownEnumValue(static_cast<BasicEnum>(2)));
475 EXPECT_FALSE(BasicEnum_IsValidValue(static_cast<BasicEnum>(9))); 478 EXPECT_FALSE(IsKnownEnumValue(static_cast<BasicEnum>(9)));
476 // In the mojom, we represent this value as hex (0xa). 479 // In the mojom, we represent this value as hex (0xa).
477 EXPECT_TRUE(BasicEnum_IsValidValue(static_cast<BasicEnum>(10))); 480 EXPECT_TRUE(IsKnownEnumValue(static_cast<BasicEnum>(10)));
478 EXPECT_FALSE(BasicEnum_IsValidValue(static_cast<BasicEnum>(11))); 481 EXPECT_FALSE(IsKnownEnumValue(static_cast<BasicEnum>(11)));
479 } 482 }
480 483
481 // Tests the IsValidValue() method generated for StructWithEnum. 484 // Tests the IsKnownEnumValue() method generated for StructWithEnum.
482 TEST(EnumValueValidationTest, EnumWithin) { 485 TEST(EnumValueValidationTest, EnumWithin) {
483 // StructWithEnum::EnumWithin can have [0,4] as possible integral values. 486 // StructWithEnum::EnumWithin can have [0,4] as possible integral values.
484 EXPECT_FALSE(StructWithEnum::EnumWithin_IsValidValue( 487 EXPECT_FALSE(IsKnownEnumValue(static_cast<StructWithEnum::EnumWithin>(-1)));
485 static_cast<StructWithEnum::EnumWithin>(-1))); 488 EXPECT_TRUE(IsKnownEnumValue(static_cast<StructWithEnum::EnumWithin>(0)));
486 EXPECT_TRUE(StructWithEnum::EnumWithin_IsValidValue( 489 EXPECT_TRUE(IsKnownEnumValue(static_cast<StructWithEnum::EnumWithin>(1)));
487 static_cast<StructWithEnum::EnumWithin>(0))); 490 EXPECT_TRUE(IsKnownEnumValue(static_cast<StructWithEnum::EnumWithin>(2)));
488 EXPECT_TRUE(StructWithEnum::EnumWithin_IsValidValue( 491 EXPECT_TRUE(IsKnownEnumValue(static_cast<StructWithEnum::EnumWithin>(3)));
489 static_cast<StructWithEnum::EnumWithin>(1))); 492 EXPECT_FALSE(IsKnownEnumValue(static_cast<StructWithEnum::EnumWithin>(4)));
490 EXPECT_TRUE(StructWithEnum::EnumWithin_IsValidValue(
491 static_cast<StructWithEnum::EnumWithin>(2)));
492 EXPECT_TRUE(StructWithEnum::EnumWithin_IsValidValue(
493 static_cast<StructWithEnum::EnumWithin>(3)));
494 EXPECT_FALSE(StructWithEnum::EnumWithin_IsValidValue(
495 static_cast<StructWithEnum::EnumWithin>(4)));
496 } 493 }
497 494
498 } // namespace 495 } // namespace
499 } // namespace test 496 } // namespace test
500 } // namespace mojo 497 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698