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