1b02777c1SAndrew Lindesay /*
2*bf866d5eSAndrew Lindesay * Copyright 2023-2024, Andrew Lindesay <apl@lindesay.co.nz>.
3b02777c1SAndrew Lindesay * All rights reserved. Distributed under the terms of the MIT License.
4b02777c1SAndrew Lindesay */
5b02777c1SAndrew Lindesay #include "StringUtilsTest.h"
6b02777c1SAndrew Lindesay
7b02777c1SAndrew Lindesay #include <String.h>
8b02777c1SAndrew Lindesay
9b02777c1SAndrew Lindesay #include <cppunit/TestCaller.h>
10b02777c1SAndrew Lindesay #include <cppunit/TestSuite.h>
11b02777c1SAndrew Lindesay
12b02777c1SAndrew Lindesay #include "StringUtils.h"
13b02777c1SAndrew Lindesay
14b02777c1SAndrew Lindesay
StringUtilsTest()15b02777c1SAndrew Lindesay StringUtilsTest::StringUtilsTest()
16b02777c1SAndrew Lindesay {
17b02777c1SAndrew Lindesay }
18b02777c1SAndrew Lindesay
19b02777c1SAndrew Lindesay
~StringUtilsTest()20b02777c1SAndrew Lindesay StringUtilsTest::~StringUtilsTest()
21b02777c1SAndrew Lindesay {
22b02777c1SAndrew Lindesay }
23b02777c1SAndrew Lindesay
24b02777c1SAndrew Lindesay
25b02777c1SAndrew Lindesay void
TestStartInSituTrimSpaceAndControl()26b02777c1SAndrew Lindesay StringUtilsTest::TestStartInSituTrimSpaceAndControl()
27b02777c1SAndrew Lindesay {
28b02777c1SAndrew Lindesay BString string = "\t\n Tonic Water";
29b02777c1SAndrew Lindesay
30b02777c1SAndrew Lindesay // ----------------------
31b02777c1SAndrew Lindesay StringUtils::InSituTrimSpaceAndControl(string);
32b02777c1SAndrew Lindesay // ----------------------
33b02777c1SAndrew Lindesay
34b02777c1SAndrew Lindesay const BString expected = "Tonic Water";
35b02777c1SAndrew Lindesay CPPUNIT_ASSERT_EQUAL(expected, string);
36b02777c1SAndrew Lindesay }
37b02777c1SAndrew Lindesay
38b02777c1SAndrew Lindesay
39b02777c1SAndrew Lindesay void
TestEndInSituTrimSpaceAndControl()40b02777c1SAndrew Lindesay StringUtilsTest::TestEndInSituTrimSpaceAndControl()
41b02777c1SAndrew Lindesay {
42b02777c1SAndrew Lindesay BString string = "Tonic Water \x05\t";
43b02777c1SAndrew Lindesay
44b02777c1SAndrew Lindesay // ----------------------
45b02777c1SAndrew Lindesay StringUtils::InSituTrimSpaceAndControl(string);
46b02777c1SAndrew Lindesay // ----------------------
47b02777c1SAndrew Lindesay
48b02777c1SAndrew Lindesay const BString expected = "Tonic Water";
49b02777c1SAndrew Lindesay CPPUNIT_ASSERT_EQUAL(expected, string);
50b02777c1SAndrew Lindesay }
51b02777c1SAndrew Lindesay
52b02777c1SAndrew Lindesay
53b02777c1SAndrew Lindesay void
TestStartAndEndInSituTrimSpaceAndControl()54b02777c1SAndrew Lindesay StringUtilsTest::TestStartAndEndInSituTrimSpaceAndControl()
55b02777c1SAndrew Lindesay {
56b02777c1SAndrew Lindesay BString string = "\x01Tonic Water\x02";
57b02777c1SAndrew Lindesay
58b02777c1SAndrew Lindesay // ----------------------
59b02777c1SAndrew Lindesay StringUtils::InSituTrimSpaceAndControl(string);
60b02777c1SAndrew Lindesay // ----------------------
61b02777c1SAndrew Lindesay
62b02777c1SAndrew Lindesay const BString expected = "Tonic Water";
63b02777c1SAndrew Lindesay CPPUNIT_ASSERT_EQUAL(expected, string);
64b02777c1SAndrew Lindesay }
65b02777c1SAndrew Lindesay
66b02777c1SAndrew Lindesay
67b02777c1SAndrew Lindesay void
TestNoTrimInSituTrimSpaceAndControl()68b02777c1SAndrew Lindesay StringUtilsTest::TestNoTrimInSituTrimSpaceAndControl()
69b02777c1SAndrew Lindesay {
70b02777c1SAndrew Lindesay BString string = "Tonic Water";
71b02777c1SAndrew Lindesay
72b02777c1SAndrew Lindesay // ----------------------
73b02777c1SAndrew Lindesay StringUtils::InSituTrimSpaceAndControl(string);
74b02777c1SAndrew Lindesay // ----------------------
75b02777c1SAndrew Lindesay
76b02777c1SAndrew Lindesay const BString expected = "Tonic Water";
77b02777c1SAndrew Lindesay CPPUNIT_ASSERT_EQUAL(expected, string);
78b02777c1SAndrew Lindesay }
79b02777c1SAndrew Lindesay
80b02777c1SAndrew Lindesay
81e526b618SAndrew Lindesay void
TestInSituStripSpaceAndControl()82e526b618SAndrew Lindesay StringUtilsTest::TestInSituStripSpaceAndControl()
83e526b618SAndrew Lindesay {
84e526b618SAndrew Lindesay BString string = "\x01 To\tnic Wa\nter ";
85e526b618SAndrew Lindesay
86e526b618SAndrew Lindesay // ----------------------
87*bf866d5eSAndrew Lindesay StringUtils::InSituStripSpaceAndControl(string);
88e526b618SAndrew Lindesay // ----------------------
89e526b618SAndrew Lindesay
90e526b618SAndrew Lindesay const BString expected = "TonicWater";
91e526b618SAndrew Lindesay // note intervening space also removed
92e526b618SAndrew Lindesay CPPUNIT_ASSERT_EQUAL(expected, string);
93e526b618SAndrew Lindesay }
94e526b618SAndrew Lindesay
95e526b618SAndrew Lindesay
96e526b618SAndrew Lindesay void
TestNoInSituStripSpaceAndControl()97e526b618SAndrew Lindesay StringUtilsTest::TestNoInSituStripSpaceAndControl()
98e526b618SAndrew Lindesay {
99e526b618SAndrew Lindesay BString string = "Tonic Water";
100e526b618SAndrew Lindesay
101e526b618SAndrew Lindesay // ----------------------
102e526b618SAndrew Lindesay StringUtils::InSituStripSpaceAndControl(string);
103e526b618SAndrew Lindesay // ----------------------
104e526b618SAndrew Lindesay
105e526b618SAndrew Lindesay const BString expected = "TonicWater";
106e526b618SAndrew Lindesay CPPUNIT_ASSERT_EQUAL(expected, string);
107e526b618SAndrew Lindesay }
108e526b618SAndrew Lindesay
109e526b618SAndrew Lindesay
110b02777c1SAndrew Lindesay /*static*/ void
AddTests(BTestSuite & parent)111b02777c1SAndrew Lindesay StringUtilsTest::AddTests(BTestSuite& parent)
112b02777c1SAndrew Lindesay {
113b02777c1SAndrew Lindesay CppUnit::TestSuite& suite = *new CppUnit::TestSuite("StringUtilsTest");
114b02777c1SAndrew Lindesay
115b02777c1SAndrew Lindesay suite.addTest(
116b02777c1SAndrew Lindesay new CppUnit::TestCaller<StringUtilsTest>(
117b02777c1SAndrew Lindesay "StringUtilsTest::TestStartInSituTrimSpaceAndControl",
118b02777c1SAndrew Lindesay &StringUtilsTest::TestStartInSituTrimSpaceAndControl));
119b02777c1SAndrew Lindesay suite.addTest(
120b02777c1SAndrew Lindesay new CppUnit::TestCaller<StringUtilsTest>(
121b02777c1SAndrew Lindesay "StringUtilsTest::TestEndInSituTrimSpaceAndControl",
122b02777c1SAndrew Lindesay &StringUtilsTest::TestEndInSituTrimSpaceAndControl));
123b02777c1SAndrew Lindesay suite.addTest(
124b02777c1SAndrew Lindesay new CppUnit::TestCaller<StringUtilsTest>(
125b02777c1SAndrew Lindesay "StringUtilsTest::TestStartAndEndInSituTrimSpaceAndControl",
126b02777c1SAndrew Lindesay &StringUtilsTest::TestStartAndEndInSituTrimSpaceAndControl));
127b02777c1SAndrew Lindesay suite.addTest(
128b02777c1SAndrew Lindesay new CppUnit::TestCaller<StringUtilsTest>(
129b02777c1SAndrew Lindesay "StringUtilsTest::TestNoTrimInSituTrimSpaceAndControl",
130b02777c1SAndrew Lindesay &StringUtilsTest::TestNoTrimInSituTrimSpaceAndControl));
131b02777c1SAndrew Lindesay
132e526b618SAndrew Lindesay suite.addTest(
133e526b618SAndrew Lindesay new CppUnit::TestCaller<StringUtilsTest>(
134e526b618SAndrew Lindesay "StringUtilsTest::TestNoInSituStripSpaceAndControl",
135e526b618SAndrew Lindesay &StringUtilsTest::TestNoInSituStripSpaceAndControl));
136e526b618SAndrew Lindesay suite.addTest(
137e526b618SAndrew Lindesay new CppUnit::TestCaller<StringUtilsTest>(
138e526b618SAndrew Lindesay "StringUtilsTest::TestInSituStripSpaceAndControl",
139e526b618SAndrew Lindesay &StringUtilsTest::TestInSituStripSpaceAndControl));
140e526b618SAndrew Lindesay
141b02777c1SAndrew Lindesay parent.addTest("StringUtilsTest", &suite);
142b02777c1SAndrew Lindesay }