Skip to content

Commit e3ff5ce

Browse files
committed
#178-Test CppStringT::zfill() with char and wchar_t
Completed. Validated. Notice: fixed erroneous implementation ad erroneous testing of ljust() and rjust()!
1 parent aa60e6a commit e3ff5ce

File tree

2 files changed

+102
-20
lines changed

2 files changed

+102
-20
lines changed

cpp-strings-tests/cpp-strings-tests.cpp

Lines changed: 98 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1580,25 +1580,25 @@ namespace cppstringstests
15801580
Assert::AreEqual("abc", s.ljust(1).c_str());
15811581
Assert::AreEqual("abc", s.ljust(2).c_str());
15821582
Assert::AreEqual("abc", s.ljust(3).c_str());
1583-
Assert::AreEqual("abc ", s.ljust(4).c_str());
1584-
Assert::AreEqual("abc ", s.ljust(5).c_str());
1583+
Assert::AreEqual(" abc", s.ljust(4).c_str());
1584+
Assert::AreEqual(" abc", s.ljust(5).c_str());
15851585
Assert::AreEqual("abc", s.ljust(1).c_str());
15861586
Assert::AreEqual("abc", s.ljust(2).c_str());
15871587
Assert::AreEqual("abc", s.ljust(3).c_str());
1588-
Assert::AreEqual("abc.", s.ljust(4, '.').c_str());
1589-
Assert::AreEqual("abc..", s.ljust(5, '.').c_str());
1588+
Assert::AreEqual(".abc", s.ljust(4, '.').c_str());
1589+
Assert::AreEqual("..abc", s.ljust(5, '.').c_str());
15901590

15911591
pcs::CppWString ws(L"abc");
15921592
Assert::AreEqual(L"abc", ws.ljust(1).c_str());
15931593
Assert::AreEqual(L"abc", ws.ljust(2).c_str());
15941594
Assert::AreEqual(L"abc", ws.ljust(3).c_str());
1595-
Assert::AreEqual(L"abc ", ws.ljust(4).c_str());
1596-
Assert::AreEqual(L"abc ", ws.ljust(5).c_str());
1595+
Assert::AreEqual(L" abc", ws.ljust(4).c_str());
1596+
Assert::AreEqual(L" abc", ws.ljust(5).c_str());
15971597
Assert::AreEqual(L"abc", ws.ljust(1).c_str());
15981598
Assert::AreEqual(L"abc", ws.ljust(2).c_str());
15991599
Assert::AreEqual(L"abc", ws.ljust(3).c_str());
1600-
Assert::AreEqual(L"abc.", ws.ljust(4, '.').c_str());
1601-
Assert::AreEqual(L"abc..", ws.ljust(5, '.').c_str());
1600+
Assert::AreEqual(L".abc", ws.ljust(4, '.').c_str());
1601+
Assert::AreEqual(L"..abc", ws.ljust(5, '.').c_str());
16021602
}
16031603

16041604
TEST_METHOD(lower)
@@ -2276,25 +2276,25 @@ namespace cppstringstests
22762276
Assert::AreEqual("abc", s.rjust(1).c_str());
22772277
Assert::AreEqual("abc", s.rjust(2).c_str());
22782278
Assert::AreEqual("abc", s.rjust(3).c_str());
2279-
Assert::AreEqual(" abc", s.rjust(4).c_str());
2280-
Assert::AreEqual(" abc", s.rjust(5).c_str());
2279+
Assert::AreEqual("abc ", s.rjust(4).c_str());
2280+
Assert::AreEqual("abc ", s.rjust(5).c_str());
22812281
Assert::AreEqual("abc", s.rjust(1).c_str());
22822282
Assert::AreEqual("abc", s.rjust(2).c_str());
22832283
Assert::AreEqual("abc", s.rjust(3).c_str());
2284-
Assert::AreEqual(".abc", s.rjust(4, '.').c_str());
2285-
Assert::AreEqual("..abc", s.rjust(5, '.').c_str());
2284+
Assert::AreEqual("abc.", s.rjust(4, '.').c_str());
2285+
Assert::AreEqual("abc..", s.rjust(5, '.').c_str());
22862286

