Back to home page

Enduro/X

 
 

    


0001 #ifndef CONSTRAINT_HEADER
0002 #define CONSTRAINT_HEADER
0003 
0004 #include <cgreen/reporter.h>
0005 #ifndef __cplusplus
0006 #include <stdbool.h>
0007 #endif
0008 #include <stddef.h>
0009 #include <stdint.h>
0010 
0011 #ifdef __cplusplus
0012 namespace cgreen {
0013     extern "C" {
0014 #endif
0015 
0016 typedef enum {
0017     VALUE_COMPARER,
0018     CONTENT_COMPARER,
0019     STRING_COMPARER,
0020     DOUBLE_COMPARER,
0021     RETURN_VALUE,
0022     CONTENT_SETTER,
0023     CALL
0024 } ConstraintType;
0025 
0026 typedef struct Constraint_ Constraint;
0027 struct Constraint_ {
0028     ConstraintType type;
0029     const char *name;
0030     void (*destroy)(Constraint *);
0031     bool (*compare)(Constraint *, intptr_t);
0032     void(*execute)(Constraint *, const char *, intptr_t, const char *, int, TestReporter *);
0033     char *(*failure_message)(Constraint *, const char *, intptr_t);
0034     const char *expected_value_message;
0035     intptr_t expected_value;
0036     const char *expected_value_name;
0037 
0038     /* for PARAMETER constraints */
0039     const char *parameter_name;
0040     size_t size_of_expected_value;
0041 };
0042 
0043 Constraint *create_constraint();
0044 Constraint *create_parameter_constraint_for(const char *parameter_name);
0045 
0046 void destroy_empty_constraint(Constraint *constraint);
0047 void destroy_static_constraint(Constraint *constraint);
0048 void destroy_double_constraint(Constraint *constraint);
0049 void destroy_constraint(Constraint *);
0050 void destroy_constraints(va_list constraints);
0051  
0052 bool compare_want_value(Constraint *constraint, intptr_t actual);
0053 bool compare_do_not_want_value(Constraint *constraint, intptr_t actual);
0054 void test_want(Constraint *constraint, const char *function, intptr_t actual, const char *test_file, int test_line, TestReporter *reporter);
0055 
0056 void test_constraint(Constraint *constraint, const char *function, intptr_t actual, const char *test_file, int test_line, TestReporter *reporter);
0057 
0058 Constraint *create_equal_to_value_constraint(intptr_t expected_value, const char *expected_value_name);
0059 Constraint *create_not_equal_to_value_constraint(intptr_t expected_value, const char *expected_value_name);
0060 Constraint *create_greater_than_value_constraint(intptr_t expected_value, const char *expected_value_name);
0061 Constraint *create_less_than_value_constraint(intptr_t expected_value, const char *expected_value_name);
0062 Constraint *create_equal_to_contents_constraint(void *pointer_to_compare, size_t size_to_compare, const char *compared_pointer_name);
0063 Constraint *create_not_equal_to_contents_constraint(void *pointer_to_compare, size_t size_to_compare, const char *compared_pointer_name);
0064 Constraint *create_equal_to_string_constraint(const char* expected_value, const char *expected_value_name);
0065 Constraint *create_not_equal_to_string_constraint(const char* expected_value, const char *expected_value_name);
0066 Constraint *create_contains_string_constraint(const char* expected_value, const char *expected_value_name);
0067 Constraint *create_does_not_contain_string_constraint(const char* expected_value, const char *expected_value_name);
0068 Constraint *create_begins_with_string_constraint(const char* expected_value, const char *expected_value_name);
0069 
0070 Constraint *create_equal_to_double_constraint(double expected_value, const char *expected_value_name);
0071 Constraint *create_not_equal_to_double_constraint(double expected_value, const char *expected_value_name);
0072 Constraint *create_return_value_constraint(intptr_t value_to_return);
0073 Constraint *create_set_parameter_value_constraint(const char *parameter_name, intptr_t value_to_set, size_t size_to_set);
0074 
0075 bool no_expected_value_in(const Constraint *constraint);
0076 bool values_are_strings_in(const Constraint *constraint);
0077 bool is_content_comparing(const Constraint *constraint);
0078 bool is_content_setting(const Constraint *constraint);
0079 bool is_not_content_setting(const Constraint *constraint);
0080 bool is_string_comparing(const Constraint *constraint);
0081 bool is_double_comparing(const Constraint *constraint);
0082 bool is_comparing(const Constraint *constraint);
0083 bool is_not_comparing(const Constraint *constraint);
0084 bool is_parameter(const Constraint *);
0085 bool constraint_is_not_for_parameter(const Constraint *, const char *);
0086 bool constraint_is_for_parameter(const Constraint *, const char *);
0087 bool constraint_is_for_parameter_in(const Constraint *, const char *);
0088 
0089 #ifdef __cplusplus
0090     }
0091 }
0092 #endif
0093 
0094 #endif