File: message_formatting_tests.c

package info (click to toggle)
cgreen 1.6.4-3
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 2,588 kB
  • sloc: ansic: 12,276; sh: 558; makefile: 474; cpp: 403; python: 181; xml: 33; sed: 13
file content (52 lines) | stat: -rw-r--r-- 2,065 bytes parent folder | download | duplicates (3)
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
#include <cgreen/cgreen.h>
#include <cgreen/message_formatting.h>
#include <stdlib.h>
#include "src/constraint_internal.h"

#ifdef __cplusplus
using namespace cgreen;
#endif

Describe(MessageFormatting);
BeforeEach(MessageFormatting) {}
AfterEach(MessageFormatting) {}


Ensure(MessageFormatting, can_show_failure_message_containing_percent_sign) {
    const char *string_with_percent = "This contains %!";
    Constraint *constraint =
        create_equal_to_string_constraint(string_with_percent, "string_with_percent");

    char *failure_message = failure_message_for(constraint, "actual_string", (intptr_t)"This contains another %!");
    assert_that(failure_message, contains_string("contains %%!"));
    assert_that(failure_message, contains_string("another %%!"));

    constraint->destroy(constraint);
    free(failure_message);
}

Ensure(MessageFormatting, shows_offset_as_zero_based) {
    char actual_data[] = {0x0a, 0x0b, 0x0c, 0x0d};
    char expected_data[] = {0x0b, 0x0b, 0x0c, 0x0d};
    Constraint *constraint =
        create_equal_to_contents_constraint(expected_data, 4, "expectd_data");

    char *failure_message = failure_message_for(constraint, "actual_data", (intptr_t)actual_data);
    assert_that(failure_message, contains_string("at offset"));
    assert_that(failure_message, contains_string("[0]"));
    assert_that(failure_message, contains_string("actual value:"));
    assert_that(failure_message, contains_string("expected value:"));
    assert_that(strstr(failure_message, "actual"), is_less_than(strstr(failure_message, "expected")));
    assert_that(failure_message, contains_string("0x0a"));
    assert_that(failure_message, contains_string("0x0b"));
    assert_that(strstr(failure_message, "0x0a"), is_less_than(strstr(failure_message, "0x0b")));

    free(failure_message);
    destroy_constraint(constraint);
}

TestSuite *message_formatting_tests(void) {
    TestSuite *suite = create_test_suite();
    add_test_with_context(suite, MessageFormatting, can_show_failure_message_containing_percent_sign);
    return suite;
}