4 ms·
Thing is, for something like an AST parser you want a property test, not a bunch of autogenerated boilerplate. Generally, if something is boring and repetitive
by lambdadmitry 4y ago
Thing is, for something like an AST parser you want a property test, not a bunch of autogenerated boilerplate.
Generally, if something is boring and repetitive it's probably shouldn't be written, better code generation is rarely a good answer.
- lolinder 4y agoProperty tests are nice for lots of things, but for an AST parser? You'd basically have to re-implement the parser in order to test the parser, wouldn't you? I suppose you could test "if I convert the AST back to a string do I get the same result", but that's not actually your goal with an Abstract Syntax Tree. If nothing else the white space should be allowed to change. What sort of property tests did you have in mind?
- lambdadmitry 4y agoYou are right that simplified reimplementations make good property tests, but in this case I'd go the other way around: generate an AST, render it a in test case-dependent way (adding whitespace as you said, but also parens etc), inject known faults for a fraction of test cases, and check that the parsed AST is equivalent to the original one or errored out if a fault was injected. Rendering a given AST is usually simpler than parsing it.