Skip to content

Commit f9c57ab

Browse files
committed
Updated unit tests with correct nullable behavior
1 parent 6085158 commit f9c57ab

13 files changed

+682
-690
lines changed
Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,26 @@
1-
namespace MaybeSharp.UnitTests
1+
namespace MaybeSharp.UnitTests;
2+
3+
public class DemoType
24
{
3-
public class DemoType
4-
{
5-
public string Name { get; } = "DemoType";
6-
public int Index { get; }
7-
public object Optional { get; }
5+
public string Name { get; } = "DemoType";
6+
public int Index { get; }
7+
public object? Optional { get; }
88

9-
public DemoType() { }
9+
public DemoType() { }
1010

11-
public DemoType(string name)
12-
{
13-
Name = name;
14-
}
11+
public DemoType(string name)
12+
{
13+
Name = name;
14+
}
1515

16-
public DemoType(string name, int index)
17-
: this(name)
18-
{
19-
Index = index;
20-
}
16+
public DemoType(string name, int index)
17+
: this(name)
18+
{
19+
Index = index;
20+
}
2121

22-
public override string ToString()
23-
{
24-
return Name;
25-
}
26-
}
22+
public override string ToString()
23+
{
24+
return Name;
25+
}
2726
}
Lines changed: 54 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,58 @@
11
using FluentAssertions;
22

3-
namespace MaybeSharp.UnitTests
3+
namespace MaybeSharp.UnitTests;
4+
5+
class MapSentry<T>
6+
where T : class
47
{
5-
class MapSentry<T>
6-
where T : class
7-
{
8-
public bool JustCalled { get; private set; }
9-
public bool NothingCalled { get; private set; }
10-
public T JustObject { get; private set; }
11-
12-
public T JustActionDegenerate(T obj)
13-
{
14-
JustObject = obj;
15-
JustCalled = true;
16-
return obj;
17-
}
18-
19-
public IMaybe<T> JustAction(T obj)
20-
{
21-
return Maybe.Of(JustActionDegenerate(obj));
22-
}
23-
24-
public void VerifyJustCalled(T obj)
25-
{
26-
JustCalled.Should().BeTrue();
27-
JustObject.Should().BeSameAs(obj);
28-
NothingCalled.Should().BeFalse();
29-
}
30-
31-
public void VerifyJustNotCalled()
32-
{
33-
JustCalled.Should().BeFalse();
34-
JustObject.Should().BeNull();
35-
}
36-
37-
public T NothingActionDegenerate()
38-
{
39-
NothingCalled = true;
40-
return null;
41-
}
42-
43-
public IMaybe<T> NothingAction()
44-
{
45-
return Maybe.Of(NothingActionDegenerate());
46-
}
47-
48-
public void VerifyNothingCalled()
49-
{
50-
VerifyJustNotCalled();
51-
NothingCalled.Should().BeTrue();
52-
}
53-
54-
public void VerifyNothingNotCalled()
55-
{
56-
NothingCalled.Should().BeFalse();
57-
}
58-
}
8+
private bool JustCalled { get; set; }
9+
private bool NothingCalled { get; set; }
10+
private T? JustObject { get; set; }
11+
12+
public T? JustActionDegenerate(T? obj)
13+
{
14+
JustObject = obj;
15+
JustCalled = true;
16+
return obj;
17+
}
18+
19+
public IMaybe<T> JustAction(T? obj)
20+
{
21+
return Maybe.Of(JustActionDegenerate(obj));
22+
}
23+
24+
public void VerifyJustCalled(T obj)
25+
{
26+
JustCalled.Should().BeTrue();
27+
JustObject.Should().BeSameAs(obj);
28+
NothingCalled.Should().BeFalse();
29+
}
30+
31+
public void VerifyJustNotCalled()
32+
{
33+
JustCalled.Should().BeFalse();
34+
JustObject.Should().BeNull();
35+
}
36+
37+
public T? NothingActionDegenerate()
38+
{
39+
NothingCalled = true;
40+
return null;
41+
}
42+
43+
public IMaybe<T> NothingAction()
44+
{
45+
return Maybe.Of(NothingActionDegenerate());
46+
}
47+
48+
public void VerifyNothingCalled()
49+
{
50+
VerifyJustNotCalled();
51+
NothingCalled.Should().BeTrue();
52+
}
53+
54+
public void VerifyNothingNotCalled()
55+
{
56+
NothingCalled.Should().BeFalse();
57+
}
5958
}
Lines changed: 105 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -1,111 +1,110 @@
11
using FluentAssertions;
22
using NUnit.Framework;
33

