check_money.c 1.42 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include "money.h"

#include <kdevelop/veritas/checkwrapper.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;
}

68
CHECK_VERITAS_MAIN_( money_suite() )