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 }