diff --git a/Common/cppcf/streamrw.cpp b/Common/cppcf/streamrw.cpp index 20a3301d17..cd0ef6cf8d 100644 --- a/Common/cppcf/streamrw.cpp +++ b/Common/cppcf/streamrw.cpp @@ -11,7 +11,7 @@ StreamRW::StreamRW(const Stream &stream) T_LONG64 StreamRW::Seek(T_LONG64 offset) { - stream->seekp(offset, std::ios::cur); + stream->seekp(offset, std::ios::beg); return stream->tellp(); } diff --git a/Common/cppcf/test/test.pro b/Common/cppcf/test/test.pro index 23be0ae782..d062927540 100644 --- a/Common/cppcf/test/test.pro +++ b/Common/cppcf/test/test.pro @@ -6,7 +6,7 @@ CONFIG -= app_bundle CONFIG += thread CONFIG -= qt -LIBS += -L$$PWD/../Debug -lcfcpp +LIBS += -L$$PWD/../../../build/lib/linux_64/debug -lcfcpp INCLUDEPATH += $$PWD/../ HEADERS += \ diff --git a/Common/cppcf/test/tst_test_stream.h b/Common/cppcf/test/tst_test_stream.h index b6037bd76f..1b9b4df65e 100644 --- a/Common/cppcf/test/tst_test_stream.h +++ b/Common/cppcf/test/tst_test_stream.h @@ -13,19 +13,18 @@ struct StreamRWTest : testing::Test { Stream stream; shared_ptr rw; - string filename = "../../data/types/types.bin"; + string filename = "../data/types/types.bin"; const char symbol = 'a'; const int integer = 13; StreamRWTest() { - stream.reset(new std::fstream(filename, ios::app | ios::in | ios::out)); + stream.reset(new std::fstream(filename, ios::app | ios::in | ios::out | ios::binary)); rw.reset(new StreamRW(stream)); } ~StreamRWTest() { - remove(filename.c_str()); } }; @@ -37,6 +36,7 @@ TEST_F(StreamRWTest, test_stream_open) TEST_F(StreamRWTest, test_stream_write) { + rw->Seek(0); rw->Write(symbol); rw->Write(integer); stream->flush(); @@ -46,10 +46,22 @@ TEST_F(StreamRWTest, test_stream_write) TEST_F(StreamRWTest, test_stream_read) { - EXPECT_EQ(rw->Seek(-5), 0); + EXPECT_EQ(rw->Seek(0), 0); EXPECT_EQ(rw->Read(), symbol); EXPECT_EQ(rw->Read(), integer); + remove(filename.c_str()); } +TEST_F(StreamRWTest, test_stream_rw_array) +{ + int sarr[3] = {99, 0, -3}; + int darr[3] = {-1,-1,-1}; + rw->WriteArray(reinterpret_cast(sarr), sizeof (sarr)); + rw->Seek(0); + rw->ReadArray(reinterpret_cast(darr), sizeof (darr)); + EXPECT_EQ(sarr[2], darr[2]); + + remove(filename.c_str()); +} #endif // TST_TEST_STREAM_H