void testMMapFile() { const int BUF_SIZE = 50000; // 50MB 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); mmap.release(); srand(time(NULL)); for (size_t i = 0; i < 100; i++) { int offset1 = rand() % BUF_SIZE; int size1 = rand() % (BUF_SIZE - offset1); char *p1 = (char *) mmap.get(offset1, size1); int offset2 = rand() % BUF_SIZE; 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] ); } mmap.release(); mmap.release(p2, size2); } }
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() ); // 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 (i = 0; i < 100; i++) { int offset1 = rand() % BUF_SIZE; int size1 = rand() % (BUF_SIZE - offset1); char *p1 = (char *) mmap.get(offset1, size1); int offset2 = rand() % BUF_SIZE; int size2 = rand() % (BUF_SIZE - offset2); char *p2 = (char *) mmap.getmore(offset2, size2); 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(); mmap.release(p2, size2); } }