diff options
Diffstat (limited to 'examples/test_io.cpp')
-rw-r--r-- | examples/test_io.cpp | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/examples/test_io.cpp b/examples/test_io.cpp new file mode 100644 index 0000000..bee1a27 --- /dev/null +++ b/examples/test_io.cpp @@ -0,0 +1,207 @@ +// $Id: test_io.cpp,v 1.6 2003/03/02 15:17:21 t1mpy Exp $ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <id3/readers.h> +#include <id3/writers.h> +#include <id3/io_decorators.h> +#include <id3/io_helpers.h> +#include <id3/io_strings.h> +#include <id3/utils.h> + +using std::cout; +using std::endl; +using std::cerr; + +using namespace dami; + +int +main(size_t argc, const char** argv) +{ + ID3D_INIT_DOUT(); + ID3D_INIT_WARNING(); + ID3D_INIT_NOTICE(); + + ID3_IStreamReader isr(cin); + BString orig = io::readAllBinary(isr); + + cout << "input size: " << orig.size() << endl; + + cout << endl; + + cout << "=== Testing Synchronization ===" << endl; + BString synced; + + { + io::BStringReader sr(orig); + io::UnsyncedReader ur(sr); + + synced = io::readAllBinary(ur); + } + + cout << "synced size: " << synced.size() << endl; + + BString unsynced; + + { + io::BStringWriter sw(unsynced); + io::UnsyncedWriter uw(sw); + + uw.writeChars(synced.data(), synced.size()); + } + + cout << "unsynced size: " << unsynced.size() << endl; + + BString resynced; + + { + io::BStringReader sr(unsynced); + io::UnsyncedReader ur(sr); + + resynced = io::readAllBinary(ur); + } + + cout << "resynced size: " << resynced.size() << endl; + + if (unsynced == orig) + { + cout << "orig == unsynced" << endl; + } + else + { + cout << "orig != unsynced" << endl; + } + if (synced == resynced) + { + cout << "synced == resynced" << endl; + } + else + { + cout << "synced != resynced" << endl; + } + + cout << endl; + cout << "=== Testing Trailing Spaces ===" << endl; + + String text; + + { + io::StringWriter sw(text); + io::writeTrailingSpaces (sw, "hello, world", 50); + } + + cout << "new text = \"" << text << "\"" << endl; + + String origText; + + { + io::StringReader sr(text); + origText = io::readTrailingSpaces(sr, 100); + } + + cout << "orig text = \"" << origText << "\"" << endl; + + cout << endl; + cout << "=== Testing Binary Numbers ===" << endl; + + String number; + + { + io::StringWriter sw(number); + io::writeBENumber(sw, 1234567890, 4); + } + + cout << "binary number:"; + for (size_t i = 0; i < number.size(); ++i) + { + cout << " 0x" << hex << (size_t) (0xFF & number[i]) << dec; + } + cout << endl; + + size_t val; + + { + io::StringReader sr(number); + val = io::readBENumber(sr, 4); + } + + cout << "orig number: " << val << endl; + + cout << endl; + cout << "=== Testing Compression ===" << endl; + + String compressed; + size_t origSize = orig.size(); + cout << "origSize = " << origSize << endl; + + + { + io::StringWriter sw(compressed); + io::CompressedWriter cw(sw); + cw.writeChars(orig.data(), orig.size()); + cw.flush(); + if (origSize != cw.getOrigSize()) + { + origSize = cw.getOrigSize(); + cout << "cw.getOrigSize() = " << origSize << endl; + } + } + + cout << "compressed size = " << compressed.size() << endl; + + BString uncompressed; + + if (origSize == 0) + { + cout << "no compression" << endl; + } + else + { + io::StringReader sr(compressed); + io::CompressedReader cr(sr, origSize); + + uncompressed = io::readAllBinary(cr); + cout << "uncompressed size = " << uncompressed.size() << endl; + } + + if (uncompressed.size() == orig.size()) + { + if (uncompressed == orig) + { + cout << "orig == uncompressed" << endl; + } + else + { + cout << "orig != uncompressed" << endl; + } + } + + String ascii; + ascii.reserve(8192); + + for (size_t i = 0; i < 8192; ++i) + { + ascii += 'a' + (i % 26); + } + + cout << endl; + cout << "ascii.size() = " << ascii.size() << endl; + String unicode = dami::convert(ascii, ID3TE_ASCII, ID3TE_UTF16BE); + cout << "uncicode.size() = " << unicode.size() << endl; + String ascii_2 = dami::convert(unicode, ID3TE_UTF16BE, ID3TE_ASCII); + if (ascii != ascii_2) + { + cout << "ascii != ascii_2" << endl; + } + else + { + cout << "ascii == ascii_2" << endl; + } + + + + return 0; +} + |