File: test_mixin.cpp

package info (click to toggle)
libwibble 0.1.9
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 500 kB
  • ctags: 1,183
  • sloc: cpp: 5,760; sh: 113; makefile: 71
file content (73 lines) | stat: -rw-r--r-- 1,260 bytes parent folder | download
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
63
64
65
66
67
68
69
70
71
72
73
#include <wibble/config.h>
#include <wibble/mixin.h>
using namespace std;

#include <wibble/tests/tut-wibble.h>

namespace tut {

struct mixin_shar {};
TESTGRP( mixin );

class Integer : public wibble::mixin::Comparable<Integer>
{
	int val;
public:
	Integer(int val) : val(val) {}
	bool operator<=( const Integer& o ) const { return val <= o.val; }
};

class Discard : public wibble::mixin::OutputIterator<Discard>
{
public:
	Discard& operator=(const int&)
	{
		return *this;
	}
};

// Test Comparable mixin
template<> template<>
void to::test< 1 >() {
	Integer i10(10);
	Integer i10a(10);
	Integer i20(20);

	// Test the base method first
	ensure(i10 <= i10a);
	ensure(i10a <= i10);
	ensure(i10 <= i20);
	ensure(! (i20 <= i10));

	// Test the other methods
	ensure(i10 != i20);
	ensure(!(i10 != i10a));

	ensure(i10 == i10a);
	ensure(!(i10 == i20));

	ensure(i10 < i20);
	ensure(!(i20 < i10));
	ensure(!(i10 < i10a));

	ensure(i20 > i10);
	ensure(!(i10 > i20));
	ensure(!(i10 > i10a));

	ensure(i10 >= i10a);
	ensure(i10a >= i10);
	ensure(i20 >= i10);
	ensure(! (i10 >= i20));
}

template<> template<>
void to::test< 2 >() {
	vector<int> data;
	data.push_back(1);
	data.push_back(2);
	data.push_back(3);

	std::copy(data.begin(), data.end(), Discard());
}

}