123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- // Not sure where to begin with gtest?
- //
- // What can I test with gtest?
- //
- // googletest/googletest/docs/primer.md
- #include <string.h>
- #include "utils.h"
- #include "gtest/gtest.h"
- /*
- int randint(int N);
- int randrange(int M, int N);
- char *repr(const char *data);
- const char *strnstr(const char *source, int len, const char *needle);
- int rstrnstr(const char *buffer, int len, const char *find);
- int string_insert(char *buffer, int max_length, int pos, const char *insert);
- void pcopy(char *pstring, char *str);
- */
- namespace {
- TEST(UtilsRandRange, rangehits_10k) {
- int x;
- int rmin = 5, rmax = 200;
- int max = -rmax, min = rmax * 2;
- for (x = 0; x < 10000; x++) {
- int r = randrange(rmin, rmax);
- if (r < min)
- min = r;
- if (r > max)
- max = r;
- }
- ASSERT_EQ(min, rmin);
- ASSERT_EQ(max, rmax);
- }
- TEST(UtilsRandInt, rangeint_10k) {
- int x;
- int rmax = 200;
- int max = -rmax, min = rmax * 2;
- for (x = 0; x < 10000; x++) {
- int r = randint(rmax);
- if (r < min)
- min = r;
- if (r > max)
- max = r;
- }
- ASSERT_EQ(min, 0);
- ASSERT_EQ(max, rmax - 1);
- }
- TEST(UtilsStrNStr, strnstr) {
- // const char *strnstr(const char *source, int len, const char *needle);
- char buffer[20];
- int size = sizeof(buffer);
- memset(buffer, ' ', size);
- ASSERT_EQ(strnstr(buffer, size, "?"), (char *)NULL);
- buffer[10] = '?';
- ASSERT_EQ(strnstr(buffer, size, "?"), &buffer[10]);
- ASSERT_EQ(strnstr(buffer, 10, "?"), (char *)NULL);
- buffer[11] = '!';
- ASSERT_EQ(strnstr(buffer, size, "?!"), &buffer[10]);
- ASSERT_EQ(strnstr(buffer, size, "??"), (char *)NULL);
- // Matches first char, but the length doesn't allow for a complete match.
- ASSERT_EQ(strnstr(buffer, 10, "?!"), (char *)NULL);
- // There, enough chars to find a match
- ASSERT_EQ(strnstr(buffer, 11, "?!"), &buffer[10]);
- buffer[2] = '?';
- buffer[5] = '?';
- buffer[1] = '!';
- // First char matches, but not complete
- ASSERT_EQ(strnstr(buffer, 10, "?!"), (char *)NULL);
- ASSERT_EQ(strnstr(buffer, 11, "?!"), &buffer[10]);
- }
- TEST(UtilsStringInsert, strin) {
- // int string_insert(char *buffer, int max_length, int pos, const char
- // *insert);
- char buffer[20];
- int size = sizeof(buffer);
- memset(buffer, 1, size);
- strcpy(buffer, "STARTEND");
- ASSERT_EQ(string_insert(buffer, size, 5, "XX"), 1);
- ASSERT_EQ(strncmp(buffer + 5, "XX", 2), 0);
- ASSERT_STREQ(buffer, "STARTXXEND");
- ASSERT_EQ(string_insert(buffer, size, 5, "ZZZ"), 1);
- ASSERT_STREQ(buffer, "STARTZZZXXEND");
- // 13 chars
- ASSERT_EQ(string_insert(buffer, size, 0, "12345"), 1);
- // 18 chars
- ASSERT_STREQ(buffer, "12345STARTZZZXXEND");
- ASSERT_EQ(string_insert(buffer, size, 5, "FAIL"), 0);
- ASSERT_EQ(string_insert(buffer, size, size, "!"), 0);
- ASSERT_EQ(string_insert(buffer, size, strlen(buffer), "!"), 1);
- ASSERT_STREQ(buffer, "12345STARTZZZXXEND!");
- // String is at max size.
- ASSERT_EQ(strlen(buffer), size - 1);
- // Can't insert base the end of the buffer
- ASSERT_EQ(string_insert(buffer, size, strlen(buffer), "!"), 0);
- ASSERT_STREQ(buffer, "12345STARTZZZXXEND!");
- }
- } // namespace
|