#include #include #include "MKLibTests.h" using namespace std; void MKLibTests::testIP42String() { ip4_t ip0 = htonl(0); ip4_t ip1 = htonl(1); ip4_t ip2 = htonl(INADDR_LOOPBACK); //testLog() << "0x7f000001 parses to: " << MKLib::ip2string(ip2) << endl; TEST_ASSERT(MKLib::ip2string(ip0) == string("0.0.0.0")); TEST_ASSERT(MKLib::ip2string(ip1) == string("0.0.0.1")); TEST_ASSERT(MKLib::ip2string(ip2) == string("127.0.0.1")); } void MKLibTests::testMAC2String() { mac_t mac0; for (int i = 0; i < 6; i++){ mac0.addr[i] = 0; } TEST_ASSERT(MKLib::mac2string(mac0) == string("00:00:00:00:00:00")); } void MKLibTests::testParseIP4Addr() { ip4_t ip0, ip1, ip2 , ip3, ip4; try { ip0 = MKLib::parseIP4Addr("0.0.0.0"); ip1 = MKLib::parseIP4Addr("0.0.0.1"); ip2 = MKLib::parseIP4Addr("0.0.0.2"); ip3 = MKLib::parseIP4Addr("0.0.0.255"); ip4 = MKLib::parseIP4Addr("127.0.0.1"); /* testLog() << "0.0.0.0 parses to: " << MKLib::ip2string(ip0) << endl; testLog() << "0.0.0.1 parses to: " << MKLib::ip2string(ip1) << endl; testLog() << "0.0.0.2 parses to: " << MKLib::ip2string(ip2) << endl; testLog() << "0.0.0.255 parses to: " << MKLib::ip2string(ip3) << endl; testLog() << "127.0.0.1 parses to: " << MKLib::ip2string(ip4) << endl; */ TEST_ASSERT(ip0 == (ip4_t) htonl(0)); TEST_ASSERT(ip1 == (ip4_t) htonl(1)); TEST_ASSERT(ip2 == (ip4_t) htonl(2)); TEST_ASSERT(ip3 == (ip4_t) htonl(255)); TEST_ASSERT(ip4 == (ip4_t) htonl(INADDR_LOOPBACK)); } catch(BaseException e) { TEST_FAIL_LOG(e.what()); } } void MKLibTests::testParseInvalidIP4Addr() { try { MKLib::parseIP4Addr(NULL); TEST_FAIL("Expected an exception"); } catch(BaseException e) { } try { MKLib::parseIP4Addr("abc def"); // should throw before this line executes TEST_FAIL("Expected an exception"); } catch(BaseException e) { } try { // too short MKLib::parseIP4Addr("0.0.0"); TEST_FAIL("Expected an exception"); } catch(BaseException e) { } try { // out of range characters MKLib::parseIP4Addr("0.0.x.0"); TEST_FAIL("Expected an exception"); } catch(BaseException e) { } try { // out of bounds values MKLib::parseIP4Addr("123.256.0.0"); TEST_FAIL("Expected an exception"); } catch(BaseException e) { } try { // negative values MKLib::parseIP4Addr("123.-25.0.0"); TEST_FAIL("Expected an exception"); } catch(BaseException e) { } try { // missing . MKLib::parseIP4Addr("0.0.00"); TEST_FAIL("Expected an exception"); } catch(BaseException e) { } try { // hello MKLib::parseIP4Addr("hello"); TEST_FAIL("Expected an exception"); } catch(BaseException e) { } } void MKLibTests::testParseMACAddr() { try { mac_t mac0; for (int i = 0; i < 6; i++){ mac0.addr[i] = 0; } TEST_ASSERT(MacAddr(MKLib::parseMACAddr("00:00:00:00:00:00")) == MacAddr(mac0)); TEST_ASSERT(!(MacAddr(MKLib::parseMACAddr("00:00:00:00:00:01")) == MacAddr(mac0))); mac_t macbeef; macbeef.addr[0] = 222; macbeef.addr[1] = 173; macbeef.addr[2] = 190; macbeef.addr[3] = 239; macbeef.addr[4] = 202; macbeef.addr[5] = 254; TEST_ASSERT(MacAddr(MKLib::parseMACAddr("DE:AD:BE:EF:CA:FE")) == MacAddr(macbeef)); } catch(BaseException e) { TEST_FAIL_LOG(e.what()); } } void MKLibTests::testParseInvalidMACAddr() { try { MKLib::parseMACAddr(NULL); TEST_FAIL("Expected an exception"); } catch(BaseException e) { } try { // too short MKLib::parseMACAddr("00:00:00:00:00"); // should throw before this line executes TEST_FAIL("Expected an exception"); } catch(BaseException e) { } try { // out of range characters MKLib::parseMACAddr("00:x0:00:00:00:00"); TEST_FAIL("Expected an exception"); } catch(BaseException e) { } try { // hello MKLib::parseMACAddr("hello"); TEST_FAIL("Expected an exception"); } catch(BaseException e) { } try { // negative MKLib::parseMACAddr("DE:AD:BE:EF:-CA:FE"); TEST_FAIL("Expected an exception"); } catch(BaseException e) { } } void MKLibTests::testMACLessThan() { mac_t m0 = {0}; mac_t m1 = {0,0,0,0,0,1}; mac_t m2 = {0,0,0,0,0,2}; mac_t m3 = {0,0,0,0,1,0}; mac_t m4 = {0,0,0,0,2,0}; mac_t m5 = MKLib::parseMACAddr("94:0c:6d:e0:04:df"); mac_t m6 = MKLib::parseMACAddr("00:00:00:00:00:01"); mac_t m7 = MKLib::parseMACAddr("00:00:00:00:00:ff"); mac_t m8 = MKLib::parseMACAddr("ff:00:00:00:00:00"); TEST_ASSERT(!(MacAddr(m0) < MacAddr(m0))); TEST_ASSERT(MacAddr(m0) < MacAddr(m1)); TEST_ASSERT(MacAddr(m0) < MacAddr(m2)); TEST_ASSERT(MacAddr(m0) < MacAddr(m3)); TEST_ASSERT(MacAddr(m0) < MacAddr(m4)); TEST_ASSERT(MacAddr(m0) < MacAddr(m5)); TEST_ASSERT(MacAddr(m0) < MacAddr(m6)); TEST_ASSERT(MacAddr(m0) < MacAddr(m7)); TEST_ASSERT(MacAddr(m0) < MacAddr(m8)); TEST_ASSERT(!(MacAddr(m1) < MacAddr(m0))); TEST_ASSERT(!(MacAddr(m1) < MacAddr(m1))); TEST_ASSERT(MacAddr(m1) < MacAddr(m2)); TEST_ASSERT(MacAddr(m1) < MacAddr(m3)); TEST_ASSERT(MacAddr(m1) < MacAddr(m4)); TEST_ASSERT(!(MacAddr(m2) < MacAddr(m0))); TEST_ASSERT(!(MacAddr(m2) < MacAddr(m1))); TEST_ASSERT(!(MacAddr(m2) < MacAddr(m2))); TEST_ASSERT(MacAddr(m2) < MacAddr(m3)); TEST_ASSERT(MacAddr(m2) < MacAddr(m4)); TEST_ASSERT(!(MacAddr(m3) < MacAddr(m0))); TEST_ASSERT(!(MacAddr(m3) < MacAddr(m1))); TEST_ASSERT(!(MacAddr(m3) < MacAddr(m2))); TEST_ASSERT(!(MacAddr(m3) < MacAddr(m3))); TEST_ASSERT(MacAddr(m3) < MacAddr(m4)); TEST_ASSERT(!(MacAddr(m4) < MacAddr(m0))); TEST_ASSERT(!(MacAddr(m4) < MacAddr(m1))); TEST_ASSERT(!(MacAddr(m4) < MacAddr(m2))); TEST_ASSERT(!(MacAddr(m4) < MacAddr(m3))); TEST_ASSERT(!(MacAddr(m4) < MacAddr(m4))); } void MKLibTests::testMACEquals() { mac_t m0 = {0}; mac_t m1 = {0,0,0,0,0,1}; mac_t m2 = {0,0,0,0,0,2}; mac_t m3 = {0,0,0,0,1,0}; mac_t m4 = {0,0,0,0,2,0}; TEST_ASSERT(MacAddr(m0) == MacAddr(m0)); TEST_ASSERT(MacAddr(m0) != MacAddr(m1)); TEST_ASSERT(MacAddr(m0) != MacAddr(m2)); TEST_ASSERT(MacAddr(m0) != MacAddr(m3)); TEST_ASSERT(MacAddr(m0) != MacAddr(m4)); TEST_ASSERT(!(MacAddr(m1) == MacAddr(m0))); TEST_ASSERT(MacAddr(m1) == MacAddr(m1)); TEST_ASSERT(!(MacAddr(m1) == MacAddr(m2))); TEST_ASSERT(!(MacAddr(m1) == MacAddr(m3))); TEST_ASSERT(!(MacAddr(m1) == MacAddr(m4))); TEST_ASSERT(!(MacAddr(m2) == MacAddr(m0))); TEST_ASSERT(!(MacAddr(m2) == MacAddr(m1))); TEST_ASSERT(MacAddr(m2) == MacAddr(m2)); TEST_ASSERT(!(MacAddr(m2) == MacAddr(m3))); TEST_ASSERT(!(MacAddr(m2) == MacAddr(m4))); TEST_ASSERT(!(MacAddr(m3) == MacAddr(m0))); TEST_ASSERT(!(MacAddr(m3) == MacAddr(m1))); TEST_ASSERT(!(MacAddr(m3) == MacAddr(m2))); TEST_ASSERT(MacAddr(m3) == MacAddr(m3)); TEST_ASSERT(!(MacAddr(m3) == MacAddr(m4))); TEST_ASSERT(!(MacAddr(m4) == MacAddr(m0))); TEST_ASSERT(!(MacAddr(m4) == MacAddr(m1))); TEST_ASSERT(!(MacAddr(m4) == MacAddr(m2))); TEST_ASSERT(!(MacAddr(m4) == MacAddr(m3))); TEST_ASSERT(MacAddr(m4) == MacAddr(m4)); }