diff --git a/taglib/toolkit/tbytevectorlist.cpp b/taglib/toolkit/tbytevectorlist.cpp index 71d6f69d..b0553d26 100644 --- a/taglib/toolkit/tbytevectorlist.cpp +++ b/taglib/toolkit/tbytevectorlist.cpp @@ -52,7 +52,7 @@ ByteVectorList ByteVectorList::split(const ByteVector &v, const ByteVector &patt offset != -1 && (max == 0 || max > int(l.size()) + 1); offset = v.find(pattern, offset + pattern.size(), byteAlign)) { - if(offset - previousOffset > 1) + if(offset - previousOffset >= 1) l.append(v.mid(previousOffset, offset - previousOffset)); else l.append(ByteVector::null); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 18b62a54..6afefe6d 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -21,6 +21,7 @@ SET(test_runner_SRCS test_synchdata.cpp test_trueaudio.cpp test_bytevector.cpp + test_bytevectorlist.cpp test_string.cpp test_fileref.cpp test_id3v1.cpp diff --git a/tests/test_bytevectorlist.cpp b/tests/test_bytevectorlist.cpp new file mode 100644 index 00000000..f090fcdc --- /dev/null +++ b/tests/test_bytevectorlist.cpp @@ -0,0 +1,38 @@ +#include +#include +#include + +using namespace std; +using namespace TagLib; + +class TestByteVectorList : public CppUnit::TestFixture +{ + CPPUNIT_TEST_SUITE(TestByteVectorList); + CPPUNIT_TEST(testSplitSingleChar); + CPPUNIT_TEST(testSplitSingleChar_2); + CPPUNIT_TEST_SUITE_END(); + +public: + + void testSplitSingleChar() + { + ByteVector v("a b"); + + ByteVectorList l = ByteVectorList::split(v, " "); + CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), l.size()); + CPPUNIT_ASSERT_EQUAL(ByteVector("a"), l[0]); + CPPUNIT_ASSERT_EQUAL(ByteVector("b"), l[1]); + } + + void testSplitSingleChar_2() + { + ByteVector v("a"); + + ByteVectorList l = ByteVectorList::split(v, " "); + CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), l.size()); + CPPUNIT_ASSERT_EQUAL(ByteVector("a"), l[0]); + } + +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(TestByteVectorList);