mirror of https://github.com/aria2/aria2
				
				
				
			
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
#include "GeomStreamPieceSelector.h"
 | 
						|
 | 
						|
#include <cstring>
 | 
						|
 | 
						|
#include <cppunit/extensions/HelperMacros.h>
 | 
						|
 | 
						|
#include "Exception.h"
 | 
						|
#include "util.h"
 | 
						|
#include "BitfieldMan.h"
 | 
						|
 | 
						|
namespace aria2 {
 | 
						|
 | 
						|
class GeomStreamPieceSelectorTest:public CppUnit::TestFixture {
 | 
						|
 | 
						|
  CPPUNIT_TEST_SUITE(GeomStreamPieceSelectorTest);
 | 
						|
  CPPUNIT_TEST(testOnBitfieldInit);
 | 
						|
  CPPUNIT_TEST_SUITE_END();
 | 
						|
public:
 | 
						|
  void testOnBitfieldInit();
 | 
						|
};
 | 
						|
 | 
						|
CPPUNIT_TEST_SUITE_REGISTRATION(GeomStreamPieceSelectorTest);
 | 
						|
 | 
						|
void GeomStreamPieceSelectorTest::testOnBitfieldInit()
 | 
						|
{
 | 
						|
  BitfieldMan bf(1024, 1024*20);
 | 
						|
  bf.setBitRange(0, 10);
 | 
						|
  GeomStreamPieceSelector sel(&bf, 2);
 | 
						|
  sel.onBitfieldInit();
 | 
						|
  unsigned char igbf[3];
 | 
						|
  memset(igbf, 0, 3);
 | 
						|
  size_t index;
 | 
						|
  // 11111|11111|00000|00000
 | 
						|
  CPPUNIT_ASSERT(sel.select(index, 1024*20, igbf, sizeof(igbf)));
 | 
						|
  CPPUNIT_ASSERT_EQUAL((size_t)11, index);
 | 
						|
  bf.setUseBit(11);
 | 
						|
  // 11111|11111|10000|00000
 | 
						|
  CPPUNIT_ASSERT(sel.select(index, 1024*20, igbf, sizeof(igbf)));
 | 
						|
  CPPUNIT_ASSERT_EQUAL((size_t)12, index);
 | 
						|
  bf.setUseBit(12);
 | 
						|
  // 11111|11111|11000|00000
 | 
						|
  CPPUNIT_ASSERT(sel.select(index, 1024*20, igbf, sizeof(igbf)));
 | 
						|
  CPPUNIT_ASSERT_EQUAL((size_t)13, index);
 | 
						|
  bf.setUseBit(13);
 | 
						|
  // 11111|11111|11100|00000
 | 
						|
  CPPUNIT_ASSERT(sel.select(index, 1024*20, igbf, sizeof(igbf)));
 | 
						|
  CPPUNIT_ASSERT_EQUAL((size_t)15, index);
 | 
						|
}
 | 
						|
 | 
						|
} // namespace aria2
 |