OLD | NEW |
| (Empty) |
1 // Copyright (c) 2010 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 "base/win/scoped_bstr.h" | |
6 #include "testing/gtest/include/gtest/gtest.h" | |
7 | |
8 namespace base { | |
9 namespace win { | |
10 | |
11 namespace { | |
12 | |
13 static const wchar_t kTestString1[] = L"123"; | |
14 static const wchar_t kTestString2[] = L"456789"; | |
15 size_t test1_len = arraysize(kTestString1) - 1; | |
16 size_t test2_len = arraysize(kTestString2) - 1; | |
17 | |
18 void DumbBstrTests() { | |
19 ScopedBstr b; | |
20 EXPECT_TRUE(b == NULL); | |
21 EXPECT_EQ(0, b.Length()); | |
22 EXPECT_EQ(0, b.ByteLength()); | |
23 b.Reset(NULL); | |
24 EXPECT_TRUE(b == NULL); | |
25 EXPECT_TRUE(b.Release() == NULL); | |
26 ScopedBstr b2; | |
27 b.Swap(b2); | |
28 EXPECT_TRUE(b2 == NULL); | |
29 } | |
30 | |
31 void GiveMeABstr(BSTR* ret) { | |
32 *ret = SysAllocString(kTestString1); | |
33 } | |
34 | |
35 void BasicBstrTests() { | |
36 ScopedBstr b1(kTestString1); | |
37 EXPECT_EQ(test1_len, b1.Length()); | |
38 EXPECT_EQ(test1_len * sizeof(kTestString1[0]), b1.ByteLength()); | |
39 | |
40 ScopedBstr b2; | |
41 b1.Swap(b2); | |
42 EXPECT_EQ(test1_len, b2.Length()); | |
43 EXPECT_EQ(0, b1.Length()); | |
44 EXPECT_EQ(0, lstrcmp(b2, kTestString1)); | |
45 BSTR tmp = b2.Release(); | |
46 EXPECT_TRUE(tmp != NULL); | |
47 EXPECT_EQ(0, lstrcmp(tmp, kTestString1)); | |
48 EXPECT_TRUE(b2 == NULL); | |
49 SysFreeString(tmp); | |
50 | |
51 GiveMeABstr(b2.Receive()); | |
52 EXPECT_TRUE(b2 != NULL); | |
53 b2.Reset(); | |
54 EXPECT_TRUE(b2.AllocateBytes(100) != NULL); | |
55 EXPECT_EQ(100, b2.ByteLength()); | |
56 EXPECT_EQ(100 / sizeof(kTestString1[0]), b2.Length()); | |
57 lstrcpy(static_cast<BSTR>(b2), kTestString1); | |
58 EXPECT_EQ(test1_len, lstrlen(b2)); | |
59 EXPECT_EQ(100 / sizeof(kTestString1[0]), b2.Length()); | |
60 b2.SetByteLen(lstrlen(b2) * sizeof(kTestString2[0])); | |
61 EXPECT_EQ(b2.Length(), lstrlen(b2)); | |
62 | |
63 EXPECT_TRUE(b1.Allocate(kTestString2) != NULL); | |
64 EXPECT_EQ(test2_len, b1.Length()); | |
65 b1.SetByteLen((test2_len - 1) * sizeof(kTestString2[0])); | |
66 EXPECT_EQ(test2_len - 1, b1.Length()); | |
67 } | |
68 | |
69 } // namespace | |
70 | |
71 TEST(ScopedBstrTest, ScopedBstr) { | |
72 DumbBstrTests(); | |
73 BasicBstrTests(); | |
74 } | |
75 | |
76 } // namespace win | |
77 } // namespace base | |
OLD | NEW |