1 module fluentasserts.core.operations.lessOrEqualTo; 2 3 import fluentasserts.core.results; 4 import fluentasserts.core.evaluation; 5 6 import fluentasserts.core.lifecycle; 7 8 import std.conv; 9 import std.datetime; 10 11 version(unittest) { 12 import fluentasserts.core.expect; 13 } 14 15 /// 16 IResult[] lessOrEqualTo(T)(ref Evaluation evaluation) @safe nothrow { 17 evaluation.message.addText("."); 18 19 T expectedValue; 20 T currentValue; 21 22 try { 23 expectedValue = evaluation.expectedValue.strValue.to!T; 24 currentValue = evaluation.currentValue.strValue.to!T; 25 } catch(Exception e) { 26 return [ new MessageResult("Can't convert the values to " ~ T.stringof) ]; 27 } 28 29 auto result = currentValue <= expectedValue; 30 31 if(evaluation.isNegated) { 32 result = !result; 33 } 34 35 if(result) { 36 return []; 37 } 38 39 evaluation.message.addText(" "); 40 evaluation.message.addValue(evaluation.currentValue.niceValue); 41 42 IResult[] results = []; 43 44 if(evaluation.isNegated) { 45 evaluation.message.addText(" is less or equal to "); 46 results ~= new ExpectedActualResult("greater than " ~ evaluation.expectedValue.niceValue, evaluation.currentValue.niceValue); 47 } else { 48 evaluation.message.addText(" is greater than "); 49 results ~= new ExpectedActualResult("less or equal to " ~ evaluation.expectedValue.niceValue, evaluation.currentValue.niceValue); 50 } 51 52 evaluation.message.addValue(evaluation.expectedValue.niceValue); 53 evaluation.message.addText("."); 54 55 return results; 56 }