Mycology is my Befunge–98 test suite. The ‘Fungus’ Funge–98 diagnostics tool was inadequate for my purposes, with inaccurate output and very little coverage. I developed Mycology side by side with my CCBI interpreter, to the point that it now tests the full Befunge–98 specification, with the only exception of the = Execute instruction, which is too difficult to reliably test across platforms.
Mycology is written completely in Befunge–98.
A comparison of Mycology test results across interpreters is available. In summary: CCBI passes with flying colours, most others don’t. *grin* But I must say that the situation has improved very well since I released Mycology.
Downloads
The latest version, 2009–04–04:
Significant changes
Not all minor updates and details are included here. To see a full list of changes, view the readme.
2009–03–29
- Properly fixed the 1y bit testing, it was quite broken.
2009–03–28
Rin FILE is now expected to reflect when reading past EOF.- STRN doesn’t test
Gleading to an infinite loop, since I think it’s valid that it does loop infinitely. - It was always claimed that I/O was buffered; fixed that.
- It was complained if 1y pushed something greater than 15: corrected that to 31.
2008–11–15
)was never actually tested with a negative count, it was(both times.
2008–09–21
- The fingerprint loading code had a misalignment which caused a broken
(to loop infinitely; fixed that.
2008–09–13
- “GOOD: SGML spaces” was never output.
- HRTI doesn’t now run
ffkyn, filling up the stack so much at once. - IMAP updated to latest spec.
- INDV now expects the logical order, reporting BAD otherwise.
- Fixed: test for k with a negative count was expecting pre–2008–07–26 k behaviour.
2008–09–10
- The check for wraparound with a non-cardinal delta is a bit stricter.
2008–08–30
- The case when SCKE is included in SOCK now works as well.
2008–08–28
- Fixed: many of the SOCK and SCKE tests still (since the 2008–07–26 version) expected that
Aoverwrites its input socket.
2008–08–20
- Fixed: the concurrency test for
;;was off by one. - Added testing for the new
AandOin SUBR.
2008–08–19
- Added the DATE fingerprint.
- Fixed: the concurrency tests for
5kzand"a b"were incorrect.
2008–08–13
- I had got the way
yworks as a pick instruction completely wrong. (Reading the spec, it seems pretty clear… I wonder how I managed that.) - PNTR is gone, after INDV it shouldn’t have existed any more.
Din FILE is now tested, and used to remove those pesky .tmp files.
2008–07–26
- It turns out that
kis meant to behave differently from what I thought. Nothingk-related is UNDEF any more, thanks to information from Chris Pressey (via Arvid Norlander and Mike Riley). - This also meant some changes in MycoTRDS.
- Added a
ktest related to the new behaviour. - Expanded the null byte check somewhat.
- Updated the readme for the first time since the first release! I completely forgot about it…
- In SOCK, overwriting a socket on accept is now BAD, not GOOD.
2008–07–19
- Added a check for null byte handling.
2008–03–11
iandobeing unimplemented or unable to be tested are now UNDEF, not BAD.- PERL fingerprint is now tested with the string “5–1”, not “2+2” which is invariant under reversal. Thanks to Alex Smith for the input.
The comparison hasn’t been updated to reflect these changes.
2008–02–02
- The behaviour of
1k #is now considered UNDEF.