fluentasserts.core.objects 80/80(100%) line coverage

      
10
20
30
40
50
60
70
80
90
100
110
120
130
143
150
160
172
182
190
200
212
222
230
240
252
262
270
280
290
300
310
321
330
342
352
362
370
380
392
402
410
420
432
442
452
460
473
482
490
500
512
522
532
540
550
560
570
580
590
600
610
620
631
641
651
660
672
682
690
702
712
720
732
742
750
760
772
782
792
800
812
822
830
840
852
862
872
880
890
900
910
920
930
940
950
961
971
981
990
1002
1012
1020
1032
1040
1052
1062
1070
1080
1092
1102
1112
1120
1132
1142
1150
1160
1172
1182
1192
1200
1210
1220
1230
1240
1250
1260
1271
1280
1290
1301
1310
1322
1330
1341
1350
1360
1372
1380
1392
1401
1410
1420
1432
1440
1450
1460
1470
1480
1490
1500
1513
1523
1530
1540
1550
1561
1570
1582
1592
1600
1612
1622
1630
1640
1652
1660
1672
1682
1690
1700
1712
1720
1730
1740
1750
1760
1771
1780
1792
1802
1810
1820
1832
1840
1853
1862
1870
1880
1892
1900
module fluentasserts.core.objects; public import fluentasserts.core.base; import fluentasserts.core.results; import std.string; import std.stdio; import std.traits; import std.conv; /// When there is a lazy object that throws an it should throw that exception unittest { Object someLazyObject() { throw new Exception("This is it."); } ({ someLazyObject.should.not.beNull; }).should.throwAnyException.withMessage("This is it."); ({ someLazyObject.should.be.instanceOf!Object; }).should.throwAnyException.withMessage("This is it."); ({ someLazyObject.should.equal(new Object); }).should.throwAnyException.withMessage("This is it."); } /// object beNull unittest { Object o = null; ({ o.should.beNull; (new Object).should.not.beNull; }).should.not.throwAnyException; auto msg = ({ o.should.not.beNull; }).should.throwException!TestException.msg; msg.split("\n")[0].should.equal("o should not be null."); msg.split("\n")[2].strip.should.equal("Expected:not null"); msg.split("\n")[3].strip.should.equal("Actual:object.Object"); msg = ({ (new Object).should.beNull; }).should.throwException!TestException.msg; msg.split("\n")[0].should.equal("(new Object) should be null."); msg.split("\n")[2].strip.should.equal("Expected:null"); msg.split("\n")[3].strip.strip.should.equal("Actual:object.Object"); } /// object instanceOf unittest { class BaseClass { } class ExtendedClass : BaseClass { } class SomeClass { } class OtherClass { } auto someObject = new SomeClass; auto otherObject = new OtherClass; auto extendedObject = new ExtendedClass; someObject.should.be.instanceOf!SomeClass; extendedObject.should.be.instanceOf!BaseClass; someObject.should.not.be.instanceOf!OtherClass; someObject.should.not.be.instanceOf!BaseClass; auto msg = ({ otherObject.should.be.instanceOf!SomeClass; }).should.throwException!TestException.msg; msg.split("\n")[0].should.startWith(`otherObject should be instance of "fluentasserts.core.objects.__unittest_L57_C1.SomeClass".`); msg.split("\n")[2].strip.should.equal("Expected:typeof fluentasserts.core.objects.__unittest_L57_C1.SomeClass"); msg.split("\n")[3].strip.should.equal("Actual:typeof fluentasserts.core.objects.__unittest_L57_C1.OtherClass"); msg = ({ otherObject.should.not.be.instanceOf!OtherClass; }).should.throwException!TestException.msg; msg.split("\n")[0].should.startWith(`otherObject should not be instance of "fluentasserts.core.objects.__unittest_L57_C1.OtherClass"`); msg.split("\n")[2].strip.should.equal("Expected:not typeof fluentasserts.core.objects.__unittest_L57_C1.OtherClass"); msg.split("\n")[3].strip.should.equal("Actual:typeof fluentasserts.core.objects.__unittest_L57_C1.OtherClass"); } /// object instanceOf interface unittest { interface MyInterface { } class BaseClass : MyInterface { } class OtherClass { } auto someObject = new BaseClass; MyInterface someInterface = new BaseClass; auto otherObject = new OtherClass; someInterface.should.be.instanceOf!MyInterface; someInterface.should.not.be.instanceOf!BaseClass; someObject.should.be.instanceOf!MyInterface; auto msg = ({ otherObject.should.be.instanceOf!MyInterface; }).should.throwException!TestException.msg; msg.split("\n")[0].should.startWith(`otherObject should be instance of "fluentasserts.core.objects.__unittest_L91_C1.MyInterface".`); msg.split("\n")[2].strip.should.equal("Expected:typeof fluentasserts.core.objects.__unittest_L91_C1.MyInterface"); msg.split("\n")[3].strip.should.equal("Actual:typeof fluentasserts.core.objects.__unittest_L91_C1.OtherClass"); msg = ({ someObject.should.not.be.instanceOf!MyInterface; }).should.throwException!TestException.msg; msg.split("\n")[0].should.contain(`someObject should not be instance of "fluentasserts.core.objects.__unittest_L91_C1.MyInterface".`); msg.split("\n")[2].strip.should.equal("Expected:not typeof fluentasserts.core.objects.__unittest_L91_C1.MyInterface"); msg.split("\n")[3].strip.should.equal("Actual:typeof fluentasserts.core.objects.__unittest_L91_C1.BaseClass"); } /// should throw exceptions for delegates that return basic types unittest { class SomeClass { } SomeClass value() { throw new Exception("not implemented"); } SomeClass noException() { return null; } value().should.throwAnyException.withMessage.equal("not implemented"); bool thrown; try { noException.should.throwAnyException; } catch (TestException e) { e.msg.should.startWith("noException should throw any exception. No exception was thrown."); thrown = true; } thrown.should.equal(true); } /// object equal unittest { class TestEqual { private int value; this(int value) { this.value = value; } } auto instance = new TestEqual(1); instance.should.equal(instance); instance.should.not.equal(new TestEqual(1)); auto msg = ({ instance.should.not.equal(instance); }).should.throwException!TestException.msg; msg.should.startWith("instance should not equal TestEqual"); msg = ({ instance.should.equal(new TestEqual(1)); }).should.throwException!TestException.msg; msg.should.startWith("instance should equal TestEqual"); } /// null object comparison unittest { Object nullObject; auto msg = ({ nullObject.should.equal(new Object); }).should.throwException!TestException.msg; msg.should.startWith("nullObject should equal Object("); msg = ({ (new Object).should.equal(null); }).should.throwException!TestException.msg; msg.should.startWith("(new Object) should equal null."); }