1
+ #include " gtest/gtest.h"
2
+ #include " tokenize.hpp"
3
+
4
+ using my_algorithm::tokenize;
5
+
6
+ TEST (TokenizeTest, HandlesEmptyString) {
7
+ EXPECT_EQ (tokenize (" " , {' ' , ' ,' }), std::vector<std::string>({}));
8
+ }
9
+
10
+ TEST (TokenizeTest, HandlesNoDelimiters) {
11
+ EXPECT_EQ (tokenize (" hello" , {}), std::vector<std::string>({" hello" }));
12
+ }
13
+
14
+ TEST (TokenizeTest, SingleDelimiterBetweenTokens) {
15
+ EXPECT_EQ (tokenize (" a,b,c" , {' ,' }), std::vector<std::string>({" a" , " b" , " c" }));
16
+ }
17
+
18
+ TEST (TokenizeTest, MultipleDelimitersBetweenTokens) {
19
+ EXPECT_EQ (tokenize (" hello, world!how?are.you" , {' ' , ' ,' , ' !' , ' ?' , ' .' }),
20
+ std::vector<std::string>({" hello" , " world" , " how" , " are" , " you" }));
21
+ }
22
+
23
+ TEST (TokenizeTest, LeadingAndTrailingDelimiters) {
24
+ EXPECT_EQ (tokenize (" ,,test,,case,, " , {' ' , ' ,' }),
25
+ std::vector<std::string>({" test" , " case" }));
26
+ }
27
+
28
+ TEST (TokenizeTest, ConsecutiveDelimiters) {
29
+ EXPECT_EQ (tokenize (" a,, ,b" , {' ,' , ' ' }), std::vector<std::string>({" a" , " b" }));
30
+ }
31
+
32
+ TEST (TokenizeTest, MixedDelimitersAndNoTokens) {
33
+ EXPECT_EQ (tokenize (" , , ," , {' ,' , ' ' }), std::vector<std::string>({}));
34
+ }
35
+
36
+ TEST (TokenizeTest, ComplexRealWorldCase) {
37
+ EXPECT_EQ (tokenize (" John;Doe,42;New York;USA " , {' ' , ' ,' , ' ;' }),
38
+ std::vector<std::string>({" John" , " Doe" , " 42" , " New" , " York" , " USA" }));
39
+ }
0 commit comments