service_registry_unittest.cc revision 116680a4aac90f2aa7413d9095a592090648e557
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 3// found in the LICENSE file. 4 5#include "mojo/public/cpp/application/lib/service_registry.h" 6 7#include "mojo/public/cpp/application/lib/service_connector.h" 8#include "testing/gtest/include/gtest/gtest.h" 9 10namespace mojo { 11namespace internal { 12namespace { 13 14class TestConnector : public ServiceConnectorBase { 15 public: 16 TestConnector(const std::string& name, int* delete_count) 17 : ServiceConnectorBase(name), delete_count_(delete_count) {} 18 virtual ~TestConnector() { (*delete_count_)++; } 19 virtual void ConnectToService( 20 const std::string& name, 21 ScopedMessagePipeHandle client_handle) MOJO_OVERRIDE {} 22 private: 23 int* delete_count_; 24}; 25 26TEST(ServiceRegistryTest, Ownership) { 27 int delete_count = 0; 28 29 // Destruction. 30 { 31 ServiceRegistry registry; 32 registry.AddServiceConnector(new TestConnector("TC1", &delete_count)); 33 } 34 EXPECT_EQ(1, delete_count); 35 36 // Removal. 37 { 38 ServiceRegistry registry; 39 ServiceConnectorBase* c = new TestConnector("TC1", &delete_count); 40 registry.AddServiceConnector(c); 41 registry.RemoveServiceConnector(c); 42 EXPECT_EQ(2, delete_count); 43 } 44 45 // Multiple. 46 { 47 ServiceRegistry registry; 48 registry.AddServiceConnector(new TestConnector("TC1", &delete_count)); 49 registry.AddServiceConnector(new TestConnector("TC2", &delete_count)); 50 } 51 EXPECT_EQ(4, delete_count); 52 53 // Re-addition. 54 { 55 ServiceRegistry registry; 56 registry.AddServiceConnector(new TestConnector("TC1", &delete_count)); 57 registry.AddServiceConnector(new TestConnector("TC1", &delete_count)); 58 EXPECT_EQ(5, delete_count); 59 } 60 EXPECT_EQ(6, delete_count); 61} 62 63} // namespace 64} // namespace internal 65} // namespace mojo 66