7ff3f76de5
- Implement buffer_open_file/string, buffer_read, buffer_close in v0/src/buffer.c - Add tests in v0/tests/test_buffer.c and test_buffer.txt; register tests in v0/tests/test.c - Update v0/include.mk and Makefile Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
44 lines
1.5 KiB
C
44 lines
1.5 KiB
C
#include "test.h"
|
|
#include "../src/buffer.h"
|
|
#include <stdio.h>
|
|
|
|
// @copilot add test for reading from a file.
|
|
// Create test_buffer_xyz.txt if you need multiple,
|
|
// otherwise simply test_buffer.txt
|
|
|
|
static void test_buffer_string_reads_chars(void) {
|
|
Buffer* buf = buffer_open_string("hi");
|
|
if (buffer_read(buf) != 'h') fail("expected 'h'");
|
|
if (buffer_read(buf) != 'i') fail("expected 'i'");
|
|
buffer_close(buf);
|
|
}
|
|
|
|
static void test_buffer_string_eof(void) {
|
|
Buffer* buf = buffer_open_string("");
|
|
if (buffer_read(buf) != (char)-1) fail("expected -1 on empty string");
|
|
buffer_close(buf);
|
|
}
|
|
|
|
static void test_buffer_string_eof_after_content(void) {
|
|
Buffer* buf = buffer_open_string("a");
|
|
buffer_read(buf);
|
|
if (buffer_read(buf) != (char)-1) fail("expected -1 after end of string");
|
|
buffer_close(buf);
|
|
}
|
|
|
|
static void test_buffer_file_reads_chars(void) {
|
|
Buffer* buf = buffer_open_file("v0/tests/test_buffer.txt");
|
|
if (buf == NULL) fail("could not open file");
|
|
if (buffer_read(buf) != 'a') fail("expected 'a'");
|
|
if (buffer_read(buf) != 'b') fail("expected 'b'");
|
|
if (buffer_read(buf) != 'c') fail("expected 'c'");
|
|
if (buffer_read(buf) != '\n') fail("expected newline after content");
|
|
if (buffer_read(buf) != (char)-1) fail("expected -1 after file");
|
|
buffer_close(buf);
|
|
}
|
|
|
|
static void test_buffer_file_open_fail(void) {
|
|
Buffer* buf = buffer_open_file("v0/tests/does_not_exist.txt");
|
|
if (buf != NULL) fail("expected NULL for non-existent file");
|
|
}
|