From 837be4ad6a8e740fe45e19e2d1699d21f83f7ea4 Mon Sep 17 00:00:00 2001 From: "tommi@chromium.org" Date: Wed, 8 Jul 2009 20:47:31 +0000 Subject: Adding a non-templatized version of QI for times when the IID and type aren't associated. Also fixing the ScopedComPtrVector unit test. The problem with the test was that it expected AddRef to be called twice and Release() once when pushing a pointer to the vector. However that only happens when a push causes a reallocation. When there's no reallocation, there's only a single call to AddRef and no call to Release, causing the test to report failure. The fix is to simply use std::list instead and fix the expected values. TEST=Run *ScopedComPtr* unit tests. BUG=none Review URL: http://codereview.chromium.org/149345 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20183 0039d316-1c4b-4281-b951-d872f2087c98 --- base/scoped_comptr_win_unittest.cc | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'base/scoped_comptr_win_unittest.cc') diff --git a/base/scoped_comptr_win_unittest.cc b/base/scoped_comptr_win_unittest.cc index e6d6c68..3d22c56 100644 --- a/base/scoped_comptr_win_unittest.cc +++ b/base/scoped_comptr_win_unittest.cc @@ -2,9 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/scoped_comptr_win.h" + #include -#include "base/scoped_comptr_win.h" #include "base/scoped_ptr.h" #include "testing/gtest/include/gtest/gtest.h" @@ -42,6 +43,12 @@ TEST(ScopedComPtrTest, ScopedComPtr) { ScopedComPtr mem_alloc; EXPECT_TRUE(SUCCEEDED(CoGetMalloc(1, mem_alloc.Receive()))); + ScopedComPtr qi_test; + EXPECT_HRESULT_SUCCEEDED(mem_alloc.QueryInterface(IID_IUnknown, + reinterpret_cast(qi_test.Receive()))); + EXPECT_TRUE(qi_test.get() != NULL); + qi_test.Release(); + // test ScopedComPtr& constructor ScopedComPtr copy1(mem_alloc); EXPECT_TRUE(copy1.IsSameObject(mem_alloc)); @@ -73,6 +80,7 @@ TEST(ScopedComPtrTest, ScopedComPtrVector) { // Verify we don't get error C2558. typedef ScopedComPtr Ptr; std::vector bleh; + scoped_ptr p(new Dummy); { Ptr p2(p.get()); @@ -84,14 +92,16 @@ TEST(ScopedComPtrTest, ScopedComPtrVector) { p3 = p2; EXPECT_EQ(p->adds, 3); EXPECT_EQ(p->releases, 1); + // To avoid hitting a reallocation. + bleh.reserve(1); bleh.push_back(p2); - EXPECT_EQ(p->adds, 5); - EXPECT_EQ(p->releases, 2); + EXPECT_EQ(p->adds, 4); + EXPECT_EQ(p->releases, 1); EXPECT_EQ(bleh[0], p.get()); bleh.pop_back(); - EXPECT_EQ(p->adds, 5); - EXPECT_EQ(p->releases, 3); + EXPECT_EQ(p->adds, 4); + EXPECT_EQ(p->releases, 2); } - EXPECT_EQ(p->adds, 5); - EXPECT_EQ(p->releases, 5); + EXPECT_EQ(p->adds, 4); + EXPECT_EQ(p->releases, 4); } -- cgit v1.1