I'm trying to figure out how to use the qcumber
unit-testing library.
I have src/ti.q
sma: {mavg[x; y]}; /simple moving average
and tests/sma.quke
feature sma
before
inputData: 1 2 3 4 5 6 7 8 9 10;
expectedOutput: 1 1.5 2 2.5 3 4 5 6 7 8;
period: 5;
should
expect
.qu.compare[expectedOutput; sma[period;inputData]]
I run the test via q $AXLIBRARIES_HOME/ws/qcumber.q_ -src ./src/ti.q -test ./tests -color -showAll
which gives
Starting qCumber: q test runner
q)Loading src file: src/ti.q
Running tests: tests
file ti.quke
feature sma
(should)
- fail | (expect)
error: inputData (line 7)
Summary:
0 tests passed
0 benchmarks failed
1 tests failed
0 tests skipped
Clearly there is an issue with my tests/sma.quke
file but I haven't been able to figure out how to pass in constants from the documentation at Testing framework for q(.qu). How do I get my expect
block to see the variables defined in the before
block (If indeed block
is what's required)?
You need to set the variables in the before block as global variables, like:
feature sma
before
.test.inputData: 1 2 3 4 5 6 7 8 9 10;
.test.expectedOutput: 1 1.5 2 2.5 3 4 5 6 7 8;
.test.period: 5;
should
expect
.qu.compare[.test.expectedOutput; sma[.test.period;.test.inputData]]