diff --git a/02-splay_operation/cpp/Makefile b/02-splay_operation/cpp/Makefile index 4ca82749b82280d73f3eb750ae3167fa1fbafd4f..b55e10d9e8e8109e172b504adcf2e783c65623e1 100644 --- a/02-splay_operation/cpp/Makefile +++ b/02-splay_operation/cpp/Makefile @@ -1,11 +1,15 @@ -test: splay_operation_test +test: splay_operation_test splay_operation_more_tests ./$< + ./splay_operation_more_tests CXXFLAGS=-std=c++11 -O2 -Wall -Wextra -g -Wno-sign-compare splay_operation_test: splay_operation.h splay_operation_test.cpp test_main.cpp $(CXX) $(CXXFLAGS) $^ -o $@ +splay_operation_more_tests: splay_operation.h splay_operation_more_tests.cpp test_main.cpp + $(CXX) $(CXXFLAGS) $^ -o $@ + clean:: rm -f splay_operation_test diff --git a/02-splay_operation/cpp/splay_operation_more_tests.cpp b/02-splay_operation/cpp/splay_operation_more_tests.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3255c921871a5b876d6e6e398185f134dbeeba5a --- /dev/null +++ b/02-splay_operation/cpp/splay_operation_more_tests.cpp @@ -0,0 +1,30 @@ +#include <algorithm> +#include <cassert> +#include <fstream> +#include <functional> +#include <string> +#include <utility> +#include <vector> + +#include "splay_operation.h" + +using namespace std; + +const int elements = 5000000; + +void test_failed_insert() { + + // Test speed + { + Tree tree; + for (int i = 0; i < elements; i++) + tree.insert(i); + + for (int i = 0; i < 2*elements; i++) + tree.insert(0); + } +} + +vector<pair<string, function<void()>>> tests = { + { "failed_insert", test_failed_insert }, +}; diff --git a/02-splay_operation/python/splay_operation_more_tests.py b/02-splay_operation/python/splay_operation_more_tests.py new file mode 100644 index 0000000000000000000000000000000000000000..b3a3c9d761a17c16247b919a685ad9a62a7ef9c6 --- /dev/null +++ b/02-splay_operation/python/splay_operation_more_tests.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 +import itertools +import math +import sys + +from splay_operation import Tree, Node + +def test_failed_insert(): + elements = 100000 + tree = Tree() + + for elem in range(elements): + tree.insert(elem) + + for _ in range(2*elements): + tree.insert(0) + +tests = [ + ("failed_insert", test_failed_insert), +] + +if __name__ == "__main__": + for required_test in sys.argv[1:] or [name for name, _ in tests]: + for name, test in tests: + if name == required_test: + print("Running test {}".format(name), file=sys.stderr) + test() + break + else: + raise ValueError("Unknown test {}".format(name))