#define TWO_HOURS 7200
#define TWO_HOURS_FIFTEEN_MINUTES 8100
+#define FOUR_HOURS_FIFTY_FIVE_MINITUES 17100
+#define FIVE_HOURS 18000
#define FIFTEEN_MINUTES 900
+#define THIRTY_MINUTES 1800
int get_break_time(long worktime)
{
+ if (worktime > FIVE_HOURS)
+ return THIRTY_MINUTES;
+
+ if (worktime > FOUR_HOURS_FIFTY_FIVE_MINITUES)
+ return worktime - FOUR_HOURS_FIFTY_FIVE_MINITUES + FIFTEEN_MINUTES;
+
if (worktime > TWO_HOURS_FIFTEEN_MINUTES)
return FIFTEEN_MINUTES;
assert_int_equal(breaktime, 900);
}
+void four_hours_and_fourty_five_minutes_fifteen_minute_break()
+{
+ long worktime = 17100;
+
+ int breaktime = get_break_time(worktime);
+
+ assert_int_equal(breaktime, 900);
+}
+
+void four_hours_and_fourty_six_minutes_sixteen_minute_break()
+{
+ long worktime = 17160;
+
+ int breaktime = get_break_time(worktime);
+
+ assert_int_equal(breaktime, 960);
+}
+
+void four_hours_and_fourty_seven_minutes_seventeen_minute_break()
+{
+ long worktime = 17220;
+
+ int breaktime = get_break_time(worktime);
+
+ assert_int_equal(breaktime, 1020);
+}
+
+void five_hours_minutes_thirty_minute_break()
+{
+ long worktime = 18000;
+
+ int breaktime = get_break_time(worktime);
+
+ assert_int_equal(breaktime, 1800);
+}
+
+void five_and_one_minute_hours_minutes_thirty_minute_break()
+{
+ long worktime = 18060;
+
+ int breaktime = get_break_time(worktime);
+
+ assert_int_equal(breaktime, 1800);
+}
+
int main()
{
const struct CMUnitTest tests[] = {
cmocka_unit_test(two_hours_and_one_minutes_one_minute_break),
cmocka_unit_test(two_hours_and_two_minutes_two_minute_break),
cmocka_unit_test(two_hours_and_fifteen_minutes_fifteen_minute_break),
- cmocka_unit_test(two_hours_and_fifteen_one_minutes_fifteen_minute_break)
+ cmocka_unit_test(two_hours_and_fifteen_one_minutes_fifteen_minute_break),
+ cmocka_unit_test(four_hours_and_fourty_five_minutes_fifteen_minute_break),
+ cmocka_unit_test(four_hours_and_fourty_six_minutes_sixteen_minute_break),
+ cmocka_unit_test(four_hours_and_fourty_seven_minutes_seventeen_minute_break),
+ cmocka_unit_test(five_hours_minutes_thirty_minute_break),
+ cmocka_unit_test(five_and_one_minute_hours_minutes_thirty_minute_break),
};
return cmocka_run_group_tests(tests, NULL, NULL);