4-
namespace MaybeSharp.UnitTests
4+
namespace MaybeSharp.UnitTests;
5+
6+
[TestFixture]
7+
public class MaybeBindTest
58
{
6-
[TestFixture]
7-
public class MaybeBindTest
8-
{
9-
[Test]
10-
public void MaybeOfNullValue__Bind__DoesNotCallBinding()
11-
{
12-
var sentry = false;
13-
var maybe = Maybe.Of<DemoType>(null);
14-
15-
var result = maybe.Bind(d => {
16-
sentry = true;
17-
return Maybe.Of(d);
18-
});
19-
20-
sentry.Should().BeFalse();
21-
result.Should().NotBeNull();
22-
result.Extract().Should().BeNull();
23-
}
24-
25-
[Test]
26-
public void MaybeOfObject__Bind__CallsBinding()
27-
{
28-
var sentry = false;
29-
var obj = new DemoType();
30-
var maybe = Maybe.Of(obj);
31-
32-
var result = maybe.Bind(d => {
33-
sentry = true;
34-
return Maybe.Of(d);
35-
});
36-
37-
sentry.Should().BeTrue();
38-
result.Should().NotBeNull();
39-
result.Extract().Should().BeSameAs(obj);
40-
}
41-
42-
[Test]
43-
public void MaybeOfObject__BindWithNewMaybe__ReturnsNewMaybe()
44-
{
45-
var maybe = Maybe.Of(new DemoType());
46-
var newMaybe = Maybe.Of(new DemoType());
47-
48-
var result = maybe.Bind(d => newMaybe);
49-
50-
result.Should().NotBeNull();
51-
result.Should().BeSameAs(newMaybe);
52-
}
53-
54-
[Test]
55-
public void MaybeOfNullValue__DegenerateBind__DoesNotCallBinding()
56-
{
57-
var sentry = false;
58-
var maybe = Maybe.Of<DemoType>(null);
59-
60-
var result = maybe.Bind(d => {
61-
sentry = true;
62-
return d;
63-
});
64-
65-
sentry.Should().BeFalse();
66-
result.Should().NotBeNull();
67-
result.Extract().Should().BeNull();
68-
}
69-
70-
[Test]
71-
public void MaybeOfObject__DegenerateBind__CallsBinding()
72-
{
73-
var sentry = false;
74-
var obj = new DemoType();
75-
var maybe = Maybe.Of(obj);
76-
77-
var result = maybe.Bind(d => {
78-
sentry = true;
79-
return d;
80-
});
81-
82-
sentry.Should().BeTrue();
83-
result.Should().NotBeNull();
84-
result.Extract().Should().BeSameAs(obj);
85-
}
86-
87-
[Test]
88-
public void Bind__OnTargetProperty__JustResult()
89-
{
90-
var obj = new DemoType();
91-
var maybe = Maybe.Of(obj);
92-
93-
var result = maybe.Bind(x => x.Name);
94-
95-
result.Should().NotBeNull();
96-
result.Extract().Should().BeSameAs(obj.Name);
97-
}
98-
99-
[Test]
100-
public void Bind__OnTargetPropertyWithNullValue__NothingResult()
101-
{
102-
var obj = new DemoType();
103-
var maybe = Maybe.Of(obj);
104-
105-
var result = maybe.Bind(x => x.Optional);
106-
107-
result.Should().NotBeNull();
108-
result.Extract().Should().BeNull();
109-
}
110-
}
9+
[Test]
10+
public void MaybeOfNullValue__Bind__DoesNotCallBinding()
11+
{
12+
var sentry = false;
13+
var maybe = Maybe.Of<DemoType>(null);
14+
15+
var result = maybe.Bind(d => {
16+
sentry = true;
17+
return Maybe.Of(d);
18+
});
19+
20+
sentry.Should().BeFalse();
21+
result.Should().NotBeNull();
22+
result.Extract().Should().BeNull();
23+
}
24+
25+
[Test]
26+
public void MaybeOfObject__Bind__CallsBinding()
27+
{
28+
var sentry = false;
29+
var obj = new DemoType();
30+
var maybe = Maybe.Of(obj);
31+
32+
var result = maybe.Bind(d => {
33+
sentry = true;
34+
return Maybe.Of(d);
35+
});
36+
37+
sentry.Should().BeTrue();
38+
result.Should().NotBeNull();
39+
result.Extract().Should().BeSameAs(obj);
40+
}
41+
42+
[Test]
43+
public void MaybeOfObject__BindWithNewMaybe__ReturnsNewMaybe()
44+
{
45+
var maybe = Maybe.Of(new DemoType());
46+
var newMaybe = Maybe.Of(new DemoType());
47+
48+
var result = maybe.Bind(d => newMaybe);
49+
50+
result.Should().NotBeNull();
51+
result.Should().BeSameAs(newMaybe);
52+
}
53+
54+
[Test]
55+
public void MaybeOfNullValue__DegenerateBind__DoesNotCallBinding()
56+
{
57+
var sentry = false;
58+
var maybe = Maybe.Of<DemoType>(null);
59+
60+
var result = maybe.Bind(d => {
61+
sentry = true;
62+
return d;
63+
});
64+
65+
sentry.Should().BeFalse();
66+
result.Should().NotBeNull();
67+
result.Extract().Should().BeNull();
68+
}
69+
70+
[Test]
71+
public void MaybeOfObject__DegenerateBind__CallsBinding()
72+
{
73+
var sentry = false;
74+
var obj = new DemoType();
75+
var maybe = Maybe.Of(obj);
76+
77+
var result = maybe.Bind(d => {
78+
sentry = true;
79+
return d;
80+
});
81+
82+
sentry.Should().BeTrue();
83+
result.Should().NotBeNull();
84+
result.Extract().Should().BeSameAs(obj);
85+
}
86+
87+
[Test]
88+
public void Bind__OnTargetProperty__JustResult()
89+
{
90+
var obj = new DemoType();
91+
var maybe = Maybe.Of(obj);
92+
93+
var result = maybe.Bind(x => x.Name);
94+
95+
result.Should().NotBeNull();
96+
result.Extract().Should().BeSameAs(obj.Name);
97+
}
98+
99+
[Test]
100+
public void Bind__OnTargetPropertyWithNullValue__NothingResult()
101+
{
102+
var obj = new DemoType();
103+
var maybe = Maybe.Of(obj);
104+
105+
var result = maybe.Bind(x => x.Optional);
106+
107+
result.Should().NotBeNull();
108+
result.Extract().Should().BeNull();
109+
}
111110
}

0 commit comments

Comments
 (0)