--- tests/check_money.3.c 2015-08-03 04:31:25.000000000 +0900 +++ tests/check_money.6.c 2015-08-03 04:31:25.000000000 +0900 @@ -1,45 +1,74 @@ #include #include #include "../src/money.h" START_TEST(test_money_create) { Money *m; m = money_create(5, "USD"); ck_assert_int_eq(money_amount(m), 5); ck_assert_str_eq(money_currency(m), "USD"); money_free(m); } END_TEST +START_TEST(test_money_create_neg) +{ + Money *m = money_create(-1, "USD"); + + ck_assert_msg(m == NULL, + "NULL should be returned on attempt to create with " + "a negative amount"); +} +END_TEST + +START_TEST(test_money_create_zero) +{ + Money *m = money_create(0, "USD"); + + if (money_amount(m) != 0) + { + ck_abort_msg("Zero is a valid amount of money"); + } +} +END_TEST + Suite * money_suite(void) { Suite *s; TCase *tc_core; + TCase *tc_limits; s = suite_create("Money"); /* Core test case */ tc_core = tcase_create("Core"); tcase_add_test(tc_core, test_money_create); suite_add_tcase(s, tc_core); + /* Limits test case */ + tc_limits = tcase_create("Limits"); + + tcase_add_test(tc_limits, test_money_create_neg); + tcase_add_test(tc_limits, test_money_create_zero); + suite_add_tcase(s, tc_limits); + return s; } int main(void) { int number_failed; Suite *s; SRunner *sr; s = money_suite(); sr = srunner_create(s); srunner_run_all(sr, CK_NORMAL); number_failed = srunner_ntests_failed(sr); srunner_free(sr); return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE; }