1 module dmocks.interval; 2 3 import dmocks.util; 4 import std.conv; 5 import std.exception; 6 7 package: 8 9 struct Interval 10 { 11 bool Valid() 12 { 13 return Min <= Max; 14 } 15 16 private int _min; 17 private int _max; 18 19 @property int Min() 20 { 21 return _min; 22 } 23 24 @property int Max() 25 { 26 return _max; 27 } 28 29 string toString() const 30 { 31 if (_min == _max) 32 return std.conv.to!string(_min); 33 return std.conv.to!string(_min) ~ ".." ~ std.conv.to!string(_max); 34 } 35 36 this(int min, int max) 37 { 38 this._min = min; 39 this._max = max; 40 enforceValid(); 41 } 42 43 void enforceValid() 44 { 45 enforce!MocksSetupException(Valid, "Interval: invalid interval range: " ~ toString()); 46 } 47 } 48 49 unittest 50 { 51 Interval t = Interval(1, 2); 52 assert(to!string(t) == "1..2"); 53 } 54 55 unittest 56 { 57 Interval t = Interval(1, 1); 58 assert(to!string(t) == "1"); 59 }