1 module tests.pass.normal;
2 
3 import unit_threaded;
4 
5 
6 class IntEqualTest: TestCase {
7     override void test() {
8         1.shouldNotEqual(5);
9         5.shouldNotEqual(1);
10         3.shouldEqual(3);
11         2.shouldEqual(2);
12     }
13 }
14 
15 class DoubleEqualTest: TestCase {
16     override void test() {
17         shouldNotEqual(1.0, 2.0);
18         (2.0).shouldEqual(2.0);
19         (2.0).shouldEqual(2.0);
20     }
21 }
22 
23 void testEqual() {
24     1.shouldEqual(1);
25     checkEqual(1.0, 1.0);
26     "foo".shouldEqual("foo");
27 }
28 
29 void testNotEqual() {
30     3.shouldNotEqual(4);
31     checkNotEqual(5.0, 6.0);
32     "foo".shouldNotEqual("bar");
33 }
34 
35 
36 private class MyException: Exception {
37     this() {
38         super("MyException");
39     }
40 }
41 
42 void testThrown() {
43     throwFunc.shouldThrow!MyException;
44 }
45 
46 void testNotThrown() {
47     nothrowFunc.shouldNotThrow;
48 }
49 
50 private void throwFunc() {
51     throw new MyException;
52 }
53 
54 private void nothrowFunc() nothrow {
55     {}
56 }
57 
58 @Name("first_unit_test")
59 unittest {
60     writelnUt("First unit test block\n");
61     assert(true); //unit test block that always passes
62 }
63 
64 @Name("second_unit_test")
65 unittest {
66     writelnUt("Second unit test block\n");
67     assert(true); //unit test block that always passes
68 }
69 
70 
71 private class MyClass {
72     int i;
73     double d;
74     this(int i, double d) {
75         this.i = i;
76         this.d = d;
77     }
78     override string toString() const {
79         import std.conv;
80         return text("MyClass(", i, ", ", d, ")");
81     }
82 }
83 
84 void testEqualClass() {
85     const foo = new MyClass(2, 3.0);
86     const bar = new MyClass(2, 3.0);
87     const baz = new MyClass(3, 3.0);
88 
89     foo.shouldEqual(bar);
90     bar.shouldEqual(foo);
91     foo.shouldNotEqual(baz);
92     bar.shouldNotEqual(baz);
93     baz.shouldNotEqual(foo);
94     baz.shouldNotEqual(bar);
95 }
96 
97 
98 private struct Pair {
99     string s;
100     int i;
101 }
102 
103 void testPairAA() {
104     auto map = [Pair("foo", 5): 105];
105     [Pair("foo", 5): 105].shouldEqual(map);
106     map.dup.shouldEqual(map);
107     auto pair = Pair("foo", 5);
108     auto othermap = [pair: 105];
109     map.shouldEqual(othermap);
110 }