aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorLukáš Lalinský <lalinsky@gmail.com>2011-04-12 14:28:02 +0200
committerLukáš Lalinský <lalinsky@gmail.com>2011-04-12 14:28:02 +0200
commit65ca29b3e28e52a9c47158115418816b0e93cb00 (patch)
tree080aea1eb55c004e717f6a9c32f9629c167a24f5 /tests
parent26c130c3879a1eb2c07c784a91464911c42e5bab (diff)
Add a ByteVector-backed stream class
Diffstat (limited to 'tests')
-rw-r--r--tests/CMakeLists.txt1
-rw-r--r--tests/test_bytevectorstream.cpp92
2 files changed, 93 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 86408af0..d169a626 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -30,6 +30,7 @@ SET(test_runner_SRCS
test_trueaudio.cpp
test_bytevector.cpp
test_bytevectorlist.cpp
+ test_bytevectorstream.cpp
test_string.cpp
test_fileref.cpp
test_id3v1.cpp
diff --git a/tests/test_bytevectorstream.cpp b/tests/test_bytevectorstream.cpp
new file mode 100644
index 00000000..b5114679
--- /dev/null
+++ b/tests/test_bytevectorstream.cpp
@@ -0,0 +1,92 @@
+#include <cppunit/extensions/HelperMacros.h>
+#include <tbytevectorstream.h>
+
+using namespace std;
+using namespace TagLib;
+
+class TestByteVectorStream : public CppUnit::TestFixture
+{
+ CPPUNIT_TEST_SUITE(TestByteVectorStream);
+ CPPUNIT_TEST(testInitialData);
+ CPPUNIT_TEST(testWriteBlock);
+ CPPUNIT_TEST(testWriteBlockResize);
+ CPPUNIT_TEST(testReadBlock);
+ CPPUNIT_TEST(testRemoveBlock);
+ CPPUNIT_TEST(testInsert);
+ CPPUNIT_TEST_SUITE_END();
+
+public:
+
+ void testInitialData()
+ {
+ ByteVector v("abcd");
+ ByteVectorStream stream(v);
+
+ CPPUNIT_ASSERT_EQUAL(ByteVector("abcd"), *stream.data());
+ }
+
+ void testWriteBlock()
+ {
+ ByteVector v("abcd");
+ ByteVectorStream stream(v);
+
+ stream.seek(1);
+ stream.writeBlock(ByteVector("xx"));
+ CPPUNIT_ASSERT_EQUAL(ByteVector("axxd"), *stream.data());
+ }
+
+ void testWriteBlockResize()
+ {
+ ByteVector v("abcd");
+ ByteVectorStream stream(v);
+
+ stream.seek(3);
+ stream.writeBlock(ByteVector("xx"));
+ CPPUNIT_ASSERT_EQUAL(ByteVector("abcxx"), *stream.data());
+ stream.seek(5);
+ stream.writeBlock(ByteVector("yy"));
+ CPPUNIT_ASSERT_EQUAL(ByteVector("abcxxyy"), *stream.data());
+ }
+
+ void testReadBlock()
+ {
+ ByteVector v("abcd");
+ ByteVectorStream stream(v);
+
+ CPPUNIT_ASSERT_EQUAL(ByteVector("a"), stream.readBlock(1));
+ CPPUNIT_ASSERT_EQUAL(ByteVector("bc"), stream.readBlock(2));
+ CPPUNIT_ASSERT_EQUAL(ByteVector("d"), stream.readBlock(3));
+ CPPUNIT_ASSERT_EQUAL(ByteVector::null, stream.readBlock(3));
+ }
+
+ void testRemoveBlock()
+ {
+ ByteVector v("abcd");
+ ByteVectorStream stream(v);
+
+ stream.removeBlock(1, 1);
+ CPPUNIT_ASSERT_EQUAL(ByteVector("acd"), *stream.data());
+ stream.removeBlock(0, 2);
+ CPPUNIT_ASSERT_EQUAL(ByteVector("d"), *stream.data());
+ stream.removeBlock(0, 2);
+ CPPUNIT_ASSERT_EQUAL(ByteVector(""), *stream.data());
+ }
+
+ void testInsert()
+ {
+ ByteVector v("abcd");
+ ByteVectorStream stream(v);
+
+ stream.insert(ByteVector("xx"), 1, 1);
+ CPPUNIT_ASSERT_EQUAL(ByteVector("axxcd"), *stream.data());
+ stream.insert(ByteVector("yy"), 0, 2);
+ CPPUNIT_ASSERT_EQUAL(ByteVector("yyxcd"), *stream.data());
+ stream.insert(ByteVector("foa"), 3, 2);
+ CPPUNIT_ASSERT_EQUAL(ByteVector("yyxfoa"), *stream.data());
+ stream.insert(ByteVector("123"), 3, 0);
+ CPPUNIT_ASSERT_EQUAL(ByteVector("yyx123foa"), *stream.data());
+ }
+
+};
+
+CPPUNIT_TEST_SUITE_REGISTRATION(TestByteVectorStream);