Overview
Comment: | Document ObjFWTest |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
3c55b7ac500c732f73bcdce685b45311 |
User & Date: | js on 2024-02-21 21:36:41 |
Other Links: | manifest | tags |
Context
2024-02-23
| ||
22:55 | OFLHAArchive: Don't assume method is uncompressed check-in: bf45f06d9b user: js tags: trunk | |
2024-02-21
| ||
21:36 | Document ObjFWTest check-in: 3c55b7ac50 user: js tags: trunk | |
2024-02-20
| ||
22:22 | runtime: Fix associated objects check-in: b0594b769c user: js tags: trunk | |
Changes
Modified Doxyfile from [68a4cb7d92] to [0d15a3240a].
1 2 | PROJECT_NAME = "ObjFW" OUTPUT_DIRECTORY = docs/ | | | 1 2 3 4 5 6 7 8 9 10 | PROJECT_NAME = "ObjFW" OUTPUT_DIRECTORY = docs/ INPUT = src src/exceptions src/runtime src/test FILE_PATTERNS = *.h *.m HTML_OUTPUT = . HAVE_DOT = NO GENERATE_LATEX = NO HIDE_UNDOC_CLASSES = YES HIDE_UNDOC_MEMBERS = YES TYPEDEF_HIDES_STRUCT = YES |
︙ | ︙ | |||
44 45 46 47 48 49 50 | OF_WARN_UNUSED_RESULT= \ OF_WEAK_UNAVAILABLE= \ SIGHUP \ SIGUSR1 \ SIGUSR2 MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = YES | | | 44 45 46 47 48 49 50 51 | OF_WARN_UNUSED_RESULT= \ OF_WEAK_UNAVAILABLE= \ SIGHUP \ SIGUSR1 \ SIGUSR2 MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = YES IGNORE_PREFIX = OF OF_ OT OT_ |
Modified src/test/OTAssert.h from [5c08862032] to [7589ceb6da].
︙ | ︙ | |||
15 16 17 18 19 20 21 | /* * Unfortunately, that's the only way to make all compilers happy with the GNU * extensions for variadic macros that are being used here. */ #pragma GCC system_header | > > > > > > > > > | | | > > > > > > > > | > > > > > > > > > | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 | /* * Unfortunately, that's the only way to make all compilers happy with the GNU * extensions for variadic macros that are being used here. */ #pragma GCC system_header /** @file */ /** * @brief Asserts that the specified condition condition holds. * * @param condition The condition to check * @param ... An optional format string to print if the assertion failed, * followed by optional arguments */ #define OTAssert(condition, ...) \ OTAssertImpl(self, _cmd, condition, @#condition, \ @__FILE__, __LINE__, ## __VA_ARGS__, nil) /** * @brief Asserts that the specified condition is true. * * @param condition The condition to check * @param ... An optional format string to print if the assertion failed, * followed by optional arguments */ #define OTAssertTrue(condition, ...) \ OTAssert(condition == true, ## __VA_ARGS__) /** * @brief Asserts that the specified condition is false. * * @param condition The condition to check * @param ... An optional format string to print if the assertion failed, * followed by optional arguments */ #define OTAssertFalse(condition, ...) \ OTAssert(condition == false, ## __VA_ARGS__) /** * @brief Asserts that the two values are equal. * * @param a The value to check * @param b The expected value * @param ... An optional format string to print if the assertion failed, * followed by optional arguments */ #define OTAssertEqual(a, b, ...) OTAssert(a == b, ## __VA_ARGS__) /** * @brief Asserts that the two values are not equal. * * @param a The value to check * @param b The value `a` should not have * @param ... An optional format string to print if the assertion failed, * followed by optional arguments */ #define OTAssertNotEqual(a, b, ...) OTAssert(a != b, ## __VA_ARGS__) /** * @brief Asserts that the value is less than another value. * * @param a The value to check * @param b The value `a` should be less than * @param ... An optional format string to print if the assertion failed, * followed by optional arguments */ #define OTAssertLessThan(a, b, ...) OTAssert(a < b, ## __VA_ARGS__) /** * @brief Asserts that the value is less than or equal to another value. * * @param a The value to check * @param b The value `a` should be less than or equal to * @param ... An optional format string to print if the assertion failed, * followed by optional arguments */ #define OTAssertLessThanOrEqual(a, b, ...) OTAssert(a <= b, ## __VA_ARGS__) /** * @brief Asserts that the value is greater than another value. * * @param a The value to check * @param b The value `a` should be greater than * @param ... An optional format string to print if the assertion failed, * followed by optional arguments */ #define OTAssertGreaterThan(a, b, ...) OTAssert(a > b, ## __VA_ARGS__) /** * @brief Asserts that the value is greater than or equal to another value. * * @param a The value to check * @param b The value `a` should be greater than or equal to * @param ... An optional format string to print if the assertion failed, * followed by optional arguments */ #define OTAssertGreaterThanOrEqual(a, b, ...) OTAssert(a >= b, ## __VA_ARGS__) /** * @brief Asserts that the two objects are equal. * * @param a The object to check * @param b The object `a` is expected to be equal to * @param ... An optional format string to print if the assertion failed, * followed by optional arguments */ #define OTAssertEqualObjects(a, b, ...) OTAssert([a isEqual: b], ## __VA_ARGS__) /** * @brief Asserts that the two objects are not equal. * * @param a The object to check * @param b The object `a` is expected to be not equal to * @param ... An optional format string to print if the assertion failed, * followed by optional arguments */ #define OTAssertNotEqualObjects(a, b, ...) \ OTAssert(![a isEqual: b], ## __VA_ARGS__) /** * @brief Asserts that the specified object is `nil`. * * @param object The object to should be `nil` * @param ... An optional format string to print if the assertion failed, * followed by optional arguments */ #define OTAssertNil(object, ...) OTAssert(object == nil, ## __VA_ARGS__) /** * @brief Asserts that the specified object is not `nil`. * * @param object The object to should not be `nil` * @param ... An optional format string to print if the assertion failed, * followed by optional arguments */ #define OTAssertNotNil(object, ...) OTAssert(object != nil, ## __VA_ARGS__) /** * @brief Asserts that the specified expression throws an exception. * * @param expression The expression that should throw * @param ... An optional format string to print if the assertion failed, * followed by optional arguments */ #define OTAssertThrows(expression, ...) \ { \ bool OTThrown = false; \ @try { \ expression; \ } @catch (id e) { \ OTThrown = true; \ } \ OTAssert(OTThrown, ## __VA_ARGS__); \ } /** * @brief Asserts that the specified expression throws a specific exception. * * @param expression The expression that should throw * @param exception The exception the expression should throw (as just the * class name, without quotes) * @param ... An optional format string to print if the assertion failed, * followed by optional arguments */ #define OTAssertThrowsSpecific(expression, exception, ...) \ { \ bool OTThrown = false; \ @try { \ expression; \ } @catch (exception *e) { \ OTThrown = true; \ } \ OTAssert(OTThrown, ## __VA_ARGS__); \ } /** * @brief Skips the current test, making it neither fail nor succeeed. * * @param ... An optional format string to print why the test was skipped, * followed by optional arguments */ #define OTSkip(...) \ OTSkipImpl(self, _cmd, @__FILE__, __LINE__, ## __VA_ARGS__, nil) #ifdef __cplusplus extern "C" { #endif extern void OTAssertImpl(id testCase, SEL test, bool condition, OFString *check, OFString *file, size_t line, ...); extern void OTSkipImpl(id testCase, SEL test, OFString *file, size_t line, ...); #ifdef __cplusplus } #endif |
Modified src/test/OTOrderedDictionary.h from [b6c6515436] to [9866881e41].
︙ | ︙ | |||
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # import "ObjFW.h" #else # import <ObjFW/ObjFW.h> #endif OF_ASSUME_NONNULL_BEGIN @interface OTOrderedDictionary: OFDictionary { OFArray *_keys; OFArray *_objects; } @end OF_ASSUME_NONNULL_END | > > > > > > > > | 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | # import "ObjFW.h" #else # import <ObjFW/ObjFW.h> #endif OF_ASSUME_NONNULL_BEGIN /** * @brief A dictionary that enumerates keys and objects in the same order they * were specified during initialization. * * @warning This class is only for testing! It is slow and only to be used to * test extensions of OFDictionary, for example serializations such as * JSON, where it is desirable to compare to an expected output. */ @interface OTOrderedDictionary: OFDictionary { OFArray *_keys; OFArray *_objects; } @end OF_ASSUME_NONNULL_END |
Modified src/test/OTTestCase.h from [a61157e757] to [d26bebbc07].
︙ | ︙ | |||
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | # import "ObjFW.h" #else # import <ObjFW/ObjFW.h> #endif OF_ASSUME_NONNULL_BEGIN @interface OTTestCase: OFObject #ifdef OF_HAVE_CLASS_PROPERTIES @property (class, readonly, nullable, nonatomic) OFArray OF_GENERIC(OFPair OF_GENERIC(OFString *, id) *) *summary; #endif + (nullable OFArray OF_GENERIC(OFPair OF_GENERIC(OFString *, id) *) *)summary; - (void)setUp; - (void)tearDown; @end OF_ASSUME_NONNULL_END | > > > > > > > > > > > > > > > > > > > > > > | 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 | # import "ObjFW.h" #else # import <ObjFW/ObjFW.h> #endif OF_ASSUME_NONNULL_BEGIN /** * @brief A class meant for subclassing to create a test case, consisting of * one or more tests. * * All methods with the prefix `test` that take no arguments of all classes * that subclass this class are automatically executed by ObjFWTest. */ @interface OTTestCase: OFObject #ifdef OF_HAVE_CLASS_PROPERTIES @property (class, readonly, nullable, nonatomic) OFArray OF_GENERIC(OFPair OF_GENERIC(OFString *, id) *) *summary; #endif /** * @brief Returns a summary for the test case that should be printed once all * tests in all test cases were run. * * This is mostly useful to print something at the end of all tests that needs * manual verification. */ + (nullable OFArray OF_GENERIC(OFPair OF_GENERIC(OFString *, id) *) *)summary; /** * @brief Set up method that is run before every test in the test case. */ - (void)setUp; /** * @brief Tear down method that is run after every test in the test case. */ - (void)tearDown; @end OF_ASSUME_NONNULL_END |