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 shouldEqual(1.0, 1.0); 26 "foo".shouldEqual("foo"); 27 } 28 29 void testNotEqual() { 30 3.shouldNotEqual(4); 31 shouldNotEqual(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 private class MyClass { 59 int i; 60 double d; 61 this(int i, double d) { 62 this.i = i; 63 this.d = d; 64 } 65 override string toString() const { 66 import std.conv; 67 return text("MyClass(", i, ", ", d, ")"); 68 } 69 } 70 71 void testEqualClass() { 72 const foo = new MyClass(2, 3.0); 73 const bar = new MyClass(2, 3.0); 74 const baz = new MyClass(3, 3.0); 75 76 foo.shouldEqual(bar); 77 bar.shouldEqual(foo); 78 foo.shouldNotEqual(baz); 79 bar.shouldNotEqual(baz); 80 baz.shouldNotEqual(foo); 81 baz.shouldNotEqual(bar); 82 } 83 84 85 private struct Pair { 86 string s; 87 int i; 88 } 89 90 void testPairAA() { 91 auto map = [Pair("foo", 5): 105]; 92 [Pair("foo", 5): 105].shouldEqual(map); 93 map.dup.shouldEqual(map); 94 auto pair = Pair("foo", 5); 95 auto othermap = [pair: 105]; 96 map.shouldEqual(othermap); 97 }