Mcucpp

Форк
0
/
DelegateTest.cpp 
97 строк · 1.6 Кб
1

2
#include <gtest/gtest.h>
3
#include <delegate.h>
4

5
class Foo
6
{
7
public:
8
	Foo()
9
	{
10
		barCalled = 0;
11
        arg1 = 0;
12
		arg2 = 0;
13
		arg3 = 0;
14
	}
15

16
	void Bar()
17
	{
18
		barCalled++;
19
	}
20

21
	void Bar1(int a1)
22
	{
23
		barCalled++;
24
		arg1 = a1;
25
	}
26

27
	void Bar2(int a1, int a2)
28
	{
29
		barCalled++;
30
		arg1 = a1;
31
		arg2 = a2;
32
	}
33

34
	void Bar3(int a1, int a2, int a3)
35
	{
36
		barCalled++;
37
		arg1 = a1;
38
		arg2 = a2;
39
		arg3 = a3;
40
	}
41

42
	int barCalled;
43
	int arg1, arg2, arg3;
44
};
45

46
Foo foo;
47

48
int delegateTestFuncCalled = 0;
49
void DelegateTestFunc()
50
{
51
	delegateTestFuncCalled++;
52
}
53

54
TEST(Delegate, NoArgsClassMember)
55
{
56
	foo.barCalled = 0;
57
	Mcucpp::Delegate<void> delegate(foo, &Foo::Bar);
58
	delegate();
59
	EXPECT_EQ(1, foo.barCalled);
60
}
61

62
TEST(Delegate, OneArgClassMember)
63
{
64
	foo.barCalled = 0;
65
	Mcucpp::Delegate1<void, int> delegate(foo, &Foo::Bar1);
66
	delegate(10);
67
	EXPECT_EQ(1, foo.barCalled);
68
	EXPECT_EQ(10, foo.arg1);
69
}
70

71
TEST(Delegate, TwoArgClassMember)
72
{
73
	foo.barCalled = 0;
74
	Mcucpp::Delegate2<void, int, int> delegate(foo, &Foo::Bar2);
75
	delegate(10, 20);
76
	EXPECT_EQ(1, foo.barCalled);
77
	EXPECT_EQ(10, foo.arg1);
78
	EXPECT_EQ(20, foo.arg2);
79
}
80

81
TEST(Delegate, ThreeArgClassMember)
82
{
83
	foo.barCalled = 0;
84
	Mcucpp::Delegate3<void, int, int, int> delegate(foo, &Foo::Bar3);
85
	delegate(10, 20, 30);
86
	EXPECT_EQ(1, foo.barCalled);
87
	EXPECT_EQ(10, foo.arg1);
88
	EXPECT_EQ(20, foo.arg2);
89
	EXPECT_EQ(30, foo.arg3);
90
}
91

92
TEST(Delegate, NoArgsStaticFunc)
93
{
94
	delegateTestFuncCalled = 0;
95
	Mcucpp::Delegate<void> delegate(DelegateTestFunc);
96
	delegate();
97
	EXPECT_EQ(1, delegateTestFuncCalled);
98
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.