@@ -3764,5 +3764,84 @@ namespace cppstringstests
37643764 Assert::AreEqual (L" abcdefedcbaea" , wtext.strip (L" ghijZ" ).c_str ());
37653765 Assert::AreEqual (L" abcdefedcbaea" , wtext.strip (L" ABc" ).c_str ());
37663766 }
3767+
3768+ TEST_METHOD (substr)
3769+ {
3770+ CppString text (" AbcDefGhi" );
3771+
3772+ Assert::AreEqual (" AbcDefGhi" , text.substr (0 , 9 ).c_str ());
3773+ Assert::AreEqual (" bcDefGhi" , text.substr (1 , 8 ).c_str ());
3774+ Assert::AreEqual (" cDefGhi" , text.substr (2 , 7 ).c_str ());
3775+ Assert::AreEqual (" DefGhi" , text.substr (3 , 6 ).c_str ());
3776+ Assert::AreEqual (" efGhi" , text.substr (4 , 5 ).c_str ());
3777+ Assert::AreEqual (" fGhi" , text.substr (5 , 4 ).c_str ());
3778+ Assert::AreEqual (" Ghi" , text.substr (6 , 3 ).c_str ());
3779+ Assert::AreEqual (" hi" , text.substr (7 , 2 ).c_str ());
3780+ Assert::AreEqual (" i" , text.substr (8 , 1 ).c_str ());
3781+ Assert::AreEqual (" " , text.substr (9 , 0 ).c_str ());
3782+
3783+ Assert::AreEqual (" AbcDefGhi" , text.substr (0 ).c_str ());
3784+ Assert::AreEqual (" bcDefGhi" , text.substr (1 ).c_str ());
3785+ Assert::AreEqual (" cDefGhi" , text.substr (2 ).c_str ());
3786+ Assert::AreEqual (" DefGhi" , text.substr (3 ).c_str ());
3787+ Assert::AreEqual (" efGhi" , text.substr (4 ).c_str ());
3788+ Assert::AreEqual (" fGhi" , text.substr (5 ).c_str ());
3789+ Assert::AreEqual (" Ghi" , text.substr (6 ).c_str ());
3790+ Assert::AreEqual (" hi" , text.substr (7 ).c_str ());
3791+ Assert::AreEqual (" i" , text.substr (8 ).c_str ());
3792+ Assert::AreEqual (" " , text.substr (9 ).c_str ());
3793+
3794+ Assert::AreEqual (" AbcDefGh" , text.substr (0 , 8 ).c_str ());
3795+ Assert::AreEqual (" bcDefGh" , text.substr (1 , 7 ).c_str ());
3796+ Assert::AreEqual (" cDefG" , text.substr (2 , 5 ).c_str ());
3797+ Assert::AreEqual (" DefGh" , text.substr (3 , 5 ).c_str ());
3798+ Assert::AreEqual (" efGh" , text.substr (4 , 4 ).c_str ());
3799+ Assert::AreEqual (" fG" , text.substr (5 , 2 ).c_str ());
3800+ Assert::AreEqual (" G" , text.substr (6 , 1 ).c_str ());
3801+ Assert::AreEqual (" h" , text.substr (7 , 1 ).c_str ());
3802+ Assert::AreEqual (" i" , text.substr (8 , 3 ).c_str ());
3803+ Assert::AreEqual (" " , text.substr (9 , 0 ).c_str ());
3804+
3805+ Assert::AreEqual (" " , text.substr (10 , 15 ).c_str ());
3806+ Assert::AreEqual (" " , text.substr (21 ).c_str ());
3807+
3808+ CppWString wtext (L" AbcDefGhi" );
3809+
3810+ Assert::AreEqual (L" AbcDefGhi" , wtext.substr (0 , 9 ).c_str ());
3811+ Assert::AreEqual (L" bcDefGhi" , wtext.substr (1 , 8 ).c_str ());
3812+ Assert::AreEqual (L" cDefGhi" , wtext.substr (2 , 7 ).c_str ());
3813+ Assert::AreEqual (L" DefGhi" , wtext.substr (3 , 6 ).c_str ());
3814+ Assert::AreEqual (L" efGhi" , wtext.substr (4 , 5 ).c_str ());
3815+ Assert::AreEqual (L" fGhi" , wtext.substr (5 , 4 ).c_str ());
3816+ Assert::AreEqual (L" Ghi" , wtext.substr (6 , 3 ).c_str ());
3817+ Assert::AreEqual (L" hi" , wtext.substr (7 , 2 ).c_str ());
3818+ Assert::AreEqual (L" i" , wtext.substr (8 , 1 ).c_str ());
3819+ Assert::AreEqual (L" " , wtext.substr (9 , 0 ).c_str ());
3820+
3821+ Assert::AreEqual (L" AbcDefGhi" , wtext.substr (0 ).c_str ());
3822+ Assert::AreEqual (L" bcDefGhi" , wtext.substr (1 ).c_str ());
3823+ Assert::AreEqual (L" cDefGhi" , wtext.substr (2 ).c_str ());
3824+ Assert::AreEqual (L" DefGhi" , wtext.substr (3 ).c_str ());
3825+ Assert::AreEqual (L" efGhi" , wtext.substr (4 ).c_str ());
3826+ Assert::AreEqual (L" fGhi" , wtext.substr (5 ).c_str ());
3827+ Assert::AreEqual (L" Ghi" , wtext.substr (6 ).c_str ());
3828+ Assert::AreEqual (L" hi" , wtext.substr (7 ).c_str ());
3829+ Assert::AreEqual (L" i" , wtext.substr (8 ).c_str ());
3830+ Assert::AreEqual (L" " , wtext.substr (9 ).c_str ());
3831+
3832+ Assert::AreEqual (L" AbcDefGh" , wtext.substr (0 , 8 ).c_str ());
3833+ Assert::AreEqual (L" bcDefGh" , wtext.substr (1 , 7 ).c_str ());
3834+ Assert::AreEqual (L" cDefG" , wtext.substr (2 , 5 ).c_str ());
3835+ Assert::AreEqual (L" DefGh" , wtext.substr (3 , 5 ).c_str ());
3836+ Assert::AreEqual (L" efGh" , wtext.substr (4 , 4 ).c_str ());
3837+ Assert::AreEqual (L" fG" , wtext.substr (5 , 2 ).c_str ());
3838+ Assert::AreEqual (L" G" , wtext.substr (6 , 1 ).c_str ());
3839+ Assert::AreEqual (L" h" , wtext.substr (7 , 1 ).c_str ());
3840+ Assert::AreEqual (L" i" , wtext.substr (8 , 3 ).c_str ());
3841+ Assert::AreEqual (L" " , wtext.substr (9 , 0 ).c_str ());
3842+
3843+ Assert::AreEqual (L" " , wtext.substr (10 , 15 ).c_str ());
3844+ Assert::AreEqual (L" " , wtext.substr (21 ).c_str ());
3845+ }
37673846 };
37683847}
0 commit comments