@@ -12,6 +12,16 @@ TEST(TokenizerTests, EmptyStream) {
12
12
}
13
13
14
14
TEST (TokenizerTests, Double) {
15
+ std::stringstream ss{" 42.0" };
16
+ Tokenizer t (&ss);
17
+
18
+ auto tok = t.GetToken ();
19
+
20
+ EXPECT_TRUE (std::holds_alternative<Tokenizer::Double>(tok));
21
+ EXPECT_EQ (42 , std::get<Tokenizer::Double>(tok).val );
22
+ }
23
+
24
+ TEST (TokenizerTests, Int) {
15
25
std::stringstream ss{" 42" };
16
26
Tokenizer t (&ss);
17
27
@@ -21,6 +31,49 @@ TEST(TokenizerTests, Double) {
21
31
EXPECT_EQ (42 , std::get<Tokenizer::Double>(tok).val );
22
32
}
23
33
34
+ TEST (TokenizerTests, Negative) {
35
+ std::stringstream ss{" -42.5" };
36
+ Tokenizer t (&ss);
37
+
38
+ auto tok = t.GetToken ();
39
+
40
+ EXPECT_TRUE (std::holds_alternative<Tokenizer::Double>(tok));
41
+ EXPECT_EQ (-42.5 , std::get<Tokenizer::Double>(tok).val );
42
+ }
43
+
44
+ TEST (TokenizerTests, StringWithDot) {
45
+ std::stringstream ss{" 42.0.0" };
46
+ Tokenizer t (&ss);
47
+
48
+ auto tok = t.GetToken ();
49
+
50
+ EXPECT_TRUE (std::holds_alternative<Tokenizer::String>(tok));
51
+ EXPECT_EQ (" 42.0.0" , std::get<Tokenizer::String>(tok).str );
52
+ }
53
+
54
+ TEST (TokenizerTests, StringStartsWithNumber) {
55
+ std::stringstream ss{" 1212_foo" };
56
+ Tokenizer t (&ss);
57
+
58
+ EXPECT_EQ (" 1212_foo" , std::get<Tokenizer::String>(t.GetToken ()).str );
59
+ }
60
+
61
+ TEST (TokenizerTests, NumbersWithSlashes) {
62
+ std::stringstream ss{" 0/1/2/" };
63
+ Tokenizer t (&ss);
64
+
65
+ for (int i = 0 ; i < 3 ; ++i) {
66
+ auto tok = t.GetToken ();
67
+ ASSERT_EQ (i, std::get<Tokenizer::Double>(tok).val );
68
+ t.Next ();
69
+ tok = t.GetToken ();
70
+ ASSERT_TRUE (std::holds_alternative<Tokenizer::Slash>(tok));
71
+ t.Next ();
72
+ }
73
+
74
+ EXPECT_TRUE (t.IsEnd ());
75
+ }
76
+
24
77
TEST (TokenizerTests, String) {
25
78
std::stringstream ss{" foo" };
26
79
Tokenizer t (&ss);
@@ -121,10 +174,3 @@ TEST(TokenizerTests, NextLineBeforeEnd) {
121
174
122
175
EXPECT_TRUE (t.IsEnd ());
123
176
}
124
-
125
- TEST (TokenizerTests, ParseStringStartsWithNumber) {
126
- std::stringstream ss{" 1212_foo" };
127
- Tokenizer t (&ss);
128
-
129
- EXPECT_EQ (" 1212_foo" , std::get<Tokenizer::String>(t.GetToken ()).str );
130
- }
0 commit comments