forked from louthy/language-ext
-
Notifications
You must be signed in to change notification settings - Fork 0
/
QueryTests.cs
81 lines (63 loc) · 2.06 KB
/
QueryTests.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
using Xunit;
using static LanguageExt.Prelude;
using static LanguageExt.Query;
namespace LanguageExt.Tests
{
public class QueryTests
{
[Fact]
public void MapTest()
{
// Generates 10,20,30,40,50
var input = toQuery(new[] { 1, 2, 3, 4, 5 });
var output1 = map(input, x => x * 10);
// Generates 30,40,50
var output2 = filter(output1, x => x > 20);
// Generates 120
var output3 = fold(output2, 0, (x, s) => s + x);
Assert.True(output3 == 120);
}
[Fact]
public void ReduceTest1()
{
// Generates 10,20,30,40,50
var input = toQuery(new[] { 1, 2, 3, 4, 5 });
var output1 = map(input, (i,x) => x * 10);
// Generates 30,40,50
var output2 = filter(output1, x => x > 20);
// Generates 120
var output3 = reduce(output2, (x, s) => s + x);
Assert.True(output3 == 120);
}
[Fact]
public void ReduceTest2()
{
// Generates 10,20,30,40,50
var input = toQuery(new[] { 1, 2, 3, 4, 5 });
var output1 = map(input, (i, x) => (i + 1) * 10);
// Generates 30,40,50
var output2 = filter(output1, x => x > 20);
// Generates 120
var output3 = reduce(output2, (x, s) => s + x);
Assert.True(output3 == 120);
}
[Fact]
public void MapTestFluent()
{
var res = toQuery(new[] { 1, 2, 3, 4, 5 })
.Map(x => x * 10)
.Filter(x => x > 20)
.Fold(0, (x, s) => s + x);
Assert.True(res == 120);
}
[Fact]
public void ReduceTestFluent()
{
var res = toQuery(new[] { 1, 2, 3, 4, 5 })
.Map(x => x * 10)
.Filter(x => x > 20)
.Reduce((x, s) => s + x);
Assert.True(res == 120);
}
}
}