1 // license_test.h written by Mitchell Foral. mitchell<att>caladbolg.net.
2 // See COPYING for license information.
9 #include "../../src/licenses.h"
11 void src_vs_expected_tests() {
12 const char *src_licenses = "../src_licenses/";
13 char src[FILENAME_MAX];
14 strncpy(src, src_licenses, strlen(src_licenses));
15 char *s_p = src + strlen(src_licenses);
17 const char *expected_licenses = "../expected_licenses/";
18 char expected[FILENAME_MAX];
19 strncpy(expected, expected_licenses, strlen(expected_licenses));
20 char *e_p = expected + strlen(expected_licenses);
23 DIR *d = opendir(src_licenses);
25 while ((file = readdir(d))) {
26 if (strcmp((const char *)file->d_name, ".") != 0 &&
27 strcmp((const char *)file->d_name, "..") != 0) {
31 length = strlen(file->d_name);
32 strncpy(s_p, (const char *)file->d_name, length);
33 *(s_p + length) = '\0';
35 p = file->d_name + length;
36 while (*p != '.' && p > file->d_name) p--;
37 length = p - file->d_name;
38 strncpy(e_p, (const char *)file->d_name, length);
39 *(e_p + length) = '\0';
40 FILE *f = fopen((const char *)expected, "rb");
42 SourceFile *sf = ohcount_sourcefile_new((const char *)src);
43 LicenseList *iter = ohcount_sourcefile_get_license_list(sf)->head;
44 char line[40]; // max license name size
45 for (; fgets(line, sizeof(line), f); iter = iter->next) {
46 p = strstr(line, "\r");
47 if (p == NULL) p = strstr(line, "\n");
49 assert(iter->lic->name);
50 assert(strcmp(line, iter->lic->name) == 0);
53 ohcount_sourcefile_free(sf);
61 void very_long_file_test() {
63 char *a = malloc(len);
68 SourceFile *sf = ohcount_sourcefile_new("foo.c");
69 ohcount_sourcefile_set_contents(sf, a);
70 strncpy(a, "int = 1;\n", strlen("int = 1;\n"));
71 ohcount_sourcefile_get_license_list(sf);
74 void all_license_tests() {
75 src_vs_expected_tests();
76 very_long_file_test();