summaryrefslogtreecommitdiff
path: root/doc/example/tests/check_money.7.c
diff options
context:
space:
mode:
Diffstat (limited to 'doc/example/tests/check_money.7.c')
-rw-r--r--doc/example/tests/check_money.7.c75
1 files changed, 75 insertions, 0 deletions
diff --git a/doc/example/tests/check_money.7.c b/doc/example/tests/check_money.7.c
new file mode 100644
index 0000000..b935998
--- /dev/null
+++ b/doc/example/tests/check_money.7.c
@@ -0,0 +1,75 @@
+#include <stdlib.h>
+#include <check.h>
+#include "../src/money.h"
+
+Money *five_dollars;
+
+void
+setup (void)
+{
+ five_dollars = money_create (5, "USD");
+}
+
+void
+teardown (void)
+{
+ money_free (five_dollars);
+}
+
+START_TEST (test_money_create)
+{
+ fail_unless (money_amount (five_dollars) == 5,
+ "Amount not set correctly on creation");
+ fail_unless (strcmp (money_currency (five_dollars), "USD") == 0,
+ "Currency not set correctly on creation");
+}
+END_TEST
+
+START_TEST (test_money_create_neg)
+{
+ Money *m = money_create (-1, "USD");
+ fail_unless (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");
+ fail_unless (money_amount (m) == 0,
+ "Zero is a valid amount of money");
+}
+END_TEST
+
+Suite *
+money_suite (void)
+{
+ Suite *s = suite_create ("Money");
+
+ /* Core test case */
+ TCase *tc_core = tcase_create ("Core");
+ tcase_add_checked_fixture (tc_core, setup, teardown);
+ tcase_add_test (tc_core, test_money_create);
+ suite_add_tcase (s, tc_core);
+
+ /* Limits test case */
+ TCase *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 = money_suite ();
+ SRunner *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;
+}