summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2006-09-23 11:58:23 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2006-09-23 11:58:23 +0000
commitc0a53bf3e86c26e5d5b4bb5fe4cade2853644115 (patch)
tree95c63a827d2b553d3a0a0ed4785de2eaa8824599 /test
parent1b5af8e8298d85d47be1de79cf8158b1aae6f06b (diff)
Diffstat (limited to 'test')
-rw-r--r--test/SegmentManTest.cc113
-rw-r--r--test/SpeedCalcTest.cc27
2 files changed, 140 insertions, 0 deletions
diff --git a/test/SegmentManTest.cc b/test/SegmentManTest.cc
new file mode 100644
index 00000000..9c311818
--- /dev/null
+++ b/test/SegmentManTest.cc
@@ -0,0 +1,113 @@
+#include "SegmentMan.h"
+#include "File.h"
+#include "prefs.h"
+#include "Util.h"
+#include <cppunit/extensions/HelperMacros.h>
+
+using namespace std;
+
+class SegmentManTest:public CppUnit::TestFixture {
+
+ CPPUNIT_TEST_SUITE(SegmentManTest);
+ CPPUNIT_TEST(testSaveAndLoad);
+ CPPUNIT_TEST(testNullBitfield);
+ CPPUNIT_TEST(testCancelSegmentOnNullBitfield);
+ CPPUNIT_TEST_SUITE_END();
+private:
+
+public:
+ void setUp() {
+ }
+
+ void testSaveAndLoad();
+ void testNullBitfield();
+ void testCancelSegmentOnNullBitfield();
+};
+
+
+CPPUNIT_TEST_SUITE_REGISTRATION( SegmentManTest );
+
+void SegmentManTest::testSaveAndLoad() {
+ string filename = "save-temp";
+ string aria2filename = filename+".aria2";
+ File saveFile(aria2filename);
+ if(saveFile.exists()) {
+ saveFile.remove();
+ assert(!saveFile.exists());
+ }
+ try {
+ SegmentMan segmentMan;
+ segmentMan.totalSize = 10*1024*1024;
+ segmentMan.ufilename = filename;
+ segmentMan.initBitfield(1024*1024, segmentMan.totalSize);
+
+ Segment2 seg1;
+ segmentMan.getSegment2(seg1, 1);
+ seg1.writtenLength = seg1.length;
+ segmentMan.completeSegment2(1, seg1);
+
+ Segment2 seg2;
+ segmentMan.getSegment2(seg2, 2);
+ seg2.writtenLength = 512*1024;
+ segmentMan.updateSegment2(2, seg2);
+
+ Segment2 seg3;
+ segmentMan.getSegment2(seg3, 3);
+ seg2.writtenLength = 512*1024;
+ segmentMan.updateSegment2(2, seg2);
+
+ segmentMan.save();
+
+ CPPUNIT_ASSERT(saveFile.exists());
+
+ SegmentMan segmentManLoad;
+ segmentManLoad.ufilename = filename;
+ segmentManLoad.load();
+
+ CPPUNIT_ASSERT_EQUAL(segmentMan.totalSize, segmentManLoad.totalSize);
+
+ Segment2 seg2Load;
+ segmentManLoad.getSegment2(seg2Load, 2, seg2.index);
+ CPPUNIT_ASSERT_EQUAL(seg2, seg2Load);
+
+ Segment2 seg3Load;
+ segmentManLoad.getSegment2(seg3Load, 3, seg3.index);
+ CPPUNIT_ASSERT_EQUAL(seg3, seg3Load);
+
+ CPPUNIT_ASSERT_EQUAL(segmentMan.getDownloadLength(), segmentManLoad.getDownloadLength());
+
+ } catch(Exception* e) {
+ cerr << e->getMsg() << endl;
+ delete e;
+ }
+}
+
+void SegmentManTest::testNullBitfield() {
+ SegmentMan segmentMan;
+ Option op;
+ op.put(PREF_SEGMENT_SIZE, Util::itos(1024*1024));
+ segmentMan.option = &op;
+
+ Segment2 segment;
+ CPPUNIT_ASSERT(segmentMan.getSegment2(segment, 1));
+ CPPUNIT_ASSERT_EQUAL(Segment2(0, 0, 0), segment);
+
+ Segment2 segment2;
+ CPPUNIT_ASSERT(!segmentMan.getSegment2(segment2, 2));
+
+ long long int totalLength = 1024*1024;
+ segment.writtenLength = totalLength;
+ CPPUNIT_ASSERT(segmentMan.updateSegment2(1, segment));
+ CPPUNIT_ASSERT_EQUAL(totalLength, segmentMan.getDownloadLength());
+ CPPUNIT_ASSERT(segmentMan.completeSegment2(1, segment));
+ CPPUNIT_ASSERT_EQUAL(totalLength, segmentMan.getDownloadLength());
+}
+
+void SegmentManTest::testCancelSegmentOnNullBitfield() {
+ SegmentMan segmentMan;
+
+ Segment2 segment;
+ CPPUNIT_ASSERT(segmentMan.getSegment2(segment, 1));
+ CPPUNIT_ASSERT(segmentMan.cancelSegment2(1, segment));
+ CPPUNIT_ASSERT(segmentMan.getSegment2(segment, 1));
+}
diff --git a/test/SpeedCalcTest.cc b/test/SpeedCalcTest.cc
new file mode 100644
index 00000000..3ff57e6f
--- /dev/null
+++ b/test/SpeedCalcTest.cc
@@ -0,0 +1,27 @@
+#include "SpeedCalc.h"
+#include <string>
+#include <cppunit/extensions/HelperMacros.h>
+
+using namespace std;
+
+class SpeedCalcTest:public CppUnit::TestFixture {
+
+ CPPUNIT_TEST_SUITE(SpeedCalcTest);
+ CPPUNIT_TEST(testUpdate);
+ CPPUNIT_TEST_SUITE_END();
+private:
+
+public:
+ void setUp() {
+ }
+
+ void testUpdate();
+};
+
+
+CPPUNIT_TEST_SUITE_REGISTRATION( SpeedCalcTest );
+
+void SpeedCalcTest::testUpdate() {
+ SpeedCalc calc;
+ calc.update(1000);
+}