736f6286440eb59eaf0c44261032c339e517d7af
[ossec-hids.git] / src / tests / test_os_zlib.c
1 /* Copyright (C) 2014 Trend Micro Inc.
2  * All rights reserved.
3  *
4  * This program is a free software; you can redistribute it
5  * and/or modify it under the terms of the GNU General Public
6  * License (version 2) as published by the FSF - Free Software
7  * Foundation
8  */
9
10 #include <check.h>
11 #include <stdlib.h>
12 #include "../os_zlib/os_zlib.h"
13
14 Suite *test_suite(void);
15
16 #define TEST_STRING_1 "Hello World!"
17 #define TEST_STRING_2 "Test hello \n test \t test \r World\n"
18 #define BUFFER_LENGTH 200
19
20 START_TEST(test_success1)
21 {
22         char buffer[BUFFER_LENGTH];
23         unsigned long int i1 = os_zlib_compress(TEST_STRING_1, buffer, strlen(TEST_STRING_1), BUFFER_LENGTH);
24
25         ck_assert_uint_ne(i1, 0);
26
27         char buffer2[BUFFER_LENGTH];
28         unsigned long int i2 = os_zlib_uncompress(buffer, buffer2, i1, BUFFER_LENGTH);
29
30         ck_assert_uint_ne(i2, 0);
31         ck_assert_str_eq(buffer2, TEST_STRING_1);
32 }
33 END_TEST
34
35 START_TEST(test_success2)
36 {
37         char buffer[BUFFER_LENGTH];
38         unsigned long int i1 = os_zlib_compress(TEST_STRING_2, buffer, strlen(TEST_STRING_2), BUFFER_LENGTH);
39
40         ck_assert_uint_ne(i1, 0);
41
42         char buffer2[BUFFER_LENGTH];
43         unsigned long int i2 = os_zlib_uncompress(buffer, buffer2, i1, BUFFER_LENGTH);
44
45         ck_assert_uint_ne(i2, 0);
46         ck_assert_str_eq(buffer2, TEST_STRING_2);
47 }
48 END_TEST
49
50 START_TEST(test_failcompress1)
51 {
52         char buffer[BUFFER_LENGTH];
53         unsigned long int i1 = os_zlib_compress(NULL, buffer, strlen(TEST_STRING_1), BUFFER_LENGTH);
54         ck_assert_uint_eq(i1, 0);
55 }
56 END_TEST
57
58 START_TEST(test_failcompress2)
59 {
60         unsigned long int i1 = os_zlib_compress(TEST_STRING_1, NULL, strlen(TEST_STRING_1), BUFFER_LENGTH);
61         ck_assert_uint_eq(i1, 0);
62 }
63 END_TEST
64
65 START_TEST(test_failcompress3)
66 {
67         char buffer[BUFFER_LENGTH];
68         unsigned long int i1 = os_zlib_compress(TEST_STRING_1, buffer, strlen(TEST_STRING_1), 0);
69         ck_assert_uint_eq(i1, 0);
70 }
71 END_TEST
72
73 START_TEST(test_failuncompress1)
74 {
75         char buffer[BUFFER_LENGTH];
76         unsigned long int i1 = os_zlib_compress(TEST_STRING_1, buffer, strlen(TEST_STRING_1), BUFFER_LENGTH);
77         ck_assert_uint_ne(i1, 0);
78
79         char buffer2[BUFFER_LENGTH];
80         unsigned long int i2 = os_zlib_uncompress(NULL, buffer2, i1, BUFFER_LENGTH);
81         ck_assert_uint_eq(i2, 0);
82 }
83 END_TEST
84
85 START_TEST(test_failuncompress2)
86 {
87         char buffer[BUFFER_LENGTH];
88         unsigned long int i1 = os_zlib_compress(TEST_STRING_1, buffer, strlen(TEST_STRING_1), BUFFER_LENGTH);
89         ck_assert_uint_ne(i1, 0);
90
91         unsigned long int i2 = os_zlib_uncompress(buffer, NULL, i1, BUFFER_LENGTH);
92         ck_assert_uint_eq(i2, 0);
93 }
94 END_TEST
95
96 START_TEST(test_failuncompress3)
97 {
98         char buffer[BUFFER_LENGTH];
99         unsigned long int i1 = os_zlib_compress(TEST_STRING_1, buffer, strlen(TEST_STRING_1), BUFFER_LENGTH);
100         ck_assert_uint_ne(i1, 0);
101
102         char buffer2[BUFFER_LENGTH];
103         unsigned long int i2 = os_zlib_uncompress(buffer, buffer2, 0, BUFFER_LENGTH);
104         ck_assert_uint_eq(i2, 0);
105 }
106 END_TEST
107
108 START_TEST(test_failuncompress4)
109 {
110         char buffer[BUFFER_LENGTH];
111         unsigned long int i1 = os_zlib_compress(TEST_STRING_1, buffer, strlen(TEST_STRING_1), BUFFER_LENGTH);
112         ck_assert_uint_ne(i1, 0);
113
114         char buffer2[BUFFER_LENGTH];
115         unsigned long int i2 = os_zlib_uncompress(buffer, buffer2, i1, 0);
116         ck_assert_uint_eq(i2, 0);
117 }
118 END_TEST
119
120
121 Suite *test_suite(void)
122 {
123         Suite *s = suite_create("os_zlib");
124
125         /* Core test case */
126         TCase *tc_core = tcase_create("Core");
127         tcase_add_test(tc_core, test_success1);
128         tcase_add_test(tc_core, test_success2);
129         tcase_add_test(tc_core, test_failcompress1);
130         tcase_add_test(tc_core, test_failcompress2);
131         tcase_add_test(tc_core, test_failcompress3);
132         tcase_add_test(tc_core, test_failuncompress1);
133         tcase_add_test(tc_core, test_failuncompress2);
134         tcase_add_test(tc_core, test_failuncompress3);
135         tcase_add_test(tc_core, test_failuncompress4);
136         suite_add_tcase(s, tc_core);
137
138         return (s);
139 }
140
141 int main(void)
142 {
143         Suite *s = test_suite();
144         SRunner *sr = srunner_create(s);
145         srunner_run_all(sr, CK_NORMAL);
146         int number_failed = srunner_ntests_failed(sr);
147         srunner_free(sr);
148
149         return ((number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE);
150 }