adds the concern aproach and explanation
This commit is contained in:
@ -14,20 +14,6 @@ Each test must thus specify (as instance variables):
|
||||
- the parse output
|
||||
- the transform output
|
||||
|
||||
|
||||
For any functionality that we want to work (ie test), there are actually three tests, with the _same_ name
|
||||
One in each of the parser/transform/ast classes
|
||||
Parser test that the parser parses and thet the output is correct. Rules are named and and boil down to
|
||||
hashes and arrays with lots of symbols for the names the rules (actually the reults) were given
|
||||
Transform test really just test the tranformation. They basically take the output of the parse
|
||||
and check that correct Ast classes are produced
|
||||
Ast tests both steps in one. Ie string input to ast classes output
|
||||
|
||||
All threee classes are layed out quite similarly in that they use a check method and
|
||||
each test assigns @input and @expected which the check methods then checks
|
||||
The check methods have a pust in it (to be left) which is very handy for checking
|
||||
also the output of parser.check can actually be used as the input of transform
|
||||
|
||||
Repeat: For every test in parser, there should be one in transform and ast
|
||||
The test in transform should use the output of parser as input
|
||||
The test in ast should expect the same result as transform
|
||||
Test are grouped by functionality into cases and define methods parse_*
|
||||
Test cases must include ParserHelper, which includes the magic to write the 3 test methods for each
|
||||
parse method. See test_basic ofr easy example.
|
||||
|
Reference in New Issue
Block a user