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 "ConstTest.h"
|
||||||
#include "SeekTest.h"
|
#include "SeekTest.h"
|
||||||
#include "WriteTest.h"
|
#include "WriteTest.h"
|
||||||
|
#include "ReadTest.h"
|
||||||
|
#include "SetSizeTest.h"
|
||||||
|
|
||||||
CppUnit::Test *MemoryIOTestSuite()
|
CppUnit::Test *MemoryIOTestSuite()
|
||||||
{
|
{
|
||||||
@@ -12,6 +14,8 @@ CppUnit::Test *MemoryIOTestSuite()
|
|||||||
testSuite->addTest(ConstTest::suite());
|
testSuite->addTest(ConstTest::suite());
|
||||||
testSuite->addTest(SeekTest::suite());
|
testSuite->addTest(SeekTest::suite());
|
||||||
testSuite->addTest(WriteTest::suite());
|
testSuite->addTest(WriteTest::suite());
|
||||||
|
testSuite->addTest(ReadTest::suite());
|
||||||
|
testSuite->addTest(SetSizeTest::suite());
|
||||||
|
|
||||||
return(testSuite);
|
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];
|
char buf[10];
|
||||||
const char *writeBuf = "ABCDEFG";
|
const char *writeBuf = "ABCDEFG";
|
||||||
|
|
||||||
BMemoryIO mem(buf, 10);
|
BMemoryIO mem(buf, 10);
|
||||||
|
ssize_t err;
|
||||||
size_t err;
|
|
||||||
off_t pos;
|
off_t pos;
|
||||||
|
|
||||||
NextSubTest();
|
NextSubTest();
|
||||||
|
memset(buf, 0, 10);
|
||||||
pos = mem.Position();
|
pos = mem.Position();
|
||||||
err = mem.Write(writeBuf, 7);
|
err = mem.Write(writeBuf, 7);
|
||||||
CPPUNIT_ASSERT(err == 7); // Check how much data we wrote
|
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
|
CPPUNIT_ASSERT(mem.Position() == pos + err); // Check if Position changed
|
||||||
|
|
||||||
NextSubTest();
|
NextSubTest();
|
||||||
|
memset(buf, 0, 10);
|
||||||
pos = mem.Position();
|
pos = mem.Position();
|
||||||
err = mem.WriteAt(3, writeBuf, 2);
|
err = mem.WriteAt(3, writeBuf, 2);
|
||||||
CPPUNIT_ASSERT(err == 2);
|
CPPUNIT_ASSERT(err == 2);
|
||||||
@@ -42,12 +43,18 @@ WriteTest::PerformTest(void)
|
|||||||
CPPUNIT_ASSERT(mem.Position() == pos);
|
CPPUNIT_ASSERT(mem.Position() == pos);
|
||||||
|
|
||||||
NextSubTest();
|
NextSubTest();
|
||||||
|
memset(buf, 0, 10);
|
||||||
pos = mem.Position();
|
pos = mem.Position();
|
||||||
err = mem.WriteAt(9, writeBuf, 5);
|
err = mem.WriteAt(9, writeBuf, 5);
|
||||||
CPPUNIT_ASSERT(err == 1);
|
CPPUNIT_ASSERT(err == 1);
|
||||||
CPPUNIT_ASSERT(strncmp(buf + 9, writeBuf, 1) == 0);
|
CPPUNIT_ASSERT(strncmp(buf + 9, writeBuf, 1) == 0);
|
||||||
CPPUNIT_ASSERT(mem.Position() == pos);
|
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