xref: /haiku/src/tests/apps/haikudepot/StringUtilsTest.cpp (revision bf866d5ef7dead2119e2a229ea580e33c67f27a7)
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 }