|
Serene Runtime 1.0.0-dev
C runtime for the Serene programming language
|
#include <fcntl.h>#include <limits.h>#include <string.h>#include <unistd.h>#include <serene/rt/context.h>#include <serene/rt/source_manager.h>#include "base.h"Go to the source code of this file.
Macros | |
| #define | SM_TESTS(X) |
Variables | |
| const size_t | len = sizeof(content) - 1 |
| char | path [PATH_MAX] |
| srn_sm_t * | sm = srn_sm_init(ctx) |
| unsigned char * | poison [8] |
| auto | result = srn_sm_buffer_file(sm, path, false) |
| auto | first = srn_sm_buffer_file(sm, path, false) |
| int | fd = open(path, O_WRONLY | O_TRUNC) |
| auto | second = srn_sm_buffer_file(sm, path, true) |
| auto | failed = srn_sm_buffer_file(sm, path, true) |
| auto | again = srn_sm_buffer_file(sm, path, false) |
| void * | arg |
| char | path1 [PATH_MAX] |
| char | path2 [PATH_MAX] |
| sm | buffer_counts = UINT16_MAX |
| auto | refused = srn_sm_buffer_file(sm, path1, false) |
| auto | accepted = srn_sm_buffer_file(sm, path2, false) |
| * | done = true |
| return | nullptr |
| #define SM_TESTS | ( | X | ) |
Definition at line 33 of file source_manager_tests.h.
| ASSERT_NOT_NULL | ( | failed. | maybe_error | ) |
| ASSERT_NOT_NULL | ( | refused. | maybe_error | ) |
| ASSERT_NOT_NULL | ( | result. | buffer | ) |
| ASSERT_NOT_NULL | ( | second.buffer-> | next | ) |
| ASSERT_NOT_NULL | ( | srn_sm_buffer_data(first.buffer) | ) |
| ASSERT_NOT_NULL | ( | srn_sm_buffer_data(second.buffer) | ) |
| ASSERT_NULL | ( | srn_sm_buffer_data(result.buffer) | ) |
| close | ( | fd | ) |
| for | ( | ) |
Definition at line 119 of file source_manager_tests.h.
|
static |
Definition at line 49 of file source_manager_tests.h.
| srn_sm_shutdown | ( | sm | ) |
| TEST_ASSERT | ( | fd >= | 0 | ) |
| TEST_ASSERT | ( | sm_make_temp_file(path, "") | = =0 | ) |
| TEST_ASSERT | ( | sm_make_temp_file(path, "version1") | = =0 | ) |
| TEST_ASSERT | ( | sm_make_temp_file(path, content) | = =0 | ) |
| TEST_ASSERT | ( | sm_make_temp_file(path1, "one") | = =0 | ) |
| TEST_ASSERT | ( | sm_make_temp_file(path2, "two") | = =0 | ) |
| TEST_ASSERT | ( | write(fd, "version2", 8) | = =8 | ) |
| TEST_CHECK | ( | again. | buffer = =first.buffer | ) |
| TEST_CHECK | ( | failed.maybe_error-> | tag = =NOT_FOUND | ) |
| TEST_CHECK | ( | memcmp(srn_sm_buffer_data(again.buffer), "version1", 8) | = =0 | ) |
| TEST_CHECK | ( | memcmp(srn_sm_buffer_data(result.buffer), content, len) | = =0 | ) |
| TEST_CHECK | ( | memcmp(srn_sm_buffer_data(second.buffer), "version2", 8) | = =0 | ) |
| TEST_CHECK | ( | memcmp(srn_sm_buffer_data(second.buffer->next), "version1", 8) | = =0 | ) |
| TEST_CHECK | ( | refused.maybe_error-> | tag = =SM_BUFFER_ID_EXHAUSTED | ) |
| TEST_CHECK | ( | sm-> | buffer_counts = =1 | ) |
| TEST_CHECK | ( | srn_sm_buffer_data(result.buffer) | [len] = ='\0' | ) |
| TEST_CHECK | ( | srn_sm_buffer_data(second.buffer) ! | = srn_sm_buffer_data(second.buffer->next) | ) |
| TEST_CHECK | ( | srn_sm_buffer_len(again.buffer) | = =9 | ) |
| TEST_CHECK | ( | srn_sm_buffer_len(result.buffer) | = =len+1 | ) |
| TEST_CHECK | ( | srn_sm_buffer_len(second.buffer) | = =9 | ) |
| TEST_CHECK | ( | srn_sm_buffer_len(second.buffer->next) | = =9 | ) |
| TEST_IN_FIBER | ( | sm_buffer_new_file | , |
| { char path[PATH_MAX];TEST_ASSERT(sm_make_temp_file(path, "hello")==0);srn_sm_t *sm=srn_sm_init(ctx);auto result=srn_sm_buffer_file(sm, path, false);TEST_NO_ERROR(result);ASSERT_NOT_NULL(result.buffer);TEST_CHECK(sm->buffer_counts==1);TEST_CHECK(srn_sm_buffer_len(result.buffer)==6);TEST_CHECK(memcmp(srn_sm_buffer_data(result.buffer), "hello", 5)==0);srn_sm_shutdown(sm);unlink(path);} | ) |
| TEST_IN_FIBER | ( | sm_buffer_nonexistent_file | , |
| { srn_sm_t *sm=srn_sm_init(ctx);auto result=srn_sm_buffer_file(sm, "/tmp/srn_does_not_exist_xyz123abc", false);ASSERT_NOT_NULL(result.maybe_error);TEST_CHECK(result.maybe_error->tag==NOT_FOUND);TEST_CHECK(sm->buffer_counts==0);srn_sm_shutdown(sm);} | ) |
| TEST_IN_FIBER | ( | sm_buffer_same_file_no_reread | , |
| { char path[PATH_MAX];TEST_ASSERT(sm_make_temp_file(path, "data")==0);srn_sm_t *sm=srn_sm_init(ctx);auto first=srn_sm_buffer_file(sm, path, false);auto second=srn_sm_buffer_file(sm, path, false);TEST_NO_ERROR(first);TEST_NO_ERROR(second);TEST_CHECK(first.buffer==second.buffer);TEST_CHECK(sm->buffer_counts==1);srn_sm_shutdown(sm);unlink(path);} | ) |
| TEST_IN_FIBER | ( | sm_filename_is_owned | , |
| { char path[PATH_MAX];TEST_ASSERT(sm_make_temp_file(path, "data")==0);char scratch[PATH_MAX];(void) snprintf(scratch, sizeof(scratch), "%s", path);srn_sm_t *sm=srn_sm_init(ctx);auto result=srn_sm_buffer_file(sm, scratch, false);TEST_NO_ERROR(result);memset(scratch, 'x', strlen(scratch));TEST_CHECK(strcmp(result.buffer->filename, path)==0);srn_sm_shutdown(sm);unlink(path);} | ) |
| TEST_IN_FIBER | ( | sm_get_buffer | , |
| { char path[PATH_MAX];TEST_ASSERT(sm_make_temp_file(path, "test content")==0);srn_sm_t *sm=srn_sm_init(ctx);auto result=srn_sm_read_buffer_file(sm, path, false);TEST_NO_ERROR(result);srn_sm_buffer_t *buf=srn_sm_get_buffer(sm, result.id);ASSERT_NOT_NULL(buf);TEST_CHECK(srn_sm_buffer_len(buf)==13);TEST_CHECK(memcmp(srn_sm_buffer_data(buf), "test content", 12)==0);TEST_CHECK(strcmp(buf->filename, path)==0);srn_sm_shutdown(sm);unlink(path);} | ) |
| TEST_NO_ERROR | ( | accepted | ) |
| TEST_NO_ERROR | ( | again | ) |
| TEST_NO_ERROR | ( | first | ) |
| TEST_NO_ERROR | ( | result | ) |
| TEST_NO_ERROR | ( | second | ) |
|
static |
Definition at line 322 of file source_manager_tests.h.
|
static |
Definition at line 69 of file source_manager_tests.h.
| unlink | ( | path | ) |
| unlink | ( | path1 | ) |
| unlink | ( | path2 | ) |
| auto accepted = srn_sm_buffer_file(sm, path2, false) |
Definition at line 311 of file source_manager_tests.h.
| auto again = srn_sm_buffer_file(sm, path, false) |
Definition at line 263 of file source_manager_tests.h.
| void* arg |
Definition at line 296 of file source_manager_tests.h.
| sm buffer_counts = UINT16_MAX |
Definition at line 305 of file source_manager_tests.h.
| * done = true |
Definition at line 318 of file source_manager_tests.h.
| auto failed = srn_sm_buffer_file(sm, path, true) |
Definition at line 259 of file source_manager_tests.h.
| int fd = open(path, O_WRONLY | O_TRUNC) |
Definition at line 202 of file source_manager_tests.h.
| auto first = srn_sm_buffer_file(sm, path, false) |
Definition at line 198 of file source_manager_tests.h.
| const size_t len = sizeof(content) - 1 |
Definition at line 109 of file source_manager_tests.h.
| return nullptr |
Definition at line 319 of file source_manager_tests.h.
| char path[PATH_MAX] |
Definition at line 111 of file source_manager_tests.h.
| char path1[PATH_MAX] |
Definition at line 298 of file source_manager_tests.h.
| char path2[PATH_MAX] |
Definition at line 299 of file source_manager_tests.h.
| unsigned char* poison[8] |
Definition at line 118 of file source_manager_tests.h.
| auto refused = srn_sm_buffer_file(sm, path1, false) |
Definition at line 306 of file source_manager_tests.h.
| auto result = srn_sm_buffer_file(sm, path, false) |
Definition at line 127 of file source_manager_tests.h.
| auto second = srn_sm_buffer_file(sm, path, true) |
Definition at line 207 of file source_manager_tests.h.
| srn_sm_t * sm = srn_sm_init(ctx) |
Definition at line 114 of file source_manager_tests.h.