File: is_virtual.cpp

package info (click to toggle)
hippomocks 5.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 672 kB
  • sloc: cpp: 7,791; ansic: 31; makefile: 28
file content (65 lines) | stat: -rw-r--r-- 1,483 bytes parent folder | download | duplicates (2)
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
#include "Framework.h"
#include <iostream>
#include "hippomocks.h"

class IL { 
public:
	void f() { std::cout << "0" << std::endl; }
	virtual void g() { std::cout << "1" << std::endl; }
	virtual void h() { std::cout << "2" << std::endl; }
};

class SecondBase
{
public:
	virtual void k() { std::cout << "3" << std::endl; }
	int x;
};

class ThirdBase
{
public:
	virtual void l() { std::cout << "4" << std::endl; }
	virtual void m() { std::cout << "4" << std::endl; }
};

class ILD : public IL, public SecondBase, public ThirdBase
{
};

TEST(checkNonVirtual) 
{
	EQUALS(HippoMocks::virtual_index(&ILD::f).first, -1);
}

TEST(checkFirstVirtual) 
{
	EQUALS(HippoMocks::virtual_index(&ILD::g).first, 0);
	EQUALS(HippoMocks::virtual_index(&ILD::g).second, 0);
}

TEST(checkSecondVirtual) 
{
	EQUALS(HippoMocks::virtual_index(&ILD::h).first, 0);
	EQUALS(HippoMocks::virtual_index(&ILD::h).second, 1);
}

TEST(checkSecondBaseFirstVirtual) 
{
	EQUALS(HippoMocks::virtual_index((void (ILD::*)())&ILD::k).first, 1);
	EQUALS(HippoMocks::virtual_index((void (ILD::*)())&ILD::k).second, 0);
}

TEST(checkThirdBaseSecondVirtualAfterInt) 
{
	EQUALS(HippoMocks::virtual_index((void (ILD::*)())&ILD::m).first, 3);
	EQUALS(HippoMocks::virtual_index((void (ILD::*)())&ILD::m).second, 1);
}

TEST(checkPointerConversionIsOk) 
{
	void (ThirdBase::*f)() = &ThirdBase::m;
	EQUALS(HippoMocks::virtual_index((void (ILD::*)())f).first, 3);
	EQUALS(HippoMocks::virtual_index((void (ILD::*)())f).second, 1);
}