1 #include <cgreen/cgreen.h> 2 #include <cgreen/constraint.h> 3 #include <stdlib.h> 4 5 Ensure can_construct_and_destroy_an_want_constraint() { 6 Constraint *any_old_want = want(label, 37); 7 destroy_constraint(any_old_want); 8 } 9 10 Ensure parameter_name_gives_true_if_matching() { 11 Constraint *any_old_want = want(label, 37); 12 assert_equal(is_constraint_parameter(any_old_want, "wrong_label"), 0); 13 assert_equal(is_constraint_parameter(any_old_want, "label"), 1); 14 destroy_constraint(any_old_want); 15 } 16 17 Ensure equal_integers_compare_true_with_a_want_constraint() { 18 Constraint *want_37 = want(label, 37); 19 assert_equal(compare_constraint(want_37, 37), 1); 20 destroy_constraint(want_37); 21 } 22 23 Ensure equal_pointers_compare_true_with_a_want_constraint() { 24 Constraint *want_pointed_at_37 = want(label, (void *)37); 25 assert_equal(compare_constraint(want_pointed_at_37, (void *)37), 1); 26 assert_equal(compare_constraint(want_pointed_at_37, (void *)36), 0); 27 destroy_constraint(want_pointed_at_37); 28 } 29 30 Ensure can_construct_and_destroy_a_want_string_constraint() { 31 Constraint *any_old_string_want = want_string(label, "Hello"); 32 destroy_constraint(any_old_string_want); 33 } 34 35 Ensure can_compare_strings_as_equal() { 36 Constraint *want_hello = want_string(label, "Hello"); 37 assert_equal(compare_constraint(want_hello, "Hello"), 1); 38 assert_equal(compare_constraint(want_hello, "Goodbye"), 0); 39 destroy_constraint(want_hello); 40 } 41 42 Ensure can_compare_null_strings_as_well_as_real_ones() { 43 Constraint *want_hello = want_string(label, "Hello"); 44 assert_equal(compare_constraint(want_hello, NULL), 0); 45 destroy_constraint(want_hello); 46 } 47 48 Ensure can_expect_null_strings_as_well_as_real_ones() { 49 Constraint *want_hello = want_string(label, NULL); 50 assert_equal(compare_constraint(want_hello, NULL), 1); 51 assert_equal(compare_constraint(want_hello, "Hello"), 0); 52 destroy_constraint(want_hello); 53 } 54 55 Ensure equal_doubles_compare_true_with_a_want_double_constraint() { 56 Constraint *want_37 = want_double(label, 37.0); 57 assert_equal(compare_constraint(want_37, box_double(37.0)), 1); 58 destroy_constraint(want_37); 59 } 60 61 Ensure unequal_doubles_compare_false_with_a_want_double_constraint() { 62 Constraint *want_37 = want_double(label, 37.0); 63 assert_equal(compare_constraint(want_37, box_double(36.0)), 0); 64 destroy_constraint(want_37); 65 } 66 67 Ensure constraints_on_doubles_respect_significant_figure_setting() { 68 significant_figures_for_assert_double_are(2); 69 Constraint *want_337 = want_double(label, 337.0); 70 assert_equal(compare_constraint(want_337, box_double(339.0)), 1); 71 significant_figures_for_assert_double_are(3); 72 assert_equal(compare_constraint(want_337, box_double(339.0)), 0); 73 destroy_constraint(want_337); 74 } 75 76 typedef struct { 77 char* value; 78 unsigned int length; 79 } String; 80 81 static int is_non_empty_string(const void* other) { 82 String* our = (String*)other; 83 return our->length != 0; 84 } 85 86 Ensure unequal_structs_with_same_value_for_specific_field_compare_true() { 87 String name; 88 name.value = "bob"; 89 name.length = 3; 90 91 Constraint *string_constraint = with(name, is_non_empty_string); 92 93 assert_equal(compare_constraint(string_constraint, is_non_empty_string), 1); 94 95 destroy_constraint(string_constraint); 96 97 name.value = "tim"; 98 name.length = 3; 99 100 string_constraint = with(name, is_non_empty_string); 101 assert_equal(compare_constraint(string_constraint, is_non_empty_string), 1); 102 103 destroy_constraint(string_constraint); 104 } 105 106 107 TestSuite *constraint_tests() { 108 TestSuite *suite = create_test_suite(); 109 add_test(suite, can_construct_and_destroy_an_want_constraint); 110 add_test(suite, parameter_name_gives_true_if_matching); 111 add_test(suite, equal_integers_compare_true_with_a_want_constraint); 112 add_test(suite, equal_pointers_compare_true_with_a_want_constraint); 113 add_test(suite, can_construct_and_destroy_a_want_string_constraint); 114 add_test(suite, can_compare_strings_as_equal); 115 add_test(suite, can_compare_null_strings_as_well_as_real_ones); 116 add_test(suite, can_expect_null_strings_as_well_as_real_ones); 117 add_test(suite, equal_doubles_compare_true_with_a_want_double_constraint); 118 add_test(suite, unequal_doubles_compare_false_with_a_want_double_constraint); 119 add_test(suite, constraints_on_doubles_respect_significant_figure_setting); 120 add_test(suite, unequal_structs_with_same_value_for_specific_field_compare_true); 121 return suite; 122 } 123