1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
| /* Copyright 2018 The Chromium OS Authors. All rights reserved.
| * Use of this source code is governed by a BSD-style license that can be
| * found in the LICENSE file.
| *
| * Test util.[ch] module code using gtest.
| */
|
| #include <stdio.h>
| #include <stdlib.h>
| #include <string.h>
| #include <sys/stat.h>
| #include <unistd.h>
|
| #include <gtest/gtest.h>
|
| #include "util.h"
|
| // Sanity check for the strip func.
| TEST(strip, basic) {
| char str[] = " foo\t";
| ASSERT_EQ("foo", std::string(strip(str)));
| }
|
| // Make sure we don't crash with various "null"-like inputs.
| TEST(tokenize, null_stringp) {
| ASSERT_EQ(nullptr, tokenize(nullptr, nullptr));
| ASSERT_EQ(nullptr, tokenize(nullptr, ""));
| ASSERT_EQ(nullptr, tokenize(nullptr, ","));
|
| char *p = nullptr;
| ASSERT_EQ(nullptr, tokenize(&p, nullptr));
| }
|
| // Make sure we don't crash with various "null"-like inputs.
| TEST(tokenize, null_delim) {
| char str[] = "a,b,c";
| char *p = str;
| ASSERT_EQ(str, tokenize(&p, nullptr));
| ASSERT_EQ(nullptr, p);
| ASSERT_EQ(str, std::string("a,b,c"));
|
| p = str;
| ASSERT_EQ(str, tokenize(&p, ""));
| ASSERT_EQ(nullptr, p);
| ASSERT_EQ(str, std::string("a,b,c"));
| }
|
| // Sanity check for the tokenize func.
| TEST(tokenize, basic) {
| char str[] = "a,b,c";
| char *p = str;
| ASSERT_EQ("a", std::string(tokenize(&p, ",")));
| ASSERT_EQ("b", std::string(tokenize(&p, ",")));
| ASSERT_EQ("c", std::string(tokenize(&p, ",")));
| ASSERT_EQ(nullptr, p);
| ASSERT_EQ(nullptr, tokenize(&p, ","));
| }
|
| // Check edge case with an empty string.
| TEST(tokenize, empty_string) {
| char str[] = "";
| char *p = str;
| ASSERT_EQ("", std::string(tokenize(&p, ",")));
| ASSERT_EQ(nullptr, p);
| ASSERT_EQ(nullptr, tokenize(&p, ","));
| }
|
| // Check behavior with empty tokens at the start/middle/end.
| TEST(tokenize, empty_tokens) {
| char str[] = ",,a,b,,,c,,";
| char *p = str;
| ASSERT_EQ("", std::string(tokenize(&p, ",")));
| ASSERT_EQ("", std::string(tokenize(&p, ",")));
| ASSERT_EQ("a", std::string(tokenize(&p, ",")));
| ASSERT_EQ("b", std::string(tokenize(&p, ",")));
| ASSERT_EQ("", std::string(tokenize(&p, ",")));
| ASSERT_EQ("", std::string(tokenize(&p, ",")));
| ASSERT_EQ("c", std::string(tokenize(&p, ",")));
| ASSERT_EQ("", std::string(tokenize(&p, ",")));
| ASSERT_EQ("", std::string(tokenize(&p, ",")));
| ASSERT_EQ(nullptr, p);
| ASSERT_EQ(nullptr, tokenize(&p, ","));
| }
|
|