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 }