gout_options_tests.c (2772B)
1 #include "gout.h" 2 3 #include <stdlib.h> 4 #include <string.h> 5 6 #include "utest.h" 7 8 UTEST(gout_options, Basic) { 9 const char* argv[] = {"gout", "repo"}; 10 GoutOptions* options = gout_options_create(2, argv); 11 ASSERT_NE(NULL, options); 12 EXPECT_STREQ("repo", options->repodir); 13 EXPECT_EQ((long long)-1, options->log_commit_limit); 14 EXPECT_EQ(NULL, options->cachefile_path); 15 EXPECT_STREQ("", options->baseurl); 16 EXPECT_EQ((int)kRepoWriterTypeHtml, (int)options->writer_type); 17 gout_options_free(options); 18 } 19 20 UTEST(gout_options, LogLimit) { 21 const char* argv[] = {"gout", "-l", "50", "repo"}; 22 GoutOptions* options = gout_options_create(4, argv); 23 ASSERT_NE(NULL, options); 24 EXPECT_STREQ("repo", options->repodir); 25 EXPECT_EQ((long long)50, options->log_commit_limit); 26 gout_options_free(options); 27 } 28 29 UTEST(gout_options, Cachefile) { 30 const char* argv[] = {"gout", "-c", "cache.db", "repo"}; 31 GoutOptions* options = gout_options_create(4, argv); 32 ASSERT_NE(NULL, options); 33 EXPECT_STREQ("repo", options->repodir); 34 EXPECT_STREQ("cache.db", options->cachefile_path); 35 gout_options_free(options); 36 } 37 38 UTEST(gout_options, BaseUrl) { 39 const char* argv[] = {"gout", "-u", "https://example.com", "repo"}; 40 GoutOptions* options = gout_options_create(4, argv); 41 ASSERT_NE(NULL, options); 42 EXPECT_STREQ("https://example.com", options->baseurl); 43 gout_options_free(options); 44 } 45 46 UTEST(gout_options, GopherWriter) { 47 const char* argv[] = {"gout", "-G", "repo"}; 48 GoutOptions* options = gout_options_create(3, argv); 49 ASSERT_NE(NULL, options); 50 EXPECT_EQ((int)kRepoWriterTypeGopher, (int)options->writer_type); 51 gout_options_free(options); 52 } 53 54 UTEST(gout_options, MutuallyExclusiveLogCache) { 55 const char* argv[] = {"gout", "-l", "50", "-c", "cache.db", "repo"}; 56 GoutOptions* options = gout_options_create(6, argv); 57 EXPECT_EQ(NULL, options); 58 } 59 60 UTEST(gout_options, MutuallyExclusiveCacheLog) { 61 const char* argv[] = {"gout", "-c", "cache.db", "-l", "50", "repo"}; 62 GoutOptions* options = gout_options_create(6, argv); 63 EXPECT_EQ(NULL, options); 64 } 65 66 UTEST(gout_options, MissingRepo) { 67 const char* argv[] = {"gout", "-l", "50"}; 68 GoutOptions* options = gout_options_create(3, argv); 69 EXPECT_EQ(NULL, options); 70 } 71 72 UTEST(gout_options, DuplicateRepo) { 73 const char* argv[] = {"gout", "repo1", "repo2"}; 74 GoutOptions* options = gout_options_create(3, argv); 75 EXPECT_EQ(NULL, options); 76 } 77 78 UTEST(gout_options, InvalidLogLimit) { 79 const char* argv[] = {"gout", "-l", "not-a-number", "repo"}; 80 GoutOptions* options = gout_options_create(4, argv); 81 EXPECT_EQ(NULL, options); 82 } 83 84 UTEST(gout_options, NegativeLogLimit) { 85 const char* argv[] = {"gout", "-l", "-10", "repo"}; 86 GoutOptions* options = gout_options_create(4, argv); 87 EXPECT_EQ(NULL, options); 88 }