File: Range.cpp

package info (click to toggle)
storm-lang 0.7.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 52,004 kB
  • sloc: ansic: 261,462; cpp: 140,405; sh: 14,891; perl: 9,846; python: 2,525; lisp: 2,504; asm: 860; makefile: 678; pascal: 70; java: 52; xml: 37; awk: 12
file content (62 lines) | stat: -rw-r--r-- 1,659 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "stdafx.h"
#include "Compiler/Server/RangeSet.h"

using namespace storm::server;

BEGIN_TEST(RangeTest, Server) {
	Engine &e = gEngine();

	RangeSet *s = new (e) RangeSet();
	s->insert(Range(100, 150));
	s->insert(Range(200, 250));
	s->insert(Range(10, 20));
	CHECK_EQ(::toS(s), L"[(10 - 20), (100 - 150), (200 - 250)]");

	s->insert(Range(140, 170));
	CHECK_EQ(::toS(s), L"[(10 - 20), (100 - 170), (200 - 250)]");

	s->insert(Range(90, 110));
	CHECK_EQ(::toS(s), L"[(10 - 20), (90 - 170), (200 - 250)]");

	s->insert(Range(80, 90));
	CHECK_EQ(::toS(s), L"[(10 - 20), (80 - 170), (200 - 250)]");

	s->insert(Range(1, 2));
	CHECK_EQ(::toS(s), L"[(1 - 2), (10 - 20), (80 - 170), (200 - 250)]");

	s->insert(Range(250, 300));
	CHECK_EQ(::toS(s), L"[(1 - 2), (10 - 20), (80 - 170), (200 - 300)]");

	CHECK(!s->has(0));
	CHECK(s->has(1));
	CHECK(!s->has(2));
	CHECK(s->has(210));
	CHECK(!s->has(300));

	CHECK_EQ(s->cover(1), Range(1, 2));
	CHECK_EQ(s->cover(90), Range(80, 170));

	CHECK_EQ(s->cover(Range(90, 200)), Range(80, 300));

	CHECK_EQ(s->nearest(49), Range(10, 20));
	CHECK_EQ(s->nearest(51), Range(80, 170));

	s->remove(Range(40, 80)); // Nothing shall be removed.
	CHECK_EQ(::toS(s), L"[(1 - 2), (10 - 20), (80 - 170), (200 - 300)]");

	s->remove(Range(0, 4));
	CHECK_EQ(::toS(s), L"[(10 - 20), (80 - 170), (200 - 300)]");

	s->remove(Range(15, 90));
	CHECK_EQ(::toS(s), L"[(10 - 15), (90 - 170), (200 - 300)]");

	s->remove(Range(10, 15));
	CHECK_EQ(::toS(s), L"[(90 - 170), (200 - 300)]");

	s->remove(Range(90, 100));
	CHECK_EQ(::toS(s), L"[(100 - 170), (200 - 300)]");

	s->remove(Range(0, 400));
	CHECK_EQ(::toS(s), L"[]");

} END_TEST