/*
* Copyright 2010 The WebRTC Project Authors . All rights reserved .
*
* Use of this source code is governed by a BSD - style license
* that can be found in the LICENSE file in the root of the source
* tree . An additional intellectual property rights grant can be found
* in the file PATENTS . All contributing project authors may
* be found in the AUTHORS file in the root of the source tree .
* /
# include " rtc_base / win32 . h "
# include < string >
# include " rtc_base / ip_address . h "
# include " rtc_base / net_helpers . h "
# include " test / gtest . h "
# if ! defined ( WEBRTC_WIN )
# error Only for Windows
# endif
namespace webrtc {
class Win32Test : public : : testing : : Test {
public :
Win32Test ( ) { }
} ;
TEST_F ( Win32Test , IPv6AddressCompression ) {
IPAddress ipv6 ;
/ / Zero compression should be done on the leftmost 0 s when there are
/ / multiple longest series .
ASSERT_TRUE ( IPFromString ( " 2 a00 : 8 a00 : a000 : 1190 : 0000 : 0001 : 000 : 252 " , & ipv6 ) ) ;
EXPECT_EQ ( " 2 a00 : 8 a00 : a000 : 1190 : : 1 : 0 : 252 " , ipv6 . ToString ( ) ) ;
/ / Ensure the zero compression could handle multiple octects .
ASSERT_TRUE ( IPFromString ( " 0 : 0 : 0 : 0 : 0 : 0 : 0 : 1 " , & ipv6 ) ) ;
EXPECT_EQ ( " : : 1 " , ipv6 . ToString ( ) ) ;
/ / Make sure multiple 0 octects compressed .
ASSERT_TRUE ( IPFromString ( " fe80 : 0 : 0 : 0 : 2 aa : ff : fe9a : 4 ca2 " , & ipv6 ) ) ;
EXPECT_EQ ( " fe80 : : 2 aa : ff : fe9a : 4 ca2 " , ipv6 . ToString ( ) ) ;
/ / Test zero compression at the end of string .
ASSERT_TRUE ( IPFromString ( " 2 a00 : 8 a00 : a000 : 1190 : 0000 : 0001 : 000 : 00 " , & ipv6 ) ) ;
EXPECT_EQ ( " 2 a00 : 8 a00 : a000 : 1190 : 0 : 1 : : " , ipv6 . ToString ( ) ) ;
/ / Test zero compression at the beginning of string .
ASSERT_TRUE ( IPFromString ( " 0 : 0 : 000 : 1190 : 0000 : 0001 : 000 : 00 " , & ipv6 ) ) ;
EXPECT_EQ ( " : : 1190 : 0 : 1 : 0 : 0 " , ipv6 . ToString ( ) ) ;
/ / Test zero compression only done once .
ASSERT_TRUE ( IPFromString ( " 0 : 1 : 000 : 1190 : 0000 : 0001 : 000 : 01 " , & ipv6 ) ) ;
EXPECT_EQ ( " : : 1 : 0 : 1190 : 0 : 1 : 0 : 1 " , ipv6 . ToString ( ) ) ;
/ / Make sure noncompressable IPv6 is the same .
ASSERT_TRUE ( IPFromString ( " 1234 : 5678 : abcd : 1234 : 5678 : abcd : 1234 : 5678 " , & ipv6 ) ) ;
EXPECT_EQ ( " 1234 : 5678 : abcd : 1234 : 5678 : abcd : 1234 : 5678 " , ipv6 . ToString ( ) ) ;
}
/ / Test that invalid IPv6 addresses are recognized and false is returned .
TEST_F ( Win32Test , InvalidIPv6AddressParsing ) {
IPAddress ipv6 ;
/ / More than 1 run of " : : " s .
EXPECT_FALSE ( IPFromString ( " 1 : : 2 : : 3 " , & ipv6 ) ) ;
/ / More than 1 run of " : : " s in a longer address .
/ / See : https : / / bugs . chromium . org / p / webrtc / issues / detail ? id = 7592
EXPECT_FALSE ( IPFromString ( " 1 : : 2 : : 3 : : 4 : : 5 : : 6 : : 7 : : 8 " , & ipv6 ) ) ;
/ / Three ' : ' s in a row .
EXPECT_FALSE ( IPFromString ( " 1 : : : 2 " , & ipv6 ) ) ;
/ / Non - hex character .
EXPECT_FALSE ( IPFromString ( " test : : 1 " , & ipv6 ) ) ;
/ / More than 4 hex digits per group .
EXPECT_FALSE ( IPFromString ( " abcde : : 1 " , & ipv6 ) ) ;
/ / More than 8 groups .
EXPECT_FALSE ( IPFromString ( " 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 " , & ipv6 ) ) ;
/ / Less than 8 groups .
EXPECT_FALSE ( IPFromString ( " 1 : 2 : 3 : 4 : 5 : 6 : 7 " , & ipv6 ) ) ;
}
} / / namespace webrtc
Messung V0.5 in Prozent C=93 H=100 G=96
¤ Dauer der Verarbeitung: 0.10 Sekunden
¤
*© Formatika GbR, Deutschland