From 31e70b205c1c71524e12a791771fc8d8fc04f0f1 Mon Sep 17 00:00:00 2001 From: Florent Rougon Date: Sat, 10 Jun 2017 20:59:15 +0200 Subject: [PATCH] CharArrayStream_test: fix failing test (logic error in the test code) --- simgear/io/iostreams/CharArrayStream_test.cxx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/simgear/io/iostreams/CharArrayStream_test.cxx b/simgear/io/iostreams/CharArrayStream_test.cxx index d869613b..72b97687 100644 --- a/simgear/io/iostreams/CharArrayStream_test.cxx +++ b/simgear/io/iostreams/CharArrayStream_test.cxx @@ -403,9 +403,14 @@ void test_CharArrayIOStream_readWriteSeekPutbackEtc() SG_VERIFY(caStream.seekp(-9, std::ios_base::cur)); // put pointer = 10 - 9 = 1 SG_VERIFY(caStream.write(&text[1], 4)); // buf[1:5] = text[1:5] + SG_VERIFY(caStream.seekp(10)); // put pointer = 10 + // buf[10:] = text[10:] + SG_VERIFY(caStream.write(&text[10], text.size() - 10)); + + std::unique_ptr buf2(new char[caStream.size() - 10]); SG_VERIFY(caStream.seekg(10)); // get pointer = 10 // std::iostream::operator bool() will return false due to EOF being reached - SG_VERIFY(!caStream.read(&buf[10], + SG_VERIFY(!caStream.read(&buf2[0], std::numeric_limits::max())); // If badbit had been set, it would have caused an exception to be raised SG_VERIFY(caStream.eof() && caStream.fail() && !caStream.bad()); @@ -415,10 +420,11 @@ void test_CharArrayIOStream_readWriteSeekPutbackEtc() // buffer managed by caStream's associated stream buffer, i.e. text.size(). n = streamsizeToSize_t(caStream.gcount()); SG_CHECK_EQUAL(n, caStream.size() - 10); - SG_CHECK_EQUAL(string(caStream.data(), caStream.size()), text); - SG_CHECK_EQUAL(caStream.get(), EOF); - SG_VERIFY(caStream.eof() && caStream.fail() && !caStream.bad()); + + SG_CHECK_EQUAL(string(&buf2[0], caStream.size() - 10), + string(&text[10], text.size() - 10)); + SG_CHECK_EQUAL(string(caStream.data(), caStream.size()), text); } int main(int argc, char** argv)