00001 /* 00002 Free Download Manager Copyright (c) 2003-2007 FreeDownloadManager.ORG 00003 */ 00004 00005 #include "libtorrent/bencode.hpp" 00006 #include <boost/lexical_cast.hpp> 00007 00008 #include "test.hpp" 00009 00010 using namespace libtorrent; 00011 00012 std::string encode(entry const& e) 00013 { 00014 std::string ret; 00015 bencode(std::back_inserter(ret), e); 00016 return ret; 00017 } 00018 00019 entry decode(std::string const& str) 00020 { 00021 return bdecode(str.begin(), str.end()); 00022 } 00023 00024 int test_main() 00025 { 00026 using namespace libtorrent; 00027 00028 00029 { 00030 entry e("spam"); 00031 TEST_CHECK(encode(e) == "4:spam"); 00032 TEST_CHECK(decode(encode(e)) == e); 00033 } 00034 00035 00036 { 00037 entry e(3); 00038 TEST_CHECK(encode(e) == "i3e"); 00039 TEST_CHECK(decode(encode(e)) == e); 00040 } 00041 00042 { 00043 entry e(-3); 00044 TEST_CHECK(encode(e) == "i-3e"); 00045 TEST_CHECK(decode(encode(e)) == e); 00046 } 00047 00048 { 00049 entry e(int(0)); 00050 TEST_CHECK(encode(e) == "i0e"); 00051 TEST_CHECK(decode(encode(e)) == e); 00052 } 00053 00054 00055 { 00056 entry::list_type l; 00057 l.push_back(entry("spam")); 00058 l.push_back(entry("eggs")); 00059 entry e(l); 00060 TEST_CHECK(encode(e) == "l4:spam4:eggse"); 00061 TEST_CHECK(decode(encode(e)) == e); 00062 } 00063 00064 00065 { 00066 entry e(entry::dictionary_t); 00067 e["spam"] = entry("eggs"); 00068 e["cow"] = entry("moo"); 00069 TEST_CHECK(encode(e) == "d3:cow3:moo4:spam4:eggse"); 00070 TEST_CHECK(decode(encode(e)) == e); 00071 } 00072 00073 return 0; 00074 } 00075
1.5.6