22872287
pcs::CppWString ws(L"abc");
22882288
Assert::AreEqual(L"abc", ws.rjust(1).c_str());
22892289
Assert::AreEqual(L"abc", ws.rjust(2).c_str());
22902290
Assert::AreEqual(L"abc", ws.rjust(3).c_str());
2291-
Assert::AreEqual(L" abc", ws.rjust(4).c_str());
2292-
Assert::AreEqual(L" abc", ws.rjust(5).c_str());
2291+
Assert::AreEqual(L"abc ", ws.rjust(4).c_str());
2292+
Assert::AreEqual(L"abc ", ws.rjust(5).c_str());
22932293
Assert::AreEqual(L"abc", ws.rjust(1).c_str());
22942294
Assert::AreEqual(L"abc", ws.rjust(2).c_str());
22952295
Assert::AreEqual(L"abc", ws.rjust(3).c_str());
2296-
Assert::AreEqual(L".abc", ws.rjust(4, '.').c_str());
2297-
Assert::AreEqual(L"..abc", ws.rjust(5, '.').c_str());
2296+
Assert::AreEqual(L"abc.", ws.rjust(4, '.').c_str());
2297+
Assert::AreEqual(L"abc..", ws.rjust(5, '.').c_str());
22982298
}
22992299

23002300
TEST_METHOD(rpartition)
@@ -3977,5 +3977,87 @@ namespace cppstringstests
39773977

39783978
}
39793979

3980+
TEST_METHOD(zfill)
3981+
{
3982+
CppString s("1.23");
3983+
Assert::AreEqual("1.23", s.zfill(0).c_str());
3984+
Assert::AreEqual("1.23", s.zfill(1).c_str());
3985+
Assert::AreEqual("1.23", s.zfill(2).c_str());
3986+
Assert::AreEqual("1.23", s.zfill(3).c_str());
3987+
Assert::AreEqual("1.23", s.zfill(4).c_str());
3988+
Assert::AreEqual("01.23", s.zfill(5).c_str());
3989+
Assert::AreEqual("001.23", s.zfill(6).c_str());
3990+
3991+
s = '+' + s;
3992+
Assert::AreEqual("+1.23", s.zfill(0).c_str());
3993+
Assert::AreEqual("+1.23", s.zfill(1).c_str());
3994+
Assert::AreEqual("+1.23", s.zfill(2).c_str());
3995+
Assert::AreEqual("+1.23", s.zfill(3).c_str());
3996+
Assert::AreEqual("+1.23", s.zfill(4).c_str());
3997+
Assert::AreEqual("+1.23", s.zfill(5).c_str());
3998+
Assert::AreEqual("+01.23", s.zfill(6).c_str());
3999+
Assert::AreEqual("+001.23", s.zfill(7).c_str());
4000+
4001+
s[0] = '-';
4002+
Assert::AreEqual("-1.23", s.zfill(0).c_str());
4003+
Assert::AreEqual("-1.23", s.zfill(1).c_str());
4004+
Assert::AreEqual("-1.23", s.zfill(2).c_str());
4005+
Assert::AreEqual("-1.23", s.zfill(3).c_str());
4006+
Assert::AreEqual("-1.23", s.zfill(4).c_str());
4007+
Assert::AreEqual("-1.23", s.zfill(5).c_str());
4008+
Assert::AreEqual("-01.23", s.zfill(6).c_str());
4009+
Assert::AreEqual("-001.23", s.zfill(7).c_str());
4010+
4011+
s[0] = '*';
4012+
Assert::AreEqual("*1.23", s.zfill(0).c_str());
4013+
Assert::AreEqual("*1.23", s.zfill(1).c_str());
4014+
Assert::AreEqual("*1.23", s.zfill(2).c_str());
4015+
Assert::AreEqual("*1.23", s.zfill(3).c_str());
4016+
Assert::AreEqual("*1.23", s.zfill(4).c_str());
4017+
Assert::AreEqual("*1.23", s.zfill(5).c_str());
4018+
Assert::AreEqual("0*1.23", s.zfill(6).c_str());
4019+
Assert::AreEqual("00*1.23", s.zfill(7).c_str());
4020+
4021+
4022+
CppWString ws(L"1.23");
4023+
Assert::AreEqual(L"1.23", ws.zfill(0).c_str());
4024+
Assert::AreEqual(L"1.23", ws.zfill(1).c_str());
4025+
Assert::AreEqual(L"1.23", ws.zfill(2).c_str());
4026+
Assert::AreEqual(L"1.23", ws.zfill(3).c_str());
4027+
Assert::AreEqual(L"1.23", ws.zfill(4).c_str());
4028+
Assert::AreEqual(L"01.23", ws.zfill(5).c_str());
4029+
Assert::AreEqual(L"001.23", ws.zfill(6).c_str());
4030+
4031+
ws = L'+' + ws;
4032+
Assert::AreEqual(L"+1.23", ws.zfill(0).c_str());
4033+
Assert::AreEqual(L"+1.23", ws.zfill(1).c_str());
4034+
Assert::AreEqual(L"+1.23", ws.zfill(2).c_str());
4035+
Assert::AreEqual(L"+1.23", ws.zfill(3).c_str());
4036+
Assert::AreEqual(L"+1.23", ws.zfill(4).c_str());
4037+
Assert::AreEqual(L"+1.23", ws.zfill(5).c_str());
4038+
Assert::AreEqual(L"+01.23", ws.zfill(6).c_str());
4039+
Assert::AreEqual(L"+001.23", ws.zfill(7).c_str());
4040+
4041+
ws[0] = L'-';
4042+
Assert::AreEqual(L"-1.23", ws.zfill(0).c_str());
4043+
Assert::AreEqual(L"-1.23", ws.zfill(1).c_str());
4044+
Assert::AreEqual(L"-1.23", ws.zfill(2).c_str());
4045+
Assert::AreEqual(L"-1.23", ws.zfill(3).c_str());
4046+
Assert::AreEqual(L"-1.23", ws.zfill(4).c_str());
4047+
Assert::AreEqual(L"-1.23", ws.zfill(5).c_str());
4048+
Assert::AreEqual(L"-01.23", ws.zfill(6).c_str());
4049+
Assert::AreEqual(L"-001.23", ws.zfill(7).c_str());
4050+
4051+
ws[0] = L'*';
4052+
Assert::AreEqual(L"*1.23", ws.zfill(0).c_str());
4053+
Assert::AreEqual(L"*1.23", ws.zfill(1).c_str());
4054+
Assert::AreEqual(L"*1.23", ws.zfill(2).c_str());
4055+
Assert::AreEqual(L"*1.23", ws.zfill(3).c_str());
4056+
Assert::AreEqual(L"*1.23", ws.zfill(4).c_str());
4057+
Assert::AreEqual(L"*1.23", ws.zfill(5).c_str());
4058+
Assert::AreEqual(L"0*1.23", ws.zfill(6).c_str());
4059+
Assert::AreEqual(L"00*1.23", ws.zfill(7).c_str());
4060+
}
4061+
39804062
};
39814063
}

