OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/win/enum_variant.h" | 5 #include "base/win/enum_variant.h" |
6 | 6 |
7 #include "base/win/scoped_com_initializer.h" | 7 #include "base/win/scoped_com_initializer.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 | 9 |
10 namespace base { | 10 namespace base { |
(...skipping 13 matching lines...) Expand all Loading... |
24 IEnumVARIANT* ienumvariant; | 24 IEnumVARIANT* ienumvariant; |
25 EXPECT_TRUE(SUCCEEDED( | 25 EXPECT_TRUE(SUCCEEDED( |
26 ev->QueryInterface(IID_IEnumVARIANT, | 26 ev->QueryInterface(IID_IEnumVARIANT, |
27 reinterpret_cast<void**>(&ienumvariant)))); | 27 reinterpret_cast<void**>(&ienumvariant)))); |
28 EXPECT_EQ(ev, ienumvariant); | 28 EXPECT_EQ(ev, ienumvariant); |
29 ienumvariant->Release(); | 29 ienumvariant->Release(); |
30 | 30 |
31 VARIANT out_element; | 31 VARIANT out_element; |
32 ULONG out_received = 0; | 32 ULONG out_received = 0; |
33 EXPECT_EQ(S_FALSE, ev->Next(1, &out_element, &out_received)); | 33 EXPECT_EQ(S_FALSE, ev->Next(1, &out_element, &out_received)); |
34 EXPECT_EQ(0, out_received); | 34 EXPECT_EQ(0u, out_received); |
35 | 35 |
36 EXPECT_EQ(S_FALSE, ev->Skip(1)); | 36 EXPECT_EQ(S_FALSE, ev->Skip(1)); |
37 | 37 |
38 EXPECT_EQ(S_OK, ev->Reset()); | 38 EXPECT_EQ(S_OK, ev->Reset()); |
39 | 39 |
40 IEnumVARIANT* ev2 = NULL; | 40 IEnumVARIANT* ev2 = NULL; |
41 EXPECT_EQ(S_OK, ev->Clone(&ev2)); | 41 EXPECT_EQ(S_OK, ev->Clone(&ev2)); |
42 | 42 |
43 EXPECT_NE(static_cast<IEnumVARIANT*>(NULL), ev2); | 43 EXPECT_NE(static_cast<IEnumVARIANT*>(NULL), ev2); |
44 EXPECT_NE(ev, ev2); | 44 EXPECT_NE(ev, ev2); |
45 EXPECT_EQ(S_FALSE, ev2->Skip(1)); | 45 EXPECT_EQ(S_FALSE, ev2->Skip(1)); |
46 EXPECT_EQ(S_OK, ev2->Reset()); | 46 EXPECT_EQ(S_OK, ev2->Reset()); |
47 | 47 |
48 ULONG ev2_finalrefcount = ev2->Release(); | 48 ULONG ev2_finalrefcount = ev2->Release(); |
49 EXPECT_EQ(0, ev2_finalrefcount); | 49 EXPECT_EQ(0u, ev2_finalrefcount); |
50 | 50 |
51 ULONG ev_finalrefcount = ev->Release(); | 51 ULONG ev_finalrefcount = ev->Release(); |
52 EXPECT_EQ(0, ev_finalrefcount); | 52 EXPECT_EQ(0u, ev_finalrefcount); |
53 } | 53 } |
54 | 54 |
55 TEST(EnumVariantTest, SimpleEnumVariant) { | 55 TEST(EnumVariantTest, SimpleEnumVariant) { |
56 ScopedCOMInitializer com_initializer; | 56 ScopedCOMInitializer com_initializer; |
57 | 57 |
58 EnumVariant* ev = new EnumVariant(3); | 58 EnumVariant* ev = new EnumVariant(3); |
59 ev->AddRef(); | 59 ev->AddRef(); |
60 ev->ItemAt(0)->vt = VT_I4; | 60 ev->ItemAt(0)->vt = VT_I4; |
61 ev->ItemAt(0)->lVal = 10; | 61 ev->ItemAt(0)->lVal = 10; |
62 ev->ItemAt(1)->vt = VT_I4; | 62 ev->ItemAt(1)->vt = VT_I4; |
63 ev->ItemAt(1)->lVal = 20; | 63 ev->ItemAt(1)->lVal = 20; |
64 ev->ItemAt(2)->vt = VT_I4; | 64 ev->ItemAt(2)->vt = VT_I4; |
65 ev->ItemAt(2)->lVal = 30; | 65 ev->ItemAt(2)->lVal = 30; |
66 | 66 |
67 // Get elements one at a time. | 67 // Get elements one at a time. |
68 VARIANT out_element; | 68 VARIANT out_element; |
69 ULONG out_received = 0; | 69 ULONG out_received = 0; |
70 EXPECT_EQ(S_OK, ev->Next(1, &out_element, &out_received)); | 70 EXPECT_EQ(S_OK, ev->Next(1, &out_element, &out_received)); |
71 EXPECT_EQ(1, out_received); | 71 EXPECT_EQ(1u, out_received); |
72 EXPECT_EQ(VT_I4, out_element.vt); | 72 EXPECT_EQ(VT_I4, out_element.vt); |
73 EXPECT_EQ(10, out_element.lVal); | 73 EXPECT_EQ(10, out_element.lVal); |
74 EXPECT_EQ(S_OK, ev->Skip(1)); | 74 EXPECT_EQ(S_OK, ev->Skip(1)); |
75 EXPECT_EQ(S_OK, ev->Next(1, &out_element, &out_received)); | 75 EXPECT_EQ(S_OK, ev->Next(1, &out_element, &out_received)); |
76 EXPECT_EQ(1, out_received); | 76 EXPECT_EQ(1u, out_received); |
77 EXPECT_EQ(VT_I4, out_element.vt); | 77 EXPECT_EQ(VT_I4, out_element.vt); |
78 EXPECT_EQ(30, out_element.lVal); | 78 EXPECT_EQ(30, out_element.lVal); |
79 EXPECT_EQ(S_FALSE, ev->Next(1, &out_element, &out_received)); | 79 EXPECT_EQ(S_FALSE, ev->Next(1, &out_element, &out_received)); |
80 | 80 |
81 // Reset and get all elements at once. | 81 // Reset and get all elements at once. |
82 VARIANT out_elements[3]; | 82 VARIANT out_elements[3]; |
83 EXPECT_EQ(S_OK, ev->Reset()); | 83 EXPECT_EQ(S_OK, ev->Reset()); |
84 EXPECT_EQ(S_OK, ev->Next(3, out_elements, &out_received)); | 84 EXPECT_EQ(S_OK, ev->Next(3, out_elements, &out_received)); |
85 EXPECT_EQ(3, out_received); | 85 EXPECT_EQ(3u, out_received); |
86 EXPECT_EQ(VT_I4, out_elements[0].vt); | 86 EXPECT_EQ(VT_I4, out_elements[0].vt); |
87 EXPECT_EQ(10, out_elements[0].lVal); | 87 EXPECT_EQ(10, out_elements[0].lVal); |
88 EXPECT_EQ(VT_I4, out_elements[1].vt); | 88 EXPECT_EQ(VT_I4, out_elements[1].vt); |
89 EXPECT_EQ(20, out_elements[1].lVal); | 89 EXPECT_EQ(20, out_elements[1].lVal); |
90 EXPECT_EQ(VT_I4, out_elements[2].vt); | 90 EXPECT_EQ(VT_I4, out_elements[2].vt); |
91 EXPECT_EQ(30, out_elements[2].lVal); | 91 EXPECT_EQ(30, out_elements[2].lVal); |
92 EXPECT_EQ(S_FALSE, ev->Next(1, &out_element, &out_received)); | 92 EXPECT_EQ(S_FALSE, ev->Next(1, &out_element, &out_received)); |
93 | 93 |
94 // Clone it. | 94 // Clone it. |
95 IEnumVARIANT* ev2 = NULL; | 95 IEnumVARIANT* ev2 = NULL; |
96 EXPECT_EQ(S_OK, ev->Clone(&ev2)); | 96 EXPECT_EQ(S_OK, ev->Clone(&ev2)); |
97 EXPECT_TRUE(ev2 != NULL); | 97 EXPECT_TRUE(ev2 != NULL); |
98 EXPECT_EQ(S_FALSE, ev->Next(1, &out_element, &out_received)); | 98 EXPECT_EQ(S_FALSE, ev->Next(1, &out_element, &out_received)); |
99 EXPECT_EQ(S_OK, ev2->Reset()); | 99 EXPECT_EQ(S_OK, ev2->Reset()); |
100 EXPECT_EQ(S_OK, ev2->Next(3, out_elements, &out_received)); | 100 EXPECT_EQ(S_OK, ev2->Next(3, out_elements, &out_received)); |
101 EXPECT_EQ(3, out_received); | 101 EXPECT_EQ(3u, out_received); |
102 EXPECT_EQ(VT_I4, out_elements[0].vt); | 102 EXPECT_EQ(VT_I4, out_elements[0].vt); |
103 EXPECT_EQ(10, out_elements[0].lVal); | 103 EXPECT_EQ(10, out_elements[0].lVal); |
104 EXPECT_EQ(VT_I4, out_elements[1].vt); | 104 EXPECT_EQ(VT_I4, out_elements[1].vt); |
105 EXPECT_EQ(20, out_elements[1].lVal); | 105 EXPECT_EQ(20, out_elements[1].lVal); |
106 EXPECT_EQ(VT_I4, out_elements[2].vt); | 106 EXPECT_EQ(VT_I4, out_elements[2].vt); |
107 EXPECT_EQ(30, out_elements[2].lVal); | 107 EXPECT_EQ(30, out_elements[2].lVal); |
108 EXPECT_EQ(S_FALSE, ev2->Next(1, &out_element, &out_received)); | 108 EXPECT_EQ(S_FALSE, ev2->Next(1, &out_element, &out_received)); |
109 | 109 |
110 ULONG ev2_finalrefcount = ev2->Release(); | 110 ULONG ev2_finalrefcount = ev2->Release(); |
111 EXPECT_EQ(0, ev2_finalrefcount); | 111 EXPECT_EQ(0u, ev2_finalrefcount); |
112 | 112 |
113 ULONG ev_finalrefcount = ev->Release(); | 113 ULONG ev_finalrefcount = ev->Release(); |
114 EXPECT_EQ(0, ev_finalrefcount); | 114 EXPECT_EQ(0u, ev_finalrefcount); |
115 } | 115 } |
116 | 116 |
117 } // namespace win | 117 } // namespace win |
118 } // namespace base | 118 } // namespace base |
OLD | NEW |