163 lines
6.2 KiB
Text
163 lines
6.2 KiB
Text
01234567
|
|
GOOD: , works
|
|
GOOD: : duplicates
|
|
GOOD: empty stack pops zero
|
|
GOOD: 2-2 = 0
|
|
GOOD: | works
|
|
GOOD: 0! = 1
|
|
GOOD: 7! = 0
|
|
GOOD: 8*0 = 0
|
|
GOOD: # < jumps into <
|
|
GOOD: \ swaps
|
|
GOOD: 01` = 0
|
|
GOOD: 10` = 1
|
|
GOOD: 900pg gets 9
|
|
GOOD: p modifies space
|
|
Befunge-98 detected.
|
|
GOOD: wraparound works
|
|
GOOD: a pushes 10
|
|
GOOD: b-f push 11-15
|
|
GOOD: [ turns left
|
|
GOOD: ] turns right
|
|
GOOD: instructions between ; are skipped
|
|
UNDEF: # across left edge skips easternmost cell in file
|
|
UNDEF: # across left edge hits easternmost cell on line
|
|
GOOD: 0k^ doesn't execute ^
|
|
GOOD: 1k[ turns left from k
|
|
GOOD: 4k # jumps 4 times from k
|
|
GOOD: 2k ;;;5 executes 5 thrice
|
|
GOOD: 2k# jumps twice from k
|
|
GOOD: ak47k$ leaves 3 fours on stack
|
|
GOOD: 2k6 leaves 3 sixes on stack
|
|
GOOD: putting to and getting (-3 -2) worked, assuming working negative Funge-Space
|
|
GOOD: 9 / 2 = 4
|
|
GOOD: 9 % 2 = 1
|
|
About to test division by zero...
|
|
GOOD: 1 / 0 = 0
|
|
GOOD: 1 % 0 = 0
|
|
GOOD: SGML spaces
|
|
GOOD: n clears 15-cell stack: assuming it works
|
|
GOOD: r reflects
|
|
GOOD: 21w turns right
|
|
GOOD: ' pushes 20
|
|
GOOD: 'vs^ goes through
|
|
GOOD: 'vs places v
|
|
GOOD: z doesn't reflect
|
|
GOOD: 3j jumps over 3 cells
|
|
GOOD: 04-j jumps backward the right number of cells
|
|
GOOD: 1j ^ jumps into ^
|
|
GOOD: 10x goes east
|
|
GOOD: 1-1x goes southwest
|
|
GOOD: 32x sets delta to (3, 2)
|
|
Assuming we can trust x...
|
|
GOOD: wraparound with non-cardinal delta appears to work
|
|
GOOD: { transfers cells correctly
|
|
GOOD: { sets storage offset correctly, and p uses it
|
|
GOOD: } resets storage offset
|
|
GOOD: } transfers cells correctly
|
|
GOOD: { with negative argument works
|
|
GOOD: } with negative argument works
|
|
GOOD: } reflects when stack stack has only one stack
|
|
GOOD: u reflects when stack stack has only one stack
|
|
GOOD: u with zero count does nothing
|
|
GOOD: u with a positive count transfers cells correctly
|
|
GOOD: u with a negative count transfers cells correctly
|
|
y claims all of the following:
|
|
That buffered I/O is being used
|
|
That the number of bytes per cell is 8
|
|
That the interpreter's handprint is 1048578
|
|
That the interpreter's version is 1
|
|
That the behaviour of = is unavailable
|
|
That the system's path separator is /
|
|
That this Funge has 2dimensions
|
|
That the ID of the current IP is 0
|
|
That the team number of the current IP is 0
|
|
That the position of the IP was ( 6489)
|
|
That the delta of the IP was ( -10)
|
|
That the offset of the IP was ( 00)
|
|
That the least point containing a non-space cell is ( -3-2)
|
|
That the greatest point, relative to that point, is ( 183911)
|
|
That the day of the month is 15
|
|
That the month is 8
|
|
That the year is 2022
|
|
That the time is 20: 20: 47
|
|
That the size of the stack stack is 1
|
|
That the stack sizes are [ 0] from top to bottom
|
|
That the command-line arguments were: [ "test" "sanity" ]
|
|
That the environment variables are:
|
|
FOO=BAR
|
|
ENV=TEST
|
|
Best that the above claims are manually verified to be correct.
|
|
GOOD: 1y works
|
|
GOOD: 5y works
|
|
GOOD: dy works
|
|
GOOD: 1y and 5y do not disagree about =
|
|
No reliable cross-platform method of testing: assume = works
|
|
UNDEF: i not implemented according to 1y - cannot test it
|
|
UNDEF: can't test o without working i, may overwrite some existing file
|
|
1y says this is not Concurrent Funge-98, won't test t...
|
|
GOOD: y acts as pick instruction if given large enough argument
|
|
GOOD: ] turns flying IP right
|
|
GOOD: : on empty stack makes stack size 2 according to y
|
|
GOOD: \ on empty stack makes stack size 2 according to y
|
|
|
|
GOOD: ( pops correctly
|
|
GOOD: ) pops correctly
|
|
|
|
Here's how your interpreter deals with some possibilities unmentioned in the specification...
|
|
UNDEF: k with a negative argument executes 0 times or less often than the absolute value of the argument
|
|
UNDEF: the empty string wrapped around the edge of space contains 1character(s) (hopefully spaces)
|
|
UNDEF: ( with a negative count reflects and pops 0 times or less than the absolute value of the count
|
|
UNDEF: ) with a negative count reflects and pops 0 times or less than the absolute value of the count
|
|
|
|
GOOD: null byte in string and zero compare as equal
|
|
GOOD: ' followed by a byte greater than 127 works
|
|
GOOD: form feed does not appear to exist in Funge-Space
|
|
GOOD: y reports shrunk bounds correctly after spacing top-left corner
|
|
GOOD: y reports shrunk bounds correctly after spacing right edge
|
|
GOOD: y reports shrunk bounds correctly after spacing bottom edge
|
|
|
|
The Befunge-98 core has been completely tested.
|
|
Moving on to fingerprints.
|
|
A line (consider it UNDEF, though not marked as such) will be emitted for each fingerprint tested for, whether or not the interpreter supports it.
|
|
If the interpreter loads the fingerprint, subsequent lines will be GOOD or BAD depending on whether the interpreter behaves according to the fingerprint's specification.
|
|
Fingerprints will be unloaded after being tested. If ) does not work, it will fail silently.
|
|
|
|
Testing fingerprint NULL... not loaded.
|
|
Testing fingerprint HRTI... not loaded.
|
|
Testing fingerprint MODE... not loaded.
|
|
Testing fingerprint MODU... not loaded.
|
|
Testing fingerprint ORTH... not loaded.
|
|
Testing fingerprint PERL... not loaded.
|
|
Testing fingerprint REFC... not loaded.
|
|
Testing fingerprint ROMA... not loaded.
|
|
Testing fingerprint TOYS... not loaded.
|
|
Testing fingerprint TURT... not loaded.
|
|
Testing fingerprint BASE... not loaded.
|
|
Testing fingerprint CPLI... not loaded.
|
|
Testing fingerprint DATE... not loaded.
|
|
Testing fingerprint DIRF... not loaded.
|
|
Testing fingerprint EVAR... not loaded.
|
|
Testing fingerprint FILE... not loaded.
|
|
Testing fingerprint FING... not loaded.
|
|
Testing fingerprint FIXP... not loaded.
|
|
Testing fingerprint FPSP... not loaded.
|
|
Testing fingerprint FPDP... not loaded.
|
|
Testing fingerprint 3DSP... not loaded.
|
|
Testing fingerprint FRTH... not loaded.
|
|
Testing fingerprint IIPC... not loaded.
|
|
Testing fingerprint IMAP... not loaded.
|
|
Testing fingerprint INDV... not loaded.
|
|
Testing fingerprint REXP... not loaded.
|
|
Testing fingerprint SOCK... not loaded.
|
|
Testing fingerprint STRN... not loaded.
|
|
Testing fingerprint SUBR... not loaded.
|
|
Testing fingerprint TIME... not loaded.
|
|
Testing fingerprint JSTR... not loaded.
|
|
|
|
About to test detailed () behaviour with two fingerprints.
|
|
MODU and ROMA were chosen for their simplicity (for implementers) and partially overlapping instruction set.
|
|
UNDEF: ROMA not found.
|
|
|
|
The Mycology Befunge-98 test suite is practically done.
|
|
Trying to quit with q. If the return status is 15, consider it GOOD...
|