diff --git a/src/tests/kits/support/bmemoryio/MemoryIOTest.cpp b/src/tests/kits/support/bmemoryio/MemoryIOTest.cpp index a9d3d8c4cc..43a07d1e6b 100644 --- a/src/tests/kits/support/bmemoryio/MemoryIOTest.cpp +++ b/src/tests/kits/support/bmemoryio/MemoryIOTest.cpp @@ -4,6 +4,8 @@ #include "ConstTest.h" #include "SeekTest.h" #include "WriteTest.h" +#include "ReadTest.h" +#include "SetSizeTest.h" CppUnit::Test *MemoryIOTestSuite() { @@ -12,6 +14,8 @@ CppUnit::Test *MemoryIOTestSuite() testSuite->addTest(ConstTest::suite()); testSuite->addTest(SeekTest::suite()); testSuite->addTest(WriteTest::suite()); + testSuite->addTest(ReadTest::suite()); + testSuite->addTest(SetSizeTest::suite()); return(testSuite); } diff --git a/src/tests/kits/support/bmemoryio/ReadTest.cpp b/src/tests/kits/support/bmemoryio/ReadTest.cpp new file mode 100644 index 0000000000..dfed7d7559 --- /dev/null +++ b/src/tests/kits/support/bmemoryio/ReadTest.cpp @@ -0,0 +1,59 @@ +#include "ReadTest.h" +#include "cppunit/TestCaller.h" +#include +#include +#include + +ReadTest::ReadTest(std::string name) : + BTestCase(name) +{ +} + + + +ReadTest::~ReadTest() +{ +} + + +void +ReadTest::PerformTest(void) +{ + char buf[20] = "0123456789ABCDEFGHI"; + char readBuf[10]; + + memset(readBuf, 0, 10); + + BMemoryIO mem(buf, 20); + ssize_t err; + off_t pos; + + NextSubTest(); + pos = mem.Position(); + err = mem.Read(readBuf, 10); + CPPUNIT_ASSERT(err == 10); + CPPUNIT_ASSERT(strncmp(readBuf, buf, 10) == 0); + CPPUNIT_ASSERT(mem.Position() == pos + err); + + NextSubTest(); + pos = mem.Position(); + err = mem.ReadAt(30, readBuf, 10); + CPPUNIT_ASSERT(err == 0); + CPPUNIT_ASSERT(mem.Position() == pos); + + NextSubTest(); + pos = mem.Seek(0, SEEK_END); + err = mem.Read(readBuf, 10); + CPPUNIT_ASSERT(err == 0); + CPPUNIT_ASSERT(mem.Position() == pos); + +} + + +CppUnit::Test *ReadTest::suite(void) +{ + typedef CppUnit::TestCaller + ReadTestCaller; + + return(new ReadTestCaller("BMemoryIO::Read Test", &ReadTest::PerformTest)); +} \ No newline at end of file diff --git a/src/tests/kits/support/bmemoryio/ReadTest.h b/src/tests/kits/support/bmemoryio/ReadTest.h new file mode 100644 index 0000000000..8d5d0a6c37 --- /dev/null +++ b/src/tests/kits/support/bmemoryio/ReadTest.h @@ -0,0 +1,22 @@ +#ifndef ReadTest_H +#define ReadTest_H + +#include "TestCase.h" +#include + + +class ReadTest : public BTestCase +{ + +private: + +protected: + +public: + static Test *suite(void); + void PerformTest(void); + ReadTest(std::string name = ""); + virtual ~ReadTest(); + }; + +#endif \ No newline at end of file diff --git a/src/tests/kits/support/bmemoryio/SetSizeTest.cpp b/src/tests/kits/support/bmemoryio/SetSizeTest.cpp new file mode 100644 index 0000000000..7350376ed3 --- /dev/null +++ b/src/tests/kits/support/bmemoryio/SetSizeTest.cpp @@ -0,0 +1,60 @@ +#include "SetSizeTest.h" +#include "cppunit/TestCaller.h" +#include +#include +#include + +SetSizeTest::SetSizeTest(std::string name) : + BTestCase(name) +{ +} + + + +SetSizeTest::~SetSizeTest() +{ +} + + +void +SetSizeTest::PerformTest(void) +{ + char buf[20] = "0123456789ABCDEFGHI"; + char readBuf[10]; + + memset(readBuf, 0, 10); + + BMemoryIO mem(buf, 10); + ssize_t size; + off_t pos; + status_t err; + + NextSubTest(); + err = mem.SetSize(5); + pos = mem.Seek(0, SEEK_END); + size = mem.WriteAt(10, readBuf, 3); + CPPUNIT_ASSERT(err == B_OK); + CPPUNIT_ASSERT(pos == 5); + CPPUNIT_ASSERT(size == 0); + + NextSubTest(); + err = mem.SetSize(10); + pos = mem.Seek(0, SEEK_END); + size = mem.WriteAt(5, readBuf, 6); + CPPUNIT_ASSERT(err == B_OK); + CPPUNIT_ASSERT(pos == 10); + CPPUNIT_ASSERT(size == 5); + + NextSubTest(); + err = mem.SetSize(20); + CPPUNIT_ASSERT(err == B_ERROR); +} + + +CppUnit::Test *SetSizeTest::suite(void) +{ + typedef CppUnit::TestCaller + SetSizeTestCaller; + + return(new SetSizeTestCaller("BMemoryIO::SetSize Test", &SetSizeTest::PerformTest)); +} \ No newline at end of file diff --git a/src/tests/kits/support/bmemoryio/SetSizeTest.h b/src/tests/kits/support/bmemoryio/SetSizeTest.h new file mode 100644 index 0000000000..887f71394d --- /dev/null +++ b/src/tests/kits/support/bmemoryio/SetSizeTest.h @@ -0,0 +1,22 @@ +#ifndef SetSizeTest_H +#define SetSizeTest_H + +#include "TestCase.h" +#include + + +class SetSizeTest : public BTestCase +{ + +private: + +protected: + +public: + static Test *suite(void); + void PerformTest(void); + SetSizeTest(std::string name = ""); + virtual ~SetSizeTest(); + }; + +#endif \ No newline at end of file diff --git a/src/tests/kits/support/bmemoryio/WriteTest.cpp b/src/tests/kits/support/bmemoryio/WriteTest.cpp index a4f4961c7e..95461da79e 100644 --- a/src/tests/kits/support/bmemoryio/WriteTest.cpp +++ b/src/tests/kits/support/bmemoryio/WriteTest.cpp @@ -22,12 +22,12 @@ WriteTest::PerformTest(void) char buf[10]; const char *writeBuf = "ABCDEFG"; - BMemoryIO mem(buf, 10); - - size_t err; + BMemoryIO mem(buf, 10); + ssize_t err; off_t pos; NextSubTest(); + memset(buf, 0, 10); pos = mem.Position(); err = mem.Write(writeBuf, 7); CPPUNIT_ASSERT(err == 7); // Check how much data we wrote @@ -35,6 +35,7 @@ WriteTest::PerformTest(void) CPPUNIT_ASSERT(mem.Position() == pos + err); // Check if Position changed NextSubTest(); + memset(buf, 0, 10); pos = mem.Position(); err = mem.WriteAt(3, writeBuf, 2); CPPUNIT_ASSERT(err == 2); @@ -42,12 +43,18 @@ WriteTest::PerformTest(void) CPPUNIT_ASSERT(mem.Position() == pos); NextSubTest(); + memset(buf, 0, 10); pos = mem.Position(); err = mem.WriteAt(9, writeBuf, 5); CPPUNIT_ASSERT(err == 1); CPPUNIT_ASSERT(strncmp(buf + 9, writeBuf, 1) == 0); CPPUNIT_ASSERT(mem.Position() == pos); + NextSubTest(); + memset(buf, 0, 10); + pos = mem.Position(); + err = mem.WriteAt(-10, writeBuf, 5); + CPPUNIT_ASSERT(err == 5); }