From 92f396733ebc518bcb7a9eae2dd3169d333b82b9 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Sat, 17 Dec 2011 15:53:11 +0000 Subject: convert ReadByteString/WriteByteString from ByteString to OString Nobody ever used the return values anyway, so for reading just return the string and for writing the number of bytes written Doesn't need to be members, make standalone functions Rename to read_lenPrefixed_uInt8s_ToO[U]String and write_lenPrefixed_uInt8s_FromO[U]String, lengthy, but much less unambiguous, seeing as a lot of users of it don't seem to be aware that they read/write pascal-style length prefixed strings, which isn't surprising given the apparent simplicity of their original name. added a unit test --- tools/qa/cppunit/test_stream.cxx | 59 ++++++++++++++++++++++++++++++++++------ 1 file changed, 51 insertions(+), 8 deletions(-) (limited to 'tools/qa/cppunit') diff --git a/tools/qa/cppunit/test_stream.cxx b/tools/qa/cppunit/test_stream.cxx index 77c2b9ed75ae..3e7580f40377 100644 --- a/tools/qa/cppunit/test_stream.cxx +++ b/tools/qa/cppunit/test_stream.cxx @@ -47,11 +47,13 @@ namespace void test_stdstream(); void test_fastostring(); void test_read_cstring(); + void test_read_pstring(); CPPUNIT_TEST_SUITE(Test); CPPUNIT_TEST(test_stdstream); CPPUNIT_TEST(test_fastostring); CPPUNIT_TEST(test_read_cstring); + CPPUNIT_TEST(test_read_pstring); CPPUNIT_TEST_SUITE_END(); }; @@ -67,7 +69,7 @@ namespace char tools_a(78); aMemStream >> tools_a; - CPPUNIT_ASSERT(std_a == 'f'); + CPPUNIT_ASSERT(tools_a == 'f'); iss.seekg(0, std::ios_base::end); //seeking to end doesn't set eof, reading past eof does @@ -98,7 +100,7 @@ namespace //a failed read doesn't change the data, it remains unchanged CPPUNIT_ASSERT(tools_a == 78); //nothing wrong with the stream, so not bad - CPPUNIT_ASSERT(!aMemStream.GetError()); + CPPUNIT_ASSERT(!aMemStream.bad()); //yet, the read didn't succeed CPPUNIT_ASSERT(!aMemStream.good()); @@ -133,18 +135,18 @@ namespace char foo[] = "foobar"; SvMemoryStream aMemStream(RTL_CONSTASCII_STRINGPARAM(foo), STREAM_READ); - rtl::OString aOne = read_uInt8s_AsOString(aMemStream, 3); + rtl::OString aOne = read_uInt8s_ToOString(aMemStream, 3); CPPUNIT_ASSERT(aOne.equalsL(RTL_CONSTASCII_STRINGPARAM("foo"))); - rtl::OString aTwo = read_uInt8s_AsOString(aMemStream, 3); + rtl::OString aTwo = read_uInt8s_ToOString(aMemStream, 3); CPPUNIT_ASSERT(aTwo.equalsL(RTL_CONSTASCII_STRINGPARAM("bar"))); - rtl::OString aThree = read_uInt8s_AsOString(aMemStream, 3); + rtl::OString aThree = read_uInt8s_ToOString(aMemStream, 3); CPPUNIT_ASSERT(!aThree.getLength()); aMemStream.Seek(0); - rtl::OString aFour = read_uInt8s_AsOString(aMemStream, 100); + rtl::OString aFour = read_uInt8s_ToOString(aMemStream, 100); CPPUNIT_ASSERT(aFour.equalsL(RTL_CONSTASCII_STRINGPARAM(foo))); } @@ -153,7 +155,7 @@ namespace char foo[] = "foobar"; SvMemoryStream aMemStream(RTL_CONSTASCII_STRINGPARAM(foo), STREAM_READ); - rtl::OString aOne = read_zeroTerminated_uInt8s_AsOString(aMemStream); + rtl::OString aOne = read_zeroTerminated_uInt8s_ToOString(aMemStream); CPPUNIT_ASSERT(aOne.equalsL(RTL_CONSTASCII_STRINGPARAM("foobar"))); CPPUNIT_ASSERT(!aMemStream.good()); CPPUNIT_ASSERT(!aMemStream.bad()); @@ -161,11 +163,52 @@ namespace aMemStream.Seek(0); foo[3] = 0; - rtl::OString aTwo = read_zeroTerminated_uInt8s_AsOString(aMemStream); + rtl::OString aTwo = read_zeroTerminated_uInt8s_ToOString(aMemStream); CPPUNIT_ASSERT(aTwo.equalsL(RTL_CONSTASCII_STRINGPARAM("foo"))); CPPUNIT_ASSERT(aMemStream.good()); } + void Test::test_read_pstring() + { + char foo[] = "\3foobar"; + SvMemoryStream aMemStream(RTL_CONSTASCII_STRINGPARAM(foo), STREAM_READ); + + rtl::OString aFoo = read_lenPrefixed_uInt8s_ToOString(aMemStream); + CPPUNIT_ASSERT(aFoo.equalsL(RTL_CONSTASCII_STRINGPARAM("foo"))); + CPPUNIT_ASSERT(aMemStream.good()); + CPPUNIT_ASSERT(!aMemStream.bad()); + CPPUNIT_ASSERT(!aMemStream.eof()); + + aMemStream.Seek(0); + foo[0] = 10; + aFoo = read_lenPrefixed_uInt8s_ToOString(aMemStream); + CPPUNIT_ASSERT(aFoo.equalsL(RTL_CONSTASCII_STRINGPARAM("foobar"))); + CPPUNIT_ASSERT(!aMemStream.good()); + CPPUNIT_ASSERT(!aMemStream.bad()); + CPPUNIT_ASSERT(aMemStream.eof()); + + aMemStream.SetNumberFormatInt(NUMBERFORMAT_INT_BIGENDIAN); + aMemStream.Seek(0); + foo[0] = 0; + foo[1] = 3; + aFoo = read_lenPrefixed_uInt8s_ToOString(aMemStream); + CPPUNIT_ASSERT(aFoo.equalsL(RTL_CONSTASCII_STRINGPARAM("oob"))); + CPPUNIT_ASSERT(aMemStream.good()); + CPPUNIT_ASSERT(!aMemStream.bad()); + CPPUNIT_ASSERT(!aMemStream.eof()); + + aMemStream.SetNumberFormatInt(NUMBERFORMAT_INT_LITTLEENDIAN); + aMemStream.Seek(0); + foo[0] = 3; + foo[1] = 0; + foo[2] = 0; + foo[3] = 0; + aFoo = read_lenPrefixed_uInt8s_ToOString(aMemStream); + CPPUNIT_ASSERT(aFoo.equalsL(RTL_CONSTASCII_STRINGPARAM("bar"))); + CPPUNIT_ASSERT(aMemStream.good()); + CPPUNIT_ASSERT(!aMemStream.bad()); + CPPUNIT_ASSERT(!aMemStream.eof()); + } CPPUNIT_TEST_SUITE_REGISTRATION(Test); } -- cgit v1.2.3