1
1
using System ;
2
+ using System . Linq ;
2
3
3
4
using NUnit . Framework ;
4
5
5
6
namespace CodeJam
6
7
{
7
- [ TestFixture ( Category = "Disposable" ) ]
8
+ [ TestFixture ( Category = "Disposable" ) ]
8
9
public static class DisposableTests
9
10
{
10
11
[ Test ]
11
12
public static void TestDisposable ( )
12
13
{
13
14
var value = 0 ;
14
15
var disposable = Disposable . Create ( ( ) => value ++ ) ;
15
-
16
16
// Fails if Disposable.Create returns struct
17
17
var disposable2 = disposable ;
18
18
19
19
Assert . That ( value , Is . EqualTo ( 0 ) ) ;
20
+
20
21
disposable . Dispose ( ) ;
21
22
Assert . That ( value , Is . EqualTo ( 1 ) ) ;
23
+
22
24
disposable . Dispose ( ) ;
23
25
Assert . That ( value , Is . EqualTo ( 1 ) ) ;
24
26
@@ -37,14 +39,17 @@ public static void TestDisposableThrow()
37
39
if ( value != 3 )
38
40
throw new InvalidOperationException ( ) ;
39
41
} ) ;
40
-
41
42
Assert . That ( value , Is . EqualTo ( 0 ) ) ;
43
+
42
44
Assert . Throws < InvalidOperationException > ( ( ) => disposable . Dispose ( ) ) ;
43
45
Assert . That ( value , Is . EqualTo ( 1 ) ) ;
46
+
44
47
Assert . Throws < InvalidOperationException > ( ( ) => disposable . Dispose ( ) ) ;
45
48
Assert . That ( value , Is . EqualTo ( 2 ) ) ;
49
+
46
50
Assert . DoesNotThrow ( ( ) => disposable . Dispose ( ) ) ;
47
51
Assert . That ( value , Is . EqualTo ( 3 ) ) ;
52
+
48
53
Assert . DoesNotThrow ( ( ) => disposable . Dispose ( ) ) ;
49
54
Assert . That ( value , Is . EqualTo ( 3 ) ) ;
50
55
}
@@ -68,26 +73,33 @@ public static void TestDisposableMerge()
68
73
{
69
74
value3 ++ ;
70
75
if ( value3 != 3 )
71
- throw new InvalidOperationException ( ) ;
76
+ throw new InvalidOperationException ( "Test message" ) ;
72
77
} ) ;
73
78
74
79
var disposable = Disposable . Merge ( disposable1 , disposable2 , disposable3 ) ;
75
-
76
80
Assert . That ( value1 , Is . EqualTo ( 0 ) ) ;
77
81
Assert . That ( value2 , Is . EqualTo ( 0 ) ) ;
78
82
Assert . That ( value3 , Is . EqualTo ( 0 ) ) ;
79
- Assert . Throws < AggregateException > ( ( ) => disposable . Dispose ( ) ) ;
83
+
84
+ var ex = Assert . Throws < AggregateException > ( ( ) => disposable . Dispose ( ) ) ;
85
+ Assert . That ( ex . InnerExceptions . Count , Is . EqualTo ( 1 ) ) ;
86
+ Assert . That (
87
+ ex . InnerExceptions . Cast < InvalidOperationException > ( ) . Single ( ) . Message ,
88
+ Is . EqualTo ( "Test message" ) ) ;
80
89
Assert . That ( value1 , Is . EqualTo ( 2 ) ) ;
81
90
Assert . That ( value2 , Is . EqualTo ( 1 ) ) ;
82
91
Assert . That ( value3 , Is . EqualTo ( 1 ) ) ;
92
+
83
93
Assert . Throws < AggregateException > ( ( ) => disposable . Dispose ( ) ) ;
84
94
Assert . That ( value1 , Is . EqualTo ( 2 ) ) ;
85
95
Assert . That ( value2 , Is . EqualTo ( 1 ) ) ;
86
96
Assert . That ( value3 , Is . EqualTo ( 2 ) ) ;
97
+
87
98
Assert . DoesNotThrow ( ( ) => disposable . Dispose ( ) ) ;
88
99
Assert . That ( value1 , Is . EqualTo ( 2 ) ) ;
89
100
Assert . That ( value2 , Is . EqualTo ( 1 ) ) ;
90
101
Assert . That ( value3 , Is . EqualTo ( 3 ) ) ;
102
+
91
103
Assert . DoesNotThrow ( ( ) => disposable . Dispose ( ) ) ;
92
104
Assert . That ( value1 , Is . EqualTo ( 2 ) ) ;
93
105
Assert . That ( value2 , Is . EqualTo ( 1 ) ) ;
0 commit comments