add zero_or_more tests
add main() to tests. better failure reporting.
document (partly) using tests.py