Select Git revision
-
Martin Mareš authored
In accordance with contemporary JS style, we now prefer "const" over "var" where appropriate.
Martin Mareš authoredIn accordance with contemporary JS style, we now prefer "const" over "var" where appropriate.
tree_successor_test.cpp 1.42 KiB
#include <algorithm>
#include <functional>
#include <cstdint>
#include <string>
#include <utility>
#include <vector>
#include "tree_successor.h"
using namespace std;
// If the condition is not true, report an error and halt.
#define EXPECT(condition, message) do { if (!(condition)) expect_failed(message); } while (0)
void expect_failed(const string& message);
void test(const vector<int>& sequence) {
Tree tree;
for (const auto& element : sequence)
tree.insert(element);
vector<int> sorted_sequence(sequence);
sort(sorted_sequence.begin(), sorted_sequence.end());
Node* node = tree.successor(nullptr);
for (const auto& element : sorted_sequence) {
EXPECT(node, "Expected successor " + to_string(element) + ", got nullptr");
EXPECT(node->key == element,
"Expected successor " + to_string(element) + ", got " + to_string(node->key));
node = tree.successor(node);
}
EXPECT(!node, "Expected no successor, got " + to_string(node->key));
}
vector<pair<string, function<void()>>> tests = {
{"path", []
{ vector<int> numbers;
for (int i = 0; i < 10000; i++) numbers.push_back(i);
test(numbers);
}
},
{"random_tree", []
{ vector<int> numbers = {997};
for (int i = 2; i < 199999; i++)
numbers.push_back((numbers.back() * int64_t(997)) % 199999);
test(numbers);
}
},
};