File: M6TestIterators.cpp

package info (click to toggle)
mrs 6.0.5%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 4,520 kB
  • ctags: 3,178
  • sloc: ansic: 37,529; cpp: 24,043; perl: 3,279; sh: 124; makefile: 8
file content (62 lines) | stat: -rw-r--r-- 1,420 bytes parent folder | download | duplicates (3)
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 <iostream>

#include <boost/foreach.hpp>
#define foreach BOOST_FOREACH

#include "M6Lib.h"
#include "M6Iterator.h"

#include <boost/test/unit_test.hpp>

using namespace std;

BOOST_AUTO_TEST_CASE(test_intersection_iterator)
{
	cout << "testing intersection iterator" << endl;

	uint32 a[] = { 1, 4, 8 };
	uint32 b[] = { 1, 2, 5, 8, 9 };
	uint32 c[] = { 1, 8 };

	vector<uint32> va(a, a + sizeof(a) / sizeof(uint32));
	vector<uint32> vb(b, b + sizeof(b) / sizeof(uint32));
	vector<uint32> vc(c, c + sizeof(c) / sizeof(uint32));

	M6Iterator* ai = new M6VectorIterator(va);
	M6Iterator* bi = new M6VectorIterator(vb);

	M6Iterator* ui = new M6IntersectionIterator(ai, bi);

	vector<uint32> vt;
	uint32 doc; float rank;
	while (ui->Next(doc, rank))
		vt.push_back(doc);
	
	BOOST_CHECK(vt == vc);
}

BOOST_AUTO_TEST_CASE(test_union_iterator)
{
	cout << "testing union iterator" << endl;

	uint32 a[] = { 1, 4, 8 };
	uint32 b[] = { 1, 2, 5, 8, 9 };
	uint32 c[] = { 1, 2, 4, 5, 8, 9 };

	vector<uint32> va(a, a + sizeof(a) / sizeof(uint32));
	vector<uint32> vb(b, b + sizeof(b) / sizeof(uint32));
	vector<uint32> vc(c, c + sizeof(c) / sizeof(uint32));

	M6Iterator* ai = new M6VectorIterator(va);
	M6Iterator* bi = new M6VectorIterator(vb);

	M6Iterator* ui = new M6UnionIterator(ai, bi);

	vector<uint32> vt;
	uint32 doc; float rank;
	while (ui->Next(doc, rank))
		vt.push_back(doc);
	
	BOOST_CHECK(vt == vc);
}