OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google 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 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 void InsertionAndDeletionTest(const int32_t seed, const int treeSize) { | 163 void InsertionAndDeletionTest(const int32_t seed, const int treeSize) { |
164 initRandom(seed); | 164 initRandom(seed); |
165 const int maximumValue = treeSize; | 165 const int maximumValue = treeSize; |
166 // Build the tree. | 166 // Build the tree. |
167 PODRedBlackTree<int> tree; | 167 PODRedBlackTree<int> tree; |
168 Vector<int> values; | 168 Vector<int> values; |
169 for (int i = 0; i < treeSize; i++) { | 169 for (int i = 0; i < treeSize; i++) { |
170 int value = nextRandom(maximumValue); | 170 int value = nextRandom(maximumValue); |
171 tree.add(value); | 171 tree.add(value); |
172 ASSERT_TRUE(tree.checkInvariants()) << "Test failed for seed " << seed; | 172 ASSERT_TRUE(tree.checkInvariants()) << "Test failed for seed " << seed; |
173 values.append(value); | 173 values.push_back(value); |
174 } | 174 } |
175 // Churn the tree's contents. | 175 // Churn the tree's contents. |
176 for (int i = 0; i < treeSize; i++) { | 176 for (int i = 0; i < treeSize; i++) { |
177 // Pick a random value to remove. | 177 // Pick a random value to remove. |
178 int index = nextRandom(treeSize); | 178 int index = nextRandom(treeSize); |
179 int value = values[index]; | 179 int value = values[index]; |
180 // Remove this value. | 180 // Remove this value. |
181 tree.remove(value); | 181 tree.remove(value); |
182 ASSERT_TRUE(tree.checkInvariants()) << "Test failed for seed " << seed; | 182 ASSERT_TRUE(tree.checkInvariants()) << "Test failed for seed " << seed; |
183 // Replace it with a new one. | 183 // Replace it with a new one. |
184 value = nextRandom(maximumValue); | 184 value = nextRandom(maximumValue); |
185 values[index] = value; | 185 values[index] = value; |
186 tree.add(value); | 186 tree.add(value); |
187 ASSERT_TRUE(tree.checkInvariants()) << "Test failed for seed " << seed; | 187 ASSERT_TRUE(tree.checkInvariants()) << "Test failed for seed " << seed; |
188 } | 188 } |
189 } | 189 } |
190 } // anonymous namespace | 190 } // anonymous namespace |
191 | 191 |
192 TEST(PODRedBlackTreeTest, RandomDeletionAndInsertionRegressionTest1) { | 192 TEST(PODRedBlackTreeTest, RandomDeletionAndInsertionRegressionTest1) { |
193 InsertionAndDeletionTest(12311, 100); | 193 InsertionAndDeletionTest(12311, 100); |
194 } | 194 } |
195 | 195 |
196 } // namespace blink | 196 } // namespace blink |
OLD | NEW |