@@ -196,4 +196,55 @@ TEST(StringConversion, ReplaceStringInPlace)
196196 ASSERT_STREQ (" aabbccddxyeeffggxyhhiijjxy" , input.c_str ());
197197}
198198
199+ TEST (StringConversion, TokenizeQuoted)
200+ {
201+ std::vector<std::string> tokens;
202+
203+ StringConversion::TokenizeQuoted (" " , tokens, " " );
204+ ASSERT_EQ (tokens.size (), 0u );
205+ tokens.clear ();
206+
207+ StringConversion::TokenizeQuoted (" hello world test" , tokens, " " );
208+ ASSERT_EQ (tokens.size (), 3u );
209+ ASSERT_STREQ (tokens[0 ].c_str (), " hello" );
210+ ASSERT_STREQ (tokens[1 ].c_str (), " world" );
211+ ASSERT_STREQ (tokens[2 ].c_str (), " test" );
212+ tokens.clear ();
213+
214+ StringConversion::TokenizeQuoted (" user.reva.overleaf.name=\" my first project\" " , tokens,
215+ " " );
216+ ASSERT_EQ (tokens.size (), 1u );
217+ ASSERT_STREQ (tokens[0 ].c_str (), " user.reva.overleaf.name=my first project" );
218+
219+ std::vector<std::string> kv;
220+ StringConversion::TokenizeQuoted (tokens[0 ], kv, " =" );
221+ ASSERT_EQ (kv.size (), 2u );
222+ ASSERT_STREQ (kv[0 ].c_str (), " user.reva.overleaf.name" );
223+ ASSERT_STREQ (kv[1 ].c_str (), " my first project" );
224+ tokens.clear ();
225+ kv.clear ();
226+
227+ std::string attr_line = " sys.acl=\" u:12345:rwxm+dq\" sys.versioning=\" 10\" "
228+ " user.reva.overleaf.name=\" my first project\" " ;
229+ StringConversion::TokenizeQuoted (attr_line, tokens, " " );
230+ ASSERT_EQ (tokens.size (), 3u );
231+ ASSERT_STREQ (tokens[0 ].c_str (), " sys.acl=u:12345:rwxm+dq" );
232+ ASSERT_STREQ (tokens[1 ].c_str (), " sys.versioning=10" );
233+ ASSERT_STREQ (tokens[2 ].c_str (), " user.reva.overleaf.name=my first project" );
234+ tokens.clear ();
235+
236+ StringConversion::TokenizeQuoted (" key=\" value with \\\" quoted\\\" text\" " , tokens,
237+ " =" );
238+ ASSERT_EQ (tokens.size (), 2u );
239+ ASSERT_STREQ (tokens[0 ].c_str (), " key" );
240+ ASSERT_STREQ (tokens[1 ].c_str (), " value with \" quoted\" text" );
241+ tokens.clear ();
242+
243+ StringConversion::TokenizeQuoted (" hello world" , tokens, " " );
244+ ASSERT_EQ (tokens.size (), 2u );
245+ ASSERT_STREQ (tokens[0 ].c_str (), " hello" );
246+ ASSERT_STREQ (tokens[1 ].c_str (), " world" );
247+ tokens.clear ();
248+ }
249+
199250EOSCOMMONTESTING_END
0 commit comments