diff --git a/Source/Tests/mmap.cpp b/Source/Tests/mmap.cpp index b683a340..c2d267b4 100644 --- a/Source/Tests/mmap.cpp +++ b/Source/Tests/mmap.cpp @@ -22,19 +22,30 @@ class MMapTest : public CppUnit::TestFixture { public: void testMMapFile() { + size_t i; const int BUF_SIZE = 50000; // 50MB + // resize + MMapFile mmap; mmap.resize(BUF_SIZE); CPPUNIT_ASSERT_EQUAL( BUF_SIZE, mmap.getsize() ); - void *buf = mmap.get(0, BUF_SIZE); - memset(buf, 0x85, BUF_SIZE); + // set content + + char *buf = (char *) mmap.get(0, BUF_SIZE); + + for (i = 0; i < BUF_SIZE; i++) { + buf[i] = i % 256; + } + mmap.release(); + // test content and get(), getmore() + srand(time(NULL)); - for (size_t i = 0; i < 100; i++) { + for (i = 0; i < 100; i++) { int offset1 = rand() % BUF_SIZE; int size1 = rand() % (BUF_SIZE - offset1); char *p1 = (char *) mmap.get(offset1, size1); @@ -43,9 +54,14 @@ public: int size2 = rand() % (BUF_SIZE - offset2); char *p2 = (char *) mmap.getmore(offset2, size2); - int minsize = min(size1, size2); - for (int j = 0; j < minsize; j++) { - CPPUNIT_ASSERT_EQUAL( p1[j], p2[j] ); + int j; + + for (j = 0; j < size1; j++) { + CPPUNIT_ASSERT_EQUAL( p1[j], char((offset1 + j) % 256) ); + } + + for (j = 0; j < size2; j++) { + CPPUNIT_ASSERT_EQUAL( p2[j], char((offset2 + j) % 256) ); } mmap.release();