| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
| |
|
|
|
|
|
| |
Use asynchronous channels like 'stdin' for most tests.
Use the synchronous fakes for testing low-level stdin helpers.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Also cleaned up much of the mess in 594.
|
|
|
|
|
|
| |
I'd caused a bug in Arc: https://github.com/arclanguage/anarki/commit/97b3464256
Almost done interrupting and restarting routines.
|
| |
|
| |
|
|
|
|
|
| |
I don't remember what exactly we wanted to test in the second move.
But we can write it next time we need it.
|
| |
|
| |
|
|
|
|
|
| |
Now that there isn't a stdout channel we can postpone the test showing
the need to flush-stdout before clearing screen.
|
| |
|
|
|
|
| |
Dump yet another trying-to-be-polymorphic function.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Also clean up various prints from last few commits.
As a convention, for debugging we always print directly to host.
|
|
|
|
|
|
|
|
| |
I discovered the problem when playing more than 3 moves in the
chessboard app.
But it turns out we've been clobbering each other willy-nilly even in
the chessboard-retro app.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This requires creating a new data structure called buffer, because
strings are too inefficient for appending to, and we need to know how
long they need to be before we clear them.
But I'm not gonna bother to write tests for all the new primitives I
just introduced, because that's not expedient.
One test for mu is how nicely it handles situations like this without
requiring perfect test hygiene. In this case, I can imagine tools that
will extract tests for a particular function out of all known tests.
Especially if it's a pure function that should be easy. Then just show
each test to the programmer and ask him to give it a reasonable name.
|
|
|
|
|
|
|
| |
Minimize use of 'unless' forms, they're harder to follow.
Also, using one-sided checks like greater-or-equal or lesser-or-equal is
more defensive.
|
| |
|
|
|
|
| |
Feeling more confident now that prints are being managed right.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This will let me swap in a fake in tests.
Still hacky, though. I'm sure I'm not managing the parameter right in
the chessboard app.
And then there's the question of whether it should also appear as an
output operand.
But it's a start. And using nil to mean 'real' is a reasonable
convention.
If I ever need to handle multiple screens perhaps we'll have to switch
to 1:literal/terminal and 2:literal/terminal, etc. But those are equally
easy to guard on.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Each clause creates its own default-space for local variables.
Now we can justify prepending bodies on every 'function' form.
Later we can optimize away the duplicate default-spaces.
Another cost: we can't mindlessly use 'next-input' anymore. Pity.
|
| |
|
|
|
|
| |
Is it even worth having my generic function prepend idea?
|
| |
|
|
|
|
| |
Reduce printing primitives before I start messing with fake versions.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Getting the concurrent tests right is still proving difficult. Let's see
if things improve with practice.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Tests force me to extract functions 'read-rank' and 'read-file'.
|