/
LambdasAsDelegateTests.cs
126 lines (113 loc) · 3.95 KB
/
LambdasAsDelegateTests.cs
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace DelegatesLambdasAndExpressions
{
[TestClass]
public class LambdasAsDelegateTests
{
public class TestClass
{
public TestArg Arg { get; set; }
}
public class TestArg { }
[TestMethod]
public void EventHandlerTest()
{
object sender = "My Sender";
var eventArgs = new EventArgs();
object testEventSender = null;
EventArgs testEventArgs = null;
var eventHandled = false;
EventHandler eventHandler = (s,args) =>
{
testEventSender = s;
testEventArgs = args;
eventHandled = true;
};
eventHandler(sender, eventArgs);
Assert.AreEqual(sender, testEventSender);
Assert.AreEqual(eventArgs, testEventArgs);
Assert.IsTrue(eventHandled);
}
[TestMethod]
public void PredicateTest()
{
var predicateExecuted = false;
Predicate<string> stringIsNotNullPredicate = s =>
{
predicateExecuted = true;
return s != null;
};
var result = stringIsNotNullPredicate("I'm not null");
Assert.IsTrue(result);
Assert.IsTrue(predicateExecuted);
}
[TestMethod]
public void ComparisonTest()
{
var comparisonExecuted = false;
var x = 3; var y = 7;
Comparison<int> useCompareTo = (a,b) =>
{
comparisonExecuted = true;
return a.CompareTo(b);
};
var result = useCompareTo(x, y);
Assert.AreEqual(x.CompareTo(y), result);
Assert.IsTrue(comparisonExecuted);
}
[TestMethod]
public void ConverterTest()
{
var converterExecuted = false;
var genericTestArg = new TestArg();
Converter<TestArg, TestClass> convertTestArgToTestClass = a =>
{
converterExecuted = true;
return new TestClass{Arg = a};
};
var result = convertTestArgToTestClass(genericTestArg);
Assert.AreEqual(genericTestArg, result.Arg);
Assert.IsTrue(converterExecuted);
}
[TestMethod]
public void ActionTest()
{
var testActionExecuted = false;
Action action = () => testActionExecuted = true;
action();
Assert.IsTrue(testActionExecuted);
}
[TestMethod]
public void ActionWithArgTest()
{
TestArg testGenericDelegateArg = null;
var genericTestArg = new TestArg();
Action<TestArg> actionWithTestArg = a => testGenericDelegateArg = a;
actionWithTestArg(genericTestArg);
Assert.AreEqual(genericTestArg, testGenericDelegateArg);
}
[TestMethod]
public void FunctionTest()
{
var genericNoArgFunctionReturnValue = new TestClass();
Func<TestClass> noArgFunction = () => genericNoArgFunctionReturnValue;
var result = noArgFunction();
Assert.AreEqual(genericNoArgFunctionReturnValue, result);
}
[TestMethod]
public void FunctionWithArgTest()
{
var functionExecuted = false;
var genericTestArg = new TestArg();
Func<TestArg, TestClass> functionWithArg = a =>
{
functionExecuted = true;
return new TestClass{Arg = a};
};
var result = functionWithArg(genericTestArg);
Assert.AreEqual(genericTestArg, result.Arg);
Assert.IsTrue(functionExecuted);
}
}
}