added time comparison

pull/42/head
RichardHightower 9 years ago
parent ec46b0116d
commit d036ecbbb9

@ -4,6 +4,8 @@
package utils package utils
import "time"
// Comparator will make type assertion (see IntComparator for example), // Comparator will make type assertion (see IntComparator for example),
// which will panic if a or b are not of the asserted type. // which will panic if a or b are not of the asserted type.
// //
@ -51,6 +53,21 @@ func IntComparator(a, b interface{}) int {
} }
} }
// IntComparator provides a basic comparison on int
func TimeComparator(a, b interface{}) int {
aAsserted := a.(time.Time)
bAsserted := b.(time.Time)
switch {
case aAsserted.After(bAsserted) :
return 1
case aAsserted.Before(bAsserted):
return -1
default:
return 0
}
}
// Int8Comparator provides a basic comparison on int8 // Int8Comparator provides a basic comparison on int8
func Int8Comparator(a, b interface{}) int { func Int8Comparator(a, b interface{}) int {
aAsserted := a.(int8) aAsserted := a.(int8)

@ -6,6 +6,7 @@ package utils
import ( import (
"testing" "testing"
"time"
) )
func TestIntComparator(t *testing.T) { func TestIntComparator(t *testing.T) {
@ -30,6 +31,27 @@ func TestIntComparator(t *testing.T) {
} }
} }
func TestTimeComparator(t *testing.T) {
now := time.Now()
// i1,i2,expected
tests := [][]interface{}{
{now, now, 0},
{now.Add(24 * 7 * 2 * time.Hour), now, 1},
{now, now.Add(24 * 7 * 2 * time.Hour), -1},
}
for _, test := range tests {
actual := TimeComparator(test[0], test[1])
expected := test[2]
if actual != expected {
t.Errorf("Got %v expected %v", actual, expected)
}
}
}
func TestStringComparator(t *testing.T) { func TestStringComparator(t *testing.T) {
// s1,s2,expected // s1,s2,expected

Loading…
Cancel
Save