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 }