More tests for BMemoryIO
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1211 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
#include "ReadTest.h"
|
||||
#include "cppunit/TestCaller.h"
|
||||
#include <DataIO.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
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<ReadTest>
|
||||
ReadTestCaller;
|
||||
|
||||
return(new ReadTestCaller("BMemoryIO::Read Test", &ReadTest::PerformTest));
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
#ifndef ReadTest_H
|
||||
#define ReadTest_H
|
||||
|
||||
#include "TestCase.h"
|
||||
#include <DataIO.h>
|
||||
|
||||
|
||||
class ReadTest : public BTestCase
|
||||
{
|
||||
|
||||
private:
|
||||
|
||||
protected:
|
||||
|
||||
public:
|
||||
static Test *suite(void);
|
||||
void PerformTest(void);
|
||||
ReadTest(std::string name = "");
|
||||
virtual ~ReadTest();
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,60 @@
|
||||
#include "SetSizeTest.h"
|
||||
#include "cppunit/TestCaller.h"
|
||||
#include <DataIO.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
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<SetSizeTest>
|
||||
SetSizeTestCaller;
|
||||
|
||||
return(new SetSizeTestCaller("BMemoryIO::SetSize Test", &SetSizeTest::PerformTest));
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
#ifndef SetSizeTest_H
|
||||
#define SetSizeTest_H
|
||||
|
||||
#include "TestCase.h"
|
||||
#include <DataIO.h>
|
||||
|
||||
|
||||
class SetSizeTest : public BTestCase
|
||||
{
|
||||
|
||||
private:
|
||||
|
||||
protected:
|
||||
|
||||
public:
|
||||
static Test *suite(void);
|
||||
void PerformTest(void);
|
||||
SetSizeTest(std::string name = "");
|
||||
virtual ~SetSizeTest();
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user