Directly specifying the functionality in a "Tests for" is no more.
Chris Pressey
9 years ago
218 | 218 | |
219 | 219 | -> Tests for 'Reversing a string' |
220 | 220 | |
221 | Alternatively, the following direct way of associating tests with an | |
222 | implementation of a functionality, may be used. However, this direct way | |
223 | of specifying a functionality is discouraged when there may be conceivably | |
224 | be multiple implementation of the functionality. | |
225 | ||
226 | -> Tests for _functionality-type_ _functionality-specifier_ | |
227 | ||
228 | _functionality-type_ and _functionality-specifier_ have the same meaning | |
229 | as given in the description of the Functionality-definition pragma. | |
230 | ||
231 | For example: | |
232 | ||
233 | -> Tests for Haskell function Data.Backwards:reverseString | |
234 | ||
235 | 221 | Test Body, Test Input and Expected Text |
236 | 222 | --------------------------------------- |
237 | 223 | |
322 | 308 | The format of pragmas was chosen such that they could be read literately, |
323 | 309 | and as such, a formatting tool could format them in the output document |
324 | 310 | with little if any change. |
325 | ||
326 | Here is why directly specifying the functionality implementation in a | |
327 | Tests-for pragma is discouraged. Saying `-> Tests for shell command | |
328 | "flang %(test-body-text)"` ties a set of tests to a particular executable, | |
329 | that is to say a particular *implementation* of a language, which is being | |
330 | tested, but a large part of the point of Falderal is to let you write | |
331 | tests for a *language*, and that language might have *many* implementations. | |
332 | Decoupling them allows you to change what actual functions or programs | |
333 | are being tested, and basically allow you to have multiple implementations | |
334 | of a language and use the same tests for all of them. |