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