From 111e71e1511b2abff9176bd6c714c8da796f770e Mon Sep 17 00:00:00 2001 From: lemon Date: Sun, 16 Nov 2025 12:11:18 +0100 Subject: basic automated testing --- test/03-bf.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 test/03-bf.c (limited to 'test/03-bf.c') diff --git a/test/03-bf.c b/test/03-bf.c new file mode 100644 index 0000000..5b8ff8a --- /dev/null +++ b/test/03-bf.c @@ -0,0 +1,48 @@ +/* EXPECT: +Hello World! +*/ +unsigned char M[1<<15]; + +void bf(const char *p) +{ + extern int putchar(int); + extern int getchar(void); + unsigned char *Mend = M + sizeof M; + int b; + unsigned char *m = M; + + while (*p) { + switch (*p) { + case '+': ++*m; break; + case '-': --*m; break; + case '<': if (m == M) m = Mend; else --m; break; + case '>': if (m == Mend) m = M; else ++m; break; + case '.': putchar(*m); break; + case ',': *m = getchar(); break; + case '[': + if (*m) break; + b = 0; + do switch (*p++) { + case '[': ++b; break; + case ']': --b; break; + case 0: return; + } while (b != 0); + continue; + case ']': + if (!*m) break; + b = 0; + do switch (*p--) { + case '[': ++b; break; + case ']': --b; break; + case 0: return; + } while (b != 0); + break; + } + ++p; + } +} + +int main(int argc, char **argv) { + const char *p = "++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++."; + bf(argc < 2 ? p : argv[1]); +} -- cgit v1.2.3