| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "base/scoped_variant_win.h" | 5 #include "base/scoped_variant_win.h" |
| 6 #include "testing/gtest/include/gtest/gtest.h" | 6 #include "testing/gtest/include/gtest/gtest.h" |
| 7 | 7 |
| 8 namespace { | 8 namespace { |
| 9 | 9 |
| 10 static const wchar_t kTestString1[] = L"Used to create BSTRs"; | 10 static const wchar_t kTestString1[] = L"Used to create BSTRs"; |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 var.Reset(); | 191 var.Reset(); |
| 192 EXPECT_EQ(0, faker.ref_count()); | 192 EXPECT_EQ(0, faker.ref_count()); |
| 193 | 193 |
| 194 var.Set(static_cast<IUnknown*>(&faker)); | 194 var.Set(static_cast<IUnknown*>(&faker)); |
| 195 EXPECT_EQ(VT_UNKNOWN, var.type()); | 195 EXPECT_EQ(VT_UNKNOWN, var.type()); |
| 196 EXPECT_EQ(&faker, V_UNKNOWN(&var)); | 196 EXPECT_EQ(&faker, V_UNKNOWN(&var)); |
| 197 EXPECT_EQ(1, faker.ref_count()); | 197 EXPECT_EQ(1, faker.ref_count()); |
| 198 var.Reset(); | 198 var.Reset(); |
| 199 EXPECT_EQ(0, faker.ref_count()); | 199 EXPECT_EQ(0, faker.ref_count()); |
| 200 | 200 |
| 201 { |
| 202 ScopedVariant disp_var(&faker); |
| 203 EXPECT_EQ(VT_DISPATCH, disp_var.type()); |
| 204 EXPECT_EQ(&faker, V_DISPATCH(&disp_var)); |
| 205 EXPECT_EQ(1, faker.ref_count()); |
| 206 } |
| 207 EXPECT_EQ(0, faker.ref_count()); |
| 208 |
| 209 { |
| 210 ScopedVariant ref1(&faker); |
| 211 EXPECT_EQ(1, faker.ref_count()); |
| 212 ScopedVariant ref2(static_cast<const VARIANT&>(ref1)); |
| 213 EXPECT_EQ(2, faker.ref_count()); |
| 214 ScopedVariant ref3; |
| 215 ref3 = static_cast<const VARIANT&>(ref2); |
| 216 EXPECT_EQ(3, faker.ref_count()); |
| 217 } |
| 218 EXPECT_EQ(0, faker.ref_count()); |
| 219 |
| 220 { |
| 221 ScopedVariant unk_var(static_cast<IUnknown*>(&faker)); |
| 222 EXPECT_EQ(VT_UNKNOWN, unk_var.type()); |
| 223 EXPECT_EQ(&faker, V_UNKNOWN(&unk_var)); |
| 224 EXPECT_EQ(1, faker.ref_count()); |
| 225 } |
| 226 EXPECT_EQ(0, faker.ref_count()); |
| 227 |
| 228 VARIANT raw; |
| 229 raw.vt = VT_UNKNOWN; |
| 230 raw.punkVal = &faker; |
| 231 EXPECT_EQ(0, faker.ref_count()); |
| 232 var.Set(raw); |
| 233 EXPECT_EQ(1, faker.ref_count()); |
| 234 var.Reset(); |
| 235 EXPECT_EQ(0, faker.ref_count()); |
| 236 |
| 237 { |
| 238 ScopedVariant number(123); |
| 239 EXPECT_EQ(VT_I4, number.type()); |
| 240 EXPECT_EQ(123, V_I4(&number)); |
| 241 } |
| 242 |
| 201 // SAFEARRAY tests | 243 // SAFEARRAY tests |
| 202 var.Set(static_cast<SAFEARRAY*>(NULL)); | 244 var.Set(static_cast<SAFEARRAY*>(NULL)); |
| 203 EXPECT_EQ(VT_EMPTY, var.type()); | 245 EXPECT_EQ(VT_EMPTY, var.type()); |
| 204 | 246 |
| 205 SAFEARRAY* sa = ::SafeArrayCreateVector(VT_UI1, 0, 100); | 247 SAFEARRAY* sa = ::SafeArrayCreateVector(VT_UI1, 0, 100); |
| 206 ASSERT_TRUE(sa != NULL); | 248 ASSERT_TRUE(sa != NULL); |
| 207 | 249 |
| 208 var.Set(sa); | 250 var.Set(sa); |
| 209 #ifndef OFFICIAL_BUILD | 251 #ifndef OFFICIAL_BUILD |
| 210 EXPECT_TRUE(ScopedVariant::IsLeakableVarType(var.type())); | 252 EXPECT_TRUE(ScopedVariant::IsLeakableVarType(var.type())); |
| 211 #endif | 253 #endif |
| 212 EXPECT_EQ(VT_ARRAY | VT_UI1, var.type()); | 254 EXPECT_EQ(VT_ARRAY | VT_UI1, var.type()); |
| 213 EXPECT_EQ(sa, V_ARRAY(&var)); | 255 EXPECT_EQ(sa, V_ARRAY(&var)); |
| 214 // The array is destroyed in the destructor of var. | 256 // The array is destroyed in the destructor of var. |
| 215 } | 257 } |
| OLD | NEW |