File: mixin.test.h

package info (click to toggle)
libwibble 1.1-1
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd, stretch
  • size: 1,040 kB
  • ctags: 2,721
  • sloc: cpp: 14,542; makefile: 196; perl: 87; sh: 26
file content (74 lines) | stat: -rw-r--r-- 1,467 bytes parent folder | download | duplicates (5)
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
74
// -*- C++ -*- (c) 2007 Petr Rockai <me@mornfall.net>

#include <wibble/test.h>
#include <wibble/mixin.h>
#include <vector>

namespace {

using namespace std;

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;
	}
};

struct TestMixin {

// Test Comparable mixin
    Test comparable() {
        Integer i10(10);
        Integer i10a(10);
        Integer i20(20);

// Test the base method first
        assert(i10 <= i10a);
        assert(i10a <= i10);
        assert(i10 <= i20);
        assert(! (i20 <= i10));
        
// Test the other methods
        assert(i10 != i20);
        assert(!(i10 != i10a));
        
        assert(i10 == i10a);
        assert(!(i10 == i20));
        
        assert(i10 < i20);
        assert(!(i20 < i10));
        assert(!(i10 < i10a));
        
        assert(i20 > i10);
        assert(!(i10 > i20));
        assert(!(i10 > i10a));
        
        assert(i10 >= i10a);
        assert(i10a >= i10);
        assert(i20 >= i10);
        assert(! (i10 >= i20));
    }
    
    Test output() {
        vector<int> data;
        data.push_back(1);
        data.push_back(2);
        data.push_back(3);
        
        std::copy(data.begin(), data.end(), Discard());
    }

};

}