From f25c65287630b2b069a25c81248e249c1641df71 Mon Sep 17 00:00:00 2001 From: Pavel Vesely <vesely@iuuk.mff.cuni.cz> Date: Tue, 22 Oct 2024 16:17:36 +0200 Subject: [PATCH] 02: splay op.: adding more tests --- 02-splay_operation/cpp/Makefile | 6 +++- .../cpp/splay_operation_more_tests.cpp | 30 +++++++++++++++++++ .../python/splay_operation_more_tests.py | 30 +++++++++++++++++++ 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 02-splay_operation/cpp/splay_operation_more_tests.cpp create mode 100644 02-splay_operation/python/splay_operation_more_tests.py diff --git a/02-splay_operation/cpp/Makefile b/02-splay_operation/cpp/Makefile index 4ca8274..b55e10d 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 0000000..3255c92 --- /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 0000000..b3a3c9d --- /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)) -- GitLab