Commit: ff7a46cfad5eb824682594122afa6d2bf0e59ae4
Author: Bastien Montagne
Date:   Sat Jun 27 10:22:56 2015 +0200
Branches: master
https://developer.blender.org/rBff7a46cfad5eb824682594122afa6d2bf0e59ae4

GTests for new 'end' option of `BLI_str_partition_ex()`.

===================================================================

M       tests/gtests/blenlib/BLI_string_test.cc

===================================================================

diff --git a/tests/gtests/blenlib/BLI_string_test.cc 
b/tests/gtests/blenlib/BLI_string_test.cc
index 4c5c410..b99c67a 100644
--- a/tests/gtests/blenlib/BLI_string_test.cc
+++ b/tests/gtests/blenlib/BLI_string_test.cc
@@ -150,6 +150,37 @@ TEST(string, StrRPartition)
        }
 }
 
+/* BLI_str_partition_ex */
+TEST(string, StrPartitionEx)
+{
+       const char delim[] = {'-', '.', '_', '~', '\\', '\0'};
+       char *sep, *suf;
+       size_t pre_ln;
+
+       /* Only considering 'from_right' cases here. */
+
+       {
+               const char *str = "mat.e-r_ia.l";
+
+               /* "mat.e-r_ia.l" over "mat.e-r" -> "mat.e", '.', "r_ia.l", 3 */
+               pre_ln = BLI_str_partition_ex(str, str + 6, delim, &sep, &suf, 
true);
+               EXPECT_EQ(5, pre_ln);
+               EXPECT_EQ(&str[5], sep);
+               EXPECT_STREQ("r_ia.l", suf);
+       }
+
+       /* Corner cases. */
+       {
+               const char *str = "mate.rial";
+
+               /* "mate.rial" over "mate" -> "mate.rial", NULL, NULL, 4 */
+               pre_ln = BLI_str_partition_ex(str, str + 4, delim, &sep, &suf, 
true);
+               EXPECT_EQ(4, pre_ln);
+               EXPECT_EQ(NULL, sep);
+               EXPECT_EQ(NULL, suf);
+       }
+}
+
 /* BLI_str_partition_utf8 */
 TEST(string, StrPartitionUtf8)
 {
@@ -268,6 +299,37 @@ TEST(string, StrRPartitionUtf8)
        }
 }
 
+/* BLI_str_partition_ex_utf8 */
+TEST(string, StrPartitionExUtf8)
+{
+       const unsigned int delim[] = {'-', '.', '_', 0x00F1 /* n tilde */, 
0x262F /* ying-yang */, '\0'};
+       char *sep, *suf;
+       size_t pre_ln;
+
+       /* Only considering 'from_right' cases here. */
+
+       {
+               const char *str = "ma\xc3\xb1te-r\xe2\x98\xafial";
+
+               /* "ma\xc3\xb1te-r\xe2\x98\xafial" over "ma\xc3\xb1te" -> "ma", 
'\xc3\xb1', "te-r\xe2\x98\xafial", 2 */
+               pre_ln = BLI_str_partition_ex_utf8(str, str + 6, delim, &sep, 
&suf, true);
+               EXPECT_EQ(2, pre_ln);
+               EXPECT_EQ(&str[2], sep);
+               EXPECT_STREQ("te-r\xe2\x98\xafial", suf);
+       }
+
+       /* Corner cases. */
+       {
+               const char *str = "mate\xe2\x98\xafrial";
+
+               /* "mate\xe2\x98\xafrial" over "mate" -> 
"mate\xe2\x98\xafrial", NULL, NULL, 4 */
+               pre_ln = BLI_str_partition_ex_utf8(str, str + 4, delim, &sep, 
&suf, true);
+               EXPECT_EQ(4, pre_ln);
+               EXPECT_EQ(NULL, sep);
+               EXPECT_EQ(NULL, suf);
+       }
+}
+
 /* BLI_str_format_int_grouped */
 TEST(string, StrFormatIntGrouped)
 {

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to