wibble 0.1.28
|
00001 /* -*- C++ -*- (c) 2007 Petr Rockai <me@mornfall.net> 00002 (c) 2007 Enrico Zini <enrico@enricozini.org> */ 00003 00004 #include <wibble/sys/netbuffer.h> 00005 00006 #include <wibble/test.h> 00007 #include <cstring> 00008 00009 using namespace std; 00010 using namespace wibble::sys; 00011 00012 struct TestNetBuffer { 00013 00014 // Ensure that a plain NetBuffer starts from the beginning of the string 00015 Test startAtBeginning() { 00016 NetBuffer buf("antani", 6); 00017 00018 assert_eq(buf.size(), 6u); 00019 assert(memcmp(buf.data(), "antani", 6) == 0); 00020 00021 assert_eq(*buf.cast<char>(), 'a'); 00022 assert(buf.fits<short int>()); 00023 assert(!buf.fits<long long int>()); 00024 } 00025 00026 // Try skipping some bytes 00027 Test skipBytes() { 00028 NetBuffer buf("antani", 6); 00029 00030 NetBuffer buf1(buf); 00031 00032 assert_eq(buf1.size(), 6u); 00033 assert(memcmp(buf1.data(), "antani", 6) == 0); 00034 00035 buf1 += 2; 00036 assert_eq(buf1.size(), 4u); 00037 assert(memcmp(buf1.data(), "tani", 4) == 0); 00038 assert_eq(*buf1.cast<char>(), 't'); 00039 00040 buf1 = buf + 2; 00041 assert_eq(buf1.size(), 4u); 00042 assert(memcmp(buf1.data(), "tani", 4) == 0); 00043 assert_eq(*buf1.cast<char>(), 't'); 00044 00045 buf1 = buf; 00046 buf1.skip(2); 00047 assert_eq(buf1.size(), 4u); 00048 assert(memcmp(buf1.data(), "tani", 4) == 0); 00049 assert_eq(*buf1.cast<char>(), 't'); 00050 00051 buf1 = buf.after(2); 00052 assert_eq(buf1.size(), 4u); 00053 assert(memcmp(buf1.data(), "tani", 4) == 0); 00054 assert_eq(*buf1.cast<char>(), 't'); 00055 00056 buf1 = buf; 00057 buf1.skip<short int>(); 00058 assert_eq(buf1.size(), 4u); 00059 assert(memcmp(buf1.data(), "tani", 4) == 0); 00060 assert_eq(*buf1.cast<char>(), 't'); 00061 00062 buf1 = buf.after<short int>(); 00063 assert_eq(buf1.size(), 4u); 00064 assert(memcmp(buf1.data(), "tani", 4) == 0); 00065 assert_eq(*buf1.cast<char>(), 't'); 00066 } 00067 00068 }; 00069 00070 // vim:set ts=4 sw=4: