diff options
| author | Paul Buetow <pbuetow@mimecast.com> | 2020-08-07 11:14:35 +0100 |
|---|---|---|
| committer | Paul Buetow <pbuetow@mimecast.com> | 2020-08-07 11:14:35 +0100 |
| commit | deaa4e1c33cd2c1c75f698881918688055abfa51 (patch) | |
| tree | c6a82fec9cc3030f169d0b4441a8c63dd6bd1ea1 /ds | |
| parent | d4c15be3268ee675b0d5853a8ffdb6c4c92585e7 (diff) | |
add quick2
Diffstat (limited to 'ds')
| -rw-r--r-- | ds/elem.go | 12 | ||||
| -rw-r--r-- | ds/integer.go | 23 | ||||
| -rw-r--r-- | ds/integer_test.go | 24 |
3 files changed, 54 insertions, 5 deletions
@@ -1,10 +1,12 @@ package ds type Elem interface { - Equal(a Elem) bool - Lower(a Elem) bool - LowerEqual(a Elem) bool - Higher(a Elem) bool - HigherEqual(a Elem) bool + Equal(e Elem) bool + Lower(e Elem) bool + LowerEqual(e Elem) bool + Higher(e Elem) bool + HigherEqual(e Elem) bool + Compare(e Elem) int + CompareCB(e Elem, lowerCB, higherCB, equalsCB func()) Int() int } diff --git a/ds/integer.go b/ds/integer.go index 4abb349..296e5bb 100644 --- a/ds/integer.go +++ b/ds/integer.go @@ -62,3 +62,26 @@ func (i Integer) Higher(j Elem) bool { func (i Integer) HigherEqual(j Elem) bool { return i.Val >= j.Int() } + +func (i Integer) Compare(j Elem) int { + jVal := j.Int() + switch { + case i.Val < jVal: + return -1 + case i.Val > jVal: + return 1 + } + return 0 +} + +func (i Integer) CompareCB(j Elem, lowerCB, higherCB, equalsCB func()) { + jVal := j.Int() + switch { + case i.Val < jVal: + lowerCB() + case i.Val > jVal: + higherCB() + default: + equalsCB() + } +} diff --git a/ds/integer_test.go b/ds/integer_test.go new file mode 100644 index 0000000..9be55eb --- /dev/null +++ b/ds/integer_test.go @@ -0,0 +1,24 @@ +package ds + +import "testing" + +func TestCompare(t *testing.T) { + i := Integer{1} + j := Integer{10} + res := i.Compare(j) + if res != -1 { + t.Errorf("%v must be lower than %v, but got %v", i, j, res) + } + + res = j.Compare(i) + if res != 1 { + t.Errorf("%v must be higher than %v, but got %v", j, i, res) + } + + i = Integer{2} + j = Integer{2} + res = i.Compare(j) + if res != 0 { + t.Errorf("%v must be equal to %v, but got %v", i, j, res) + } +} |
