OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2011 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 TEST(WTF_Vector, OwnPtr) | 133 TEST(WTF_Vector, OwnPtr) |
134 { | 134 { |
135 int destructNumber = 0; | 135 int destructNumber = 0; |
136 OwnPtrVector vector; | 136 OwnPtrVector vector; |
137 vector.append(adoptPtr(new DestructCounter(0, &destructNumber))); | 137 vector.append(adoptPtr(new DestructCounter(0, &destructNumber))); |
138 vector.append(adoptPtr(new DestructCounter(1, &destructNumber))); | 138 vector.append(adoptPtr(new DestructCounter(1, &destructNumber))); |
139 ASSERT_EQ(2u, vector.size()); | 139 ASSERT_EQ(2u, vector.size()); |
140 | 140 |
141 OwnPtr<DestructCounter>& counter0 = vector.first(); | 141 OwnPtr<DestructCounter>& counter0 = vector.first(); |
142 ASSERT_EQ(0, counter0->get()); | 142 ASSERT_EQ(0, counter0->get()); |
143 OwnPtr<DestructCounter>& counter1 = vector.last(); | 143 int counter1 = vector.last()->get(); |
144 ASSERT_EQ(1, counter1->get()); | 144 ASSERT_EQ(1, counter1); |
145 ASSERT_EQ(0, destructNumber); | 145 ASSERT_EQ(0, destructNumber); |
146 | 146 |
147 size_t index = 0; | 147 size_t index = 0; |
148 for (OwnPtrVector::iterator iter = vector.begin(); iter != vector.end(); ++i
ter) { | 148 for (OwnPtrVector::iterator iter = vector.begin(); iter != vector.end(); ++i
ter) { |
149 OwnPtr<DestructCounter>* refCounter = iter; | 149 OwnPtr<DestructCounter>* refCounter = iter; |
150 ASSERT_EQ(index, static_cast<size_t>(refCounter->get()->get())); | 150 ASSERT_EQ(index, static_cast<size_t>(refCounter->get()->get())); |
151 ASSERT_EQ(index, static_cast<size_t>((*refCounter)->get())); | 151 ASSERT_EQ(index, static_cast<size_t>((*refCounter)->get())); |
152 index++; | 152 index++; |
153 } | 153 } |
154 ASSERT_EQ(0, destructNumber); | 154 ASSERT_EQ(0, destructNumber); |
155 | 155 |
156 for (index = 0; index < vector.size(); index++) { | 156 for (index = 0; index < vector.size(); index++) { |
157 OwnPtr<DestructCounter>& refCounter = vector[index]; | 157 OwnPtr<DestructCounter>& refCounter = vector[index]; |
158 ASSERT_EQ(index, static_cast<size_t>(refCounter->get())); | 158 ASSERT_EQ(index, static_cast<size_t>(refCounter->get())); |
159 index++; | 159 index++; |
160 } | 160 } |
161 ASSERT_EQ(0, destructNumber); | 161 ASSERT_EQ(0, destructNumber); |
162 | 162 |
163 ASSERT_EQ(0, vector[0]->get()); | 163 ASSERT_EQ(0, vector[0]->get()); |
164 ASSERT_EQ(1, vector[1]->get()); | 164 ASSERT_EQ(1, vector[1]->get()); |
165 vector.remove(0); | 165 vector.remove(0); |
166 ASSERT_EQ(1, vector[0]->get()); | 166 ASSERT_EQ(1, vector[0]->get()); |
167 ASSERT_EQ(1u, vector.size()); | 167 ASSERT_EQ(1u, vector.size()); |
168 ASSERT_EQ(1, destructNumber); | 168 ASSERT_EQ(1, destructNumber); |
169 | 169 |
170 OwnPtr<DestructCounter> ownCounter1 = vector[0].release(); | 170 OwnPtr<DestructCounter> ownCounter1 = vector[0].release(); |
171 vector.remove(0); | 171 vector.remove(0); |
172 ASSERT_EQ(counter1.get(), ownCounter1.get()); | 172 ASSERT_EQ(counter1, ownCounter1->get()); |
173 ASSERT_EQ(0u, vector.size()); | 173 ASSERT_EQ(0u, vector.size()); |
174 ASSERT_EQ(1, destructNumber); | 174 ASSERT_EQ(1, destructNumber); |
175 | 175 |
176 ownCounter1.clear(); | 176 ownCounter1.clear(); |
177 ASSERT_EQ(2, destructNumber); | 177 ASSERT_EQ(2, destructNumber); |
178 | 178 |
179 size_t count = 1025; | 179 size_t count = 1025; |
180 destructNumber = 0; | 180 destructNumber = 0; |
181 for (size_t i = 0; i < count; i++) | 181 for (size_t i = 0; i < count; i++) |
182 vector.prepend(adoptPtr(new DestructCounter(i, &destructNumber))); | 182 vector.prepend(adoptPtr(new DestructCounter(i, &destructNumber))); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 EXPECT_EQ(1, vectorA.at(0).get()); | 277 EXPECT_EQ(1, vectorA.at(0).get()); |
278 ASSERT_EQ(3u, vectorB.size()); | 278 ASSERT_EQ(3u, vectorB.size()); |
279 EXPECT_EQ(2, vectorB.at(0).get()); | 279 EXPECT_EQ(2, vectorB.at(0).get()); |
280 EXPECT_EQ(3, vectorB.at(1).get()); | 280 EXPECT_EQ(3, vectorB.at(1).get()); |
281 EXPECT_EQ(4, vectorB.at(2).get()); | 281 EXPECT_EQ(4, vectorB.at(2).get()); |
282 | 282 |
283 vectorB.swap(vectorA); | 283 vectorB.swap(vectorA); |
284 } | 284 } |
285 | 285 |
286 } // namespace | 286 } // namespace |
OLD | NEW |