Use copy-and-swap in Tokenizers
Ensures that the classes behave consistently when copied, moved, copy assigned, and move assigned.
This commit is contained in:
@ -101,6 +101,38 @@ TEST(Tokenizer, move_constructor)
|
||||
ASSERT_EQ(u.count(), 3);
|
||||
}
|
||||
|
||||
TEST(Tokenizer, copy_assignment)
|
||||
{
|
||||
Tokenizer t(" test word ", " ");
|
||||
Tokenizer u(" test2 word2 other2 ", " ");
|
||||
ASSERT_THAT(t.next(), Eq("test"));
|
||||
ASSERT_THAT(t.next(), Eq("word"));
|
||||
ASSERT_EQ(t.count(), 2);
|
||||
Tokenizer v = u;
|
||||
u = t;
|
||||
ASSERT_THAT(u.next(), Eq("test"));
|
||||
ASSERT_THAT(u.next(), Eq("word"));
|
||||
ASSERT_EQ(u.count(), 2);
|
||||
|
||||
ASSERT_THAT(v.next(), Eq("test2"));
|
||||
ASSERT_THAT(v.next(), Eq("word2"));
|
||||
ASSERT_THAT(v.next(), Eq("other2"));
|
||||
ASSERT_EQ(v.count(), 3);
|
||||
}
|
||||
|
||||
TEST(Tokenizer, move_assignment)
|
||||
{
|
||||
Tokenizer t(" test word ", " ");
|
||||
ASSERT_THAT(t.next(), Eq("test"));
|
||||
ASSERT_THAT(t.next(), Eq("word"));
|
||||
ASSERT_EQ(t.count(), 2);
|
||||
t = Tokenizer("test new word ", " ");
|
||||
ASSERT_THAT(t.next(), Eq("test"));
|
||||
ASSERT_THAT(t.next(), Eq("new"));
|
||||
ASSERT_THAT(t.next(), Eq("word"));
|
||||
ASSERT_EQ(t.count(), 3);
|
||||
}
|
||||
|
||||
TEST(Tokenizer, no_separator_path)
|
||||
{
|
||||
Tokenizer t("one", ":");
|
||||
@ -223,6 +255,38 @@ TEST(ValueTokenizer, move_constructor)
|
||||
ASSERT_EQ(u.count(), 3);
|
||||
}
|
||||
|
||||
TEST(ValueTokenizer, copy_assignment)
|
||||
{
|
||||
ValueTokenizer t(" test word ", " ");
|
||||
ValueTokenizer u(" test2 word2 other2 ", " ");
|
||||
ASSERT_THAT(t.next_string(), Eq("test"));
|
||||
ASSERT_THAT(t.next_string(), Eq("word"));
|
||||
ASSERT_EQ(t.count(), 2);
|
||||
ValueTokenizer v = u;
|
||||
u = t;
|
||||
ASSERT_THAT(u.next_string(), Eq("test"));
|
||||
ASSERT_THAT(u.next_string(), Eq("word"));
|
||||
ASSERT_EQ(u.count(), 2);
|
||||
|
||||
ASSERT_THAT(v.next_string(), Eq("test2"));
|
||||
ASSERT_THAT(v.next_string(), Eq("word2"));
|
||||
ASSERT_THAT(v.next_string(), Eq("other2"));
|
||||
ASSERT_EQ(v.count(), 3);
|
||||
}
|
||||
|
||||
TEST(ValueTokenizer, move_assignment)
|
||||
{
|
||||
ValueTokenizer t(" test word ", " ");
|
||||
ASSERT_THAT(t.next_string(), Eq("test"));
|
||||
ASSERT_THAT(t.next_string(), Eq("word"));
|
||||
ASSERT_EQ(t.count(), 2);
|
||||
t = ValueTokenizer("test new word ", " ");
|
||||
ASSERT_THAT(t.next_string(), Eq("test"));
|
||||
ASSERT_THAT(t.next_string(), Eq("new"));
|
||||
ASSERT_THAT(t.next_string(), Eq("word"));
|
||||
ASSERT_EQ(t.count(), 3);
|
||||
}
|
||||
|
||||
TEST(ValueTokenizer, bad_integer)
|
||||
{
|
||||
ValueTokenizer values("f10 f11 f12");
|
||||
|
||||
Reference in New Issue
Block a user