]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
Fixed a serious bug when testing a_md5encrypt(), and added more tests for hextolfp
authorLinux Karlsson <karlsson@ntp.org>
Sun, 13 Jun 2010 14:04:31 +0000 (16:04 +0200)
committerLinux Karlsson <karlsson@ntp.org>
Sun, 13 Jun 2010 14:04:31 +0000 (16:04 +0200)
bk: 4c14e56f3x0IZpvxngdj1c4f7qwTtQ

tests/libntp/a_md5encrypt.cpp
tests/libntp/hextolfp.cpp

index f0ea730bf720e11ed517d502976726eb526fcd0c..bcf76a0f3b88948312a8b0a043644aae0f2d7368 100644 (file)
@@ -14,7 +14,7 @@ protected:
  */
 const int keytype = KEY_TYPE_MD5;
 const char *key = "abcdefgh";
-const int keylength = 8;
+const int keyLength = 8;
 const char *packet = "ijklmnopqrstuvwx";
 const int packetLength = 16;
 const int keyIdLength = 4;
@@ -24,25 +24,30 @@ const char *expectedPacket = "ijklmnopqrstuvwx\0\0\0\0\x0c\x0e\x84\xcf\x0b\xb7\x
 
 TEST_F(a_md5encryptTest, Encrypt) {
        char *packetPtr = new char[totalLength];
+       memset(packetPtr+packetLength, 0, keyIdLength);
        memcpy(packetPtr, packet, packetLength);
 
-       cache_keylen = keyIdLength;
+       cache_keylen = keyLength;
 
-       int length =  MD5authencrypt(KEY_TYPE_MD5, (u_char*)key, (u_int32*)packetPtr, packetLength);
+       int length =  MD5authencrypt(keytype, (u_char*)key, (u_int32*)packetPtr, packetLength);
+
+       EXPECT_TRUE(MD5authdecrypt(keytype, (u_char*)key, (u_int32*)packetPtr, packetLength, length));
        
        EXPECT_EQ(20, length);
-       EXPECT_TRUE(memcmp(expectedPacket, packetPtr, totalLength));
+       EXPECT_TRUE(memcmp(expectedPacket, packetPtr, totalLength) == 0);
 
        delete[] packetPtr;
 }
 
 TEST_F(a_md5encryptTest, DecryptValid) {
-       cache_keylen = keylength;
+       cache_keylen = keyLength;
 
        EXPECT_TRUE(MD5authdecrypt(keytype, (u_char*)key, (u_int32*)expectedPacket, packetLength, 20));
 }
 
 TEST_F(a_md5encryptTest, DecryptInvalid) {
+       cache_keylen = keyLength;
+
        const char *invalidPacket = "ijklmnopqrstuvwx\0\0\0\0\x0c\x0e\x84\xcf\x0b\xb7\xa8\x68\x8e\x52\x38\xdb\xbc\x1c\x39\x54";
        
        EXPECT_FALSE(MD5authdecrypt(keytype, (u_char*)key, (u_int32*)invalidPacket, packetLength, 20));
index 9391a5a43498668789b55e6fff74b7f4a6219d50..f99fc4385e6a97bd0fefc9c121494d93303d5012 100644 (file)
@@ -23,3 +23,36 @@ TEST_F(hextolfpTest, NegativeInteger) {
        EXPECT_TRUE(IsEqual(expected, actual));
 }
 
+TEST_F(hextolfpTest, PositiveFraction) {
+       const char *str = "00002000.80000000"; // 8196.5 decimal
+       l_fp actual;
+
+       l_fp expected = {8192, -2147483648};
+
+       ASSERT_TRUE(hextolfp(str, &actual));
+       EXPECT_TRUE(IsEqual(expected, actual));
+}
+
+TEST_F(hextolfpTest, NegativeFraction) {
+       const char *str = "ffffffff.40000000"; // -1 + 0.25 decimal
+       l_fp actual;
+
+       l_fp expected = {-1, 1073741824}; //-1 + 0.25
+
+       ASSERT_TRUE(hextolfp(str, &actual));
+       EXPECT_TRUE(IsEqual(expected, actual));
+}
+
+TEST_F(hextolfpTest, IllegalNumberOfInteger) {
+       const char *str = "1000000.00000000"; // Missing one digit in integral part.
+       l_fp actual;
+
+       ASSERT_FALSE(hextolfp(str, &actual));
+}
+
+TEST_F(hextolfpTest, IllegalChar) {
+       const char *str = "10000000.0000h000"; // Illegal character h.
+       l_fp actual;
+
+       ASSERT_FALSE(hextolfp(str, &actual));
+}