1 /** 2 * __ __ __ __ 3 * / / /_/ _____ \ \ /_/ 4 * _____/ / _____ __ ___ __ / ___ \ _____ / / __ __ ___ _____ 5 * / ___ / / ___ \ \ \_/__/ / / / _____/ / ___ \ / / / / / /_/ / / ___ \ 6 * / /__/ / / /__/ \ / _/ / / / /__/ / / _____/ / / / / / _/ / / / /__/ / 7 * \_____/ \_____/\_\ /_/ __ / / \_____/ / /__/ / \_\ /_/ /_/ /_/ _\___ / 8 * / /__/ / \_____/ / /__/ / 9 * \_____/ \_____/ 10 * 11 * A module for assertion functions 12 * 13 * Copyright: (C) Kazuhiro Matsushima 2016. 14 * License: <a href="http://www.boost.org/LICENSE_1_0.txt">Boost License 1.0</a>. 15 * Authors: Kazuhiro Matsushima 16 */ 17 module darjeeling.assertion; 18 19 import std.stdio : writefln; 20 21 package void assertObjEquals(TLhs, TRhs)(TLhs expected, TRhs actual) 22 { 23 if (expected != actual) 24 { 25 writefln("Expect: %s", expected); 26 writefln("Actual: %s", actual); 27 assert(false); 28 } 29 } 30 31 package void assertEquals(T)(T expected, T actual) 32 { 33 if (expected != actual) 34 { 35 writefln("Expect: %s", expected); 36 writefln("Actual: %s", actual); 37 assert(false); 38 } 39 } 40 41 package void assertNotObjEquals(TLhs, TRhs)(TLhs expected, TRhs actual) 42 { 43 if (expected == actual) 44 { 45 writefln("Expect: Not %s", expected); 46 writefln("Actual: %s", actual); 47 assert(false); 48 } 49 } 50 51 package void assertNotEquals(T)(T expected, T actual) 52 { 53 if (expected == actual) 54 { 55 writefln("Expect: Not %s", expected); 56 writefln("Actual: %s", actual); 57 assert(false); 58 } 59 } 60 61 package Throwable trap(TReturn)(TReturn function() f) 62 { 63 try 64 { 65 f(); 66 } 67 catch (Throwable th) 68 { 69 return th; 70 } 71 assert(false); 72 } 73 74 package Throwable trap(TIn, TReturn)(TIn target, TReturn function(TIn) f) 75 { 76 try 77 { 78 f(target); 79 } 80 catch (Throwable th) 81 { 82 return th; 83 } 84 assert(false); 85 }