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, }, }