exercism/go/clock/cases_test.go

79 lines
2.1 KiB
Go

package clock
// Source: exercism/x-common
// Commit: 269f498 Merge pull request #48 from soniakeys/custom-set-json
// Test creating a new clock with an initial time.
var timeTests = []struct {
h, m int
want string
}{
{8, 0, "08:00"}, // on the hour
{9, 0, "09:00"}, // on the hour
{11, 9, "11:09"}, // past the hour
{11, 19, "11:19"}, // past the hour
{24, 0, "00:00"}, // midnight is zero hours
{25, 0, "01:00"}, // hour rolls over
{1, 60, "02:00"}, // sixty minutes is next hour
{0, 160, "02:40"}, // minutes roll over
{25, 160, "03:40"}, // hour and minutes roll over
{-1, 15, "23:15"}, // negative hour
{-25, 0, "23:00"}, // negative hour rolls over
{1, -40, "00:20"}, // negative minutes
{1, -160, "22:20"}, // negative minutes roll over
{-25, -160, "20:20"}, // negative hour and minutes both roll over
}
// Test adding and subtracting minutes.
var addTests = []struct {
h, m, a int
want string
}{
{10, 0, 3, "10:03"}, // add minutes
{0, 45, 40, "01:25"}, // add to next hour
{10, 0, 61, "11:01"}, // add more than one hour
{23, 59, 2, "00:01"}, // add across midnight
{5, 32, 1500, "06:32"}, // add more than one day (1500 min = 25 hrs)
{0, 45, 160, "03:25"}, // add more than two hours with carry
{10, 3, -3, "10:00"}, // subtract minutes
{10, 3, -30, "09:33"}, // subtract to previous hour
{10, 3, -70, "08:53"}, // subtract more than an hour
{0, 3, -4, "23:59"}, // subtract across midnight
{0, 0, -160, "21:20"}, // subtract more than two hours
{5, 32, -1500, "04:32"}, // subtract more than one day (1500 min = 25 hrs)
{6, 15, -160, "03:35"}, // subtract more than two hours with borrow
}
// Construct two separate clocks, set times, test if they are equal.
type hm struct{ h, m int }
var eqTests = []struct {
c1, c2 hm
want bool
}{
// clocks with same time
{
hm{15, 37},
hm{15, 37},
true,
},
// clocks a minute apart
{
hm{15, 36},
hm{15, 37},
false,
},
// clocks an hour apart
{
hm{14, 37},
hm{15, 37},
false,
},
// clocks set 24 hours apart
{
hm{10, 37},
hm{34, 37},
true,
},
}