cpp-strings/cppstrings.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1087,7 +1087,7 @@ namespace pcs // i.e. "pythonic c++ strings"
10871087
if (this->size() >= width)
10881088
return *this;
10891089
else
1090-
return *this + CppStringT(width - this->size(), fillch);
1090+
return CppStringT(width - this->size(), fillch) + *this;
10911091
}
10921092

10931093

@@ -1380,7 +1380,7 @@ namespace pcs // i.e. "pythonic c++ strings"
13801380
if (this->size() >= width)
13811381
return *this;
13821382
else
1383-
return CppStringT(width - this->size(), fillch) + *this;
1383+
return *this + CppStringT(width - this->size(), fillch);
13841384
}
13851385

13861386

@@ -1825,9 +1825,9 @@ namespace pcs // i.e. "pythonic c++ strings"
18251825

18261826
const size_type padding_width = width - this->size();
18271827
if ((*this)[0] == '+' || (*this)[0] == '-')
1828-
return (*this)[0] + this->substr(1, this->size() - 1).ljust(padding_width, value_type('0'));
1828+
return (*this)[0] + this->substr(1, this->size() - 1).ljust(width-1, value_type('0'));
18291829
else
1830-
return this->ljust(padding_width, value_type('0'));
1830+
return this->ljust(width, value_type('0'));
18311831
}
18321832

18331833
};

0 commit comments

Comments
 (0)