1
+ using NUnit . Framework ;
2
+ using Here . Maybes ;
3
+ using Here . Results ;
4
+ using Here . Tests . Results ;
5
+
6
+ namespace Here . Tests . Maybes
7
+ {
8
+ /// <summary>
9
+ /// Tests for <see cref="Maybe{T}"/> conversions.
10
+ /// </summary>
11
+ [ TestFixture ]
12
+ internal class MaybeConversionsTests : ResultTestsBase
13
+ {
14
+ [ Test ]
15
+ public void MaybeToResult ( )
16
+ {
17
+ // Maybe has value
18
+ // Explicit conversion
19
+ var maybeInt = Maybe < int > . Some ( 42 ) ;
20
+ Result result = maybeInt . ToResult ( ) ;
21
+ CheckResultOk ( result ) ;
22
+
23
+ result = maybeInt . ToResult ( "Empty maybeInt" ) ;
24
+ CheckResultOk ( result ) ;
25
+
26
+ // Implicit conversion
27
+ result = maybeInt ;
28
+ CheckResultOk ( result ) ;
29
+
30
+ // Empty Maybe
31
+ // Explicit conversion
32
+ var emptyMaybeInt = Maybe < int > . None ;
33
+ result = emptyMaybeInt . ToResult ( ) ;
34
+ CheckResultFail ( result , string . Format ( Maybe < int > . FailedToResultMessage , typeof ( int ) ) ) ;
35
+
36
+ result = emptyMaybeInt . ToResult ( "Empty emptyMaybeInt" ) ;
37
+ CheckResultFail ( result , "Empty emptyMaybeInt" ) ;
38
+
39
+ // Implicit conversion
40
+ result = emptyMaybeInt ;
41
+ CheckResultFail ( result , string . Format ( Maybe < int > . FailedToResultMessage , typeof ( int ) ) ) ;
42
+ }
43
+
44
+ [ Test ]
45
+ public void MaybeToValueResult ( )
46
+ {
47
+ // Maybe has value
48
+ // Explicit conversion
49
+ var maybeInt = Maybe < int > . Some ( 42 ) ;
50
+ Result < int > result = maybeInt . ToValueResult ( ) ;
51
+ CheckResultOk ( result , 42 ) ;
52
+
53
+ result = maybeInt . ToValueResult ( "Empty maybeInt" ) ;
54
+ CheckResultOk ( result , 42 ) ;
55
+
56
+ // Implicit conversion
57
+ result = maybeInt ;
58
+ CheckResultOk ( result , 42 ) ;
59
+
60
+ // Empty Maybe
61
+ // Explicit conversion
62
+ var emptyMaybeInt = Maybe < int > . None ;
63
+ result = emptyMaybeInt . ToValueResult ( ) ;
64
+ CheckResultFail ( result , string . Format ( Maybe < int > . FailedToResultMessage , typeof ( int ) ) ) ;
65
+
66
+ result = emptyMaybeInt . ToValueResult ( "Empty emptyMaybeInt" ) ;
67
+ CheckResultFail ( result , "Empty emptyMaybeInt" ) ;
68
+
69
+ // Implicit conversion
70
+ result = emptyMaybeInt ;
71
+ CheckResultFail ( result , string . Format ( Maybe < int > . FailedToResultMessage , typeof ( int ) ) ) ;
72
+ }
73
+
74
+ [ Test ]
75
+ public void MaybeToCustomResult ( )
76
+ {
77
+ // Maybe has value
78
+ var customErrorObject = new CustomErrorTest { ErrorCode = - 32 } ;
79
+ var maybeInt = Maybe < int > . Some ( 42 ) ;
80
+ CustomResult < CustomErrorTest > result = maybeInt . ToCustomResult ( customErrorObject ) ;
81
+ CheckResultOk ( result ) ;
82
+
83
+ result = maybeInt . ToCustomResult ( customErrorObject , "Empty maybeInt" ) ;
84
+ CheckResultOk ( result ) ;
85
+
86
+ result = maybeInt . ToCustomResult ( ( ) => customErrorObject ) ;
87
+ CheckResultOk ( result ) ;
88
+
89
+ result = maybeInt . ToCustomResult ( ( ) => customErrorObject , "Empty maybeInt" ) ;
90
+ CheckResultOk ( result ) ;
91
+
92
+ // Empty Maybe
93
+ var emptyMaybeInt = Maybe < int > . None ;
94
+ result = emptyMaybeInt . ToCustomResult ( customErrorObject ) ;
95
+ CheckResultFail ( result , string . Format ( Maybe < int > . FailedToResultMessage , typeof ( int ) ) , customErrorObject ) ;
96
+
97
+ result = emptyMaybeInt . ToCustomResult ( customErrorObject , "Empty emptyMaybeInt" ) ;
98
+ CheckResultFail ( result , "Empty emptyMaybeInt" , customErrorObject ) ;
99
+
100
+ result = emptyMaybeInt . ToCustomResult ( ( ) => customErrorObject ) ;
101
+ CheckResultFail ( result , string . Format ( Maybe < int > . FailedToResultMessage , typeof ( int ) ) , customErrorObject ) ;
102
+
103
+ result = emptyMaybeInt . ToCustomResult ( ( ) => customErrorObject , "Empty emptyMaybeInt" ) ;
104
+ CheckResultFail ( result , "Empty emptyMaybeInt" , customErrorObject ) ;
105
+ }
106
+
107
+ [ Test ]
108
+ public void MaybeToCustomValueResult ( )
109
+ {
110
+ // Maybe has value
111
+ var customErrorObject = new CustomErrorTest { ErrorCode = - 32 } ;
112
+ var maybeInt = Maybe < int > . Some ( 42 ) ;
113
+ Result < int , CustomErrorTest > result = maybeInt . ToCustomValueResult ( customErrorObject ) ;
114
+ CheckResultOk ( result , 42 ) ;
115
+
116
+ result = maybeInt . ToCustomValueResult ( customErrorObject , "Empty maybeInt" ) ;
117
+ CheckResultOk ( result , 42 ) ;
118
+
119
+ result = maybeInt . ToCustomValueResult ( ( ) => customErrorObject ) ;
120
+ CheckResultOk ( result , 42 ) ;
121
+
122
+ result = maybeInt . ToCustomValueResult ( ( ) => customErrorObject , "Empty maybeInt" ) ;
123
+ CheckResultOk ( result , 42 ) ;
124
+
125
+ // Empty Maybe
126
+ var emptyMaybeInt = Maybe < int > . None ;
127
+ result = emptyMaybeInt . ToCustomValueResult ( customErrorObject ) ;
128
+ CheckResultFail ( result , string . Format ( Maybe < int > . FailedToResultMessage , typeof ( int ) ) , customErrorObject ) ;
129
+
130
+ result = emptyMaybeInt . ToCustomValueResult ( customErrorObject , "Empty emptyMaybeInt" ) ;
131
+ CheckResultFail ( result , "Empty emptyMaybeInt" , customErrorObject ) ;
132
+
133
+ result = emptyMaybeInt . ToCustomValueResult ( ( ) => customErrorObject ) ;
134
+ CheckResultFail ( result , string . Format ( Maybe < int > . FailedToResultMessage , typeof ( int ) ) , customErrorObject ) ;
135
+
136
+ result = emptyMaybeInt . ToCustomValueResult ( ( ) => customErrorObject , "Empty emptyMaybeInt" ) ;
137
+ CheckResultFail ( result , "Empty emptyMaybeInt" , customErrorObject ) ;
138
+ }
139
+ }
140
+ }
0 commit comments