OXYGENHUB
◆ main openmsx / src / unittest / view_test.cc
2.0 KiB · C++ · last changed chore(): initial commit 1 month ago source blame history raw
e8555c89 Andy McCall 1
#include "catch.hpp"
2
#include "view.hh"
3
4
#include "hash_map.hh"
5
#include "stl.hh"
6
#include "xrange.hh"
7
#include "StringOp.hh"
8
9
#include <algorithm>
10
#include <list>
11
#include <map>
12
#include <string>
13
#include <tuple>
14
#include <vector>
15
16
using namespace view;
17
18
static std::vector<int> getVector(int n)
19
{
20
	return to_vector(xrange(n));
21
}
22
23
TEST_CASE("view::drop_back random-access-range")
24
{
25
	SECTION("empty") {
26
		std::vector<int> v;
27
		CHECK(to_vector(drop_back(v, 0)) == std::vector<int>{});
28
		CHECK(to_vector(drop_back(v, 3)) == std::vector<int>{});
29
	}
30
	SECTION("non-empty") {
31
		std::vector<int> v = {1, 2, 3, 4, 5};
32
		CHECK(to_vector(drop_back(v, 0)) == std::vector<int>{1, 2, 3, 4, 5});
33
		CHECK(to_vector(drop_back(v, 1)) == std::vector<int>{1, 2, 3, 4});
34
		CHECK(to_vector(drop_back(v, 2)) == std::vector<int>{1, 2, 3});
35
		CHECK(to_vector(drop_back(v, 3)) == std::vector<int>{1, 2});
36
		CHECK(to_vector(drop_back(v, 4)) == std::vector<int>{1});
37
		CHECK(to_vector(drop_back(v, 5)) == std::vector<int>{});
38
		CHECK(to_vector(drop_back(v, 6)) == std::vector<int>{});
39
		CHECK(to_vector(drop_back(v, 7)) == std::vector<int>{});
40
	}
41
	SECTION("r-value") {
42
		CHECK(to_vector(drop_back(getVector(6), 3)) == std::vector<int>{0, 1, 2});
43
	}
44
}
45
46
TEST_CASE("view::drop_back non-random-access-range")
47
{
48
	SECTION("empty") {
49
		std::list<int> l;
50
		CHECK(to_vector(drop_back(l, 0)) == std::vector<int>{});
51
		CHECK(to_vector(drop_back(l, 3)) == std::vector<int>{});
52
	}
53
	SECTION("non-empty") {
54
		std::list<int> l = {1, 2, 3, 4, 5};
55
		CHECK(to_vector(drop_back(l, 0)) == std::vector<int>{1, 2, 3, 4, 5});
56
		CHECK(to_vector(drop_back(l, 1)) == std::vector<int>{1, 2, 3, 4});
57
		CHECK(to_vector(drop_back(l, 2)) == std::vector<int>{1, 2, 3});
58
		CHECK(to_vector(drop_back(l, 3)) == std::vector<int>{1, 2});
59
		CHECK(to_vector(drop_back(l, 4)) == std::vector<int>{1});
60
		CHECK(to_vector(drop_back(l, 5)) == std::vector<int>{});
61
		CHECK(to_vector(drop_back(l, 6)) == std::vector<int>{});
62
		CHECK(to_vector(drop_back(l, 7)) == std::vector<int>{});
63
	}
64
}