repo_index_tests.c (1580B)
1 #include "writer/gopher/repo_index.h" 2 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <string.h> 6 7 #include "git/repo.h" 8 #include "test_utils.h" 9 #include "utest.h" 10 11 UTEST(gopher_repo_index, basic) { 12 char* buf = NULL; 13 size_t size = 0; 14 FILE* out = open_memstream(&buf, &size); 15 16 GopherRepoIndex* index = gopher_repoindex_create(out); 17 ASSERT_NE(NULL, index); 18 19 GitRepo r1 = { 20 .short_name = "repo1", 21 .description = "Desc 1", 22 .owner = "Owner 1", 23 .last_commit_time = 1702031400, 24 }; 25 26 gopher_repoindex_begin(index); 27 gopher_repoindex_add_repo(index, &r1); 28 gopher_repoindex_end(index); 29 gopher_repoindex_free(index); 30 fclose(out); 31 32 ASSERT_NE(NULL, buf); 33 34 /* Verify Header */ 35 EXPECT_STR_SEQUENCE(buf, "Repositories", "Name", "Description", 36 "Last commit"); 37 38 /* Verify Repo Row */ 39 EXPECT_STR_SEQUENCE(buf, "[1|", "repo1", "Desc 1", "2023-12-08 10:30", 40 "|repo1/log.gph"); 41 42 free(buf); 43 } 44 45 UTEST(gopher_repo_index, multiple) { 46 char* buf = NULL; 47 size_t size = 0; 48 FILE* out = open_memstream(&buf, &size); 49 50 GopherRepoIndex* index = gopher_repoindex_create(out); 51 52 GitRepo r1 = {.short_name = "a", .description = "d1", .owner = "o1"}; 53 GitRepo r2 = {.short_name = "b", .description = "d2", .owner = "o2"}; 54 55 gopher_repoindex_begin(index); 56 gopher_repoindex_add_repo(index, &r1); 57 gopher_repoindex_add_repo(index, &r2); 58 gopher_repoindex_end(index); 59 gopher_repoindex_free(index); 60 fclose(out); 61 62 ASSERT_NE(NULL, buf); 63 EXPECT_STR_SEQUENCE(buf, "a", "d1", "b", "d2"); 64 65 free(buf); 66 }