示例#1
0
        public void IPv6StringToAddress_RoundTrip(byte[] bytes, string addressString)
        {
            var  actualBytes = new byte[IPAddressParserStatics.IPv6AddressBytes];
            uint scope;
            uint err;

            fixed(byte *actualBytesPtr = actualBytes)
            {
                err = IPAddressPal.Ipv6StringToAddress(addressString, actualBytesPtr, actualBytes.Length, out scope);
            }

            Assert.Equal(IPAddressPal.SuccessErrorCode, err);
            for (int i = 0; i < bytes.Length; i++)
            {
                Assert.Equal(bytes[i], actualBytes[i]);
            }
            Assert.Equal(0, (int)scope);

            var buffer = new StringBuilder(IPAddressParser.INET6_ADDRSTRLEN);

            err = IPAddressPal.Ipv6AddressToString(actualBytes, 0, buffer);
            Assert.Equal(IPAddressPal.SuccessErrorCode, err);

            var roundTrippedAddressString = buffer.ToString();

            Assert.Equal(addressString, roundTrippedAddressString);
        }
示例#2
0
        public void IPv4StringToAddress_RoundTrip(byte[] bytes, string addressString)
        {
            var actualBytesArr = new byte[IPAddressParserStatics.IPv4AddressBytes];

            fixed(byte *actualBytes = actualBytesArr)
            {
                ushort port;
                uint   err = IPAddressPal.Ipv4StringToAddress(addressString, actualBytes, IPAddressParserStatics.IPv4AddressBytes, out port);

                Assert.Equal(IPAddressPal.SuccessErrorCode, err);
                Assert.Equal(bytes[0], actualBytes[0]);
                Assert.Equal(bytes[1], actualBytes[1]);
                Assert.Equal(bytes[2], actualBytes[2]);
                Assert.Equal(bytes[3], actualBytes[3]);
                Assert.Equal(0, port);

                var buffer = new StringBuilder(IPAddressParser.INET_ADDRSTRLEN);

                err = IPAddressPal.Ipv4AddressToString(actualBytesArr, buffer);
                Assert.Equal(IPAddressPal.SuccessErrorCode, err);

                var roundTrippedAddressString = buffer.ToString();

                Assert.Equal(addressString, roundTrippedAddressString);
            }
        }
示例#3
0
        public void IPv6AddressToString_Valid(byte[] bytes, string addressString)
        {
            var  buffer = new StringBuilder(IPAddressParser.INET6_ADDRSTRLEN);
            uint err    = IPAddressPal.Ipv6AddressToString(bytes, 0, buffer);

            Assert.Equal(IPAddressPal.SuccessErrorCode, err);
            Assert.Equal(addressString, buffer.ToString());
        }
示例#4
0
        public void IPv4StringToAddress_Invalid_Port()
        {
            const string AddressString = "127.0.64.255:80";

            var    bytes = stackalloc byte[IPAddressParserStatics.IPv4AddressBytes];
            ushort port;
            uint   err = IPAddressPal.Ipv4StringToAddress(AddressString, bytes, IPAddressParserStatics.IPv4AddressBytes, out port);

            Assert.True(err != IPAddressPal.SuccessErrorCode || port != 0);
        }
示例#5
0
        public void IPv4StringToAddress_Invalid_Empty()
        {
            const string AddressString = "";

            var    bytes = new byte[IPAddressParserStatics.IPv4AddressBytes];
            ushort port;
            uint   err = IPAddressPal.Ipv4StringToAddress(AddressString, bytes, out port);

            Assert.NotEqual(err, IPAddressPal.SuccessErrorCode);
        }
示例#6
0
        public void IPv6StringToAddress_Invalid_Empty()
        {
            const string AddressString = "";

            var  bytes = new byte[IPAddressParser.IPv6AddressBytes];
            uint scope;
            uint err = IPAddressPal.Ipv6StringToAddress(AddressString, bytes, out scope);

            Assert.NotEqual(err, IPAddressPal.SuccessErrorCode);
        }
示例#7
0
        public void IPv6StringToAddress_Invalid_Port()
        {
            const string AddressString = "[2001:db8::1]:xx";

            var  bytes = new byte[IPAddressParserStatics.IPv6AddressBytes];
            uint scope;
            uint err = IPAddressPal.Ipv6StringToAddress(AddressString, bytes, out scope);

            Assert.NotEqual(err, IPAddressPal.SuccessErrorCode);
        }
示例#8
0
        public void IPv6StringToAddress_Invalid_NotAnAddress()
        {
            const string AddressString = "hello, world";

            var  bytes = new byte[IPAddressParserStatics.IPv6AddressBytes];
            uint scope;
            uint err = IPAddressPal.Ipv6StringToAddress(AddressString, bytes, out scope);

            Assert.NotEqual(err, IPAddressPal.SuccessErrorCode);
        }
示例#9
0
        public void IPv6StringToAddress_Invalid_Compression()
        {
            const string AddressString = "2001::db8::1";

            var  bytes = stackalloc byte[IPAddressParserStatics.IPv6AddressBytes];
            uint scope;
            uint err = IPAddressPal.Ipv6StringToAddress(AddressString, bytes, IPAddressParserStatics.IPv6AddressBytes, out scope);

            Assert.NotEqual(err, IPAddressPal.SuccessErrorCode);
        }
示例#10
0
        public void IPv4StringToAddress_Invalid_NotAnAddress()
        {
            const string AddressString = "hello, world";

            var    bytes = stackalloc byte[IPAddressParserStatics.IPv4AddressBytes];
            ushort port;
            uint   err = IPAddressPal.Ipv4StringToAddress(AddressString, bytes, IPAddressParserStatics.IPv4AddressBytes, out port);

            Assert.NotEqual(err, IPAddressPal.SuccessErrorCode);
        }
示例#11
0
        public void IPv4StringToAddress_Valid()
        {
            const string AddressString = "127.0.64.255";

            var    bytes = new byte[IPAddressParserStatics.IPv4AddressBytes];
            ushort port;
            uint   err = IPAddressPal.Ipv4StringToAddress(AddressString, bytes, out port);

            Assert.Equal(IPAddressPal.SuccessErrorCode, err);
            Assert.Equal(127, bytes[0]);
            Assert.Equal(0, bytes[1]);
            Assert.Equal(64, bytes[2]);
            Assert.Equal(255, bytes[3]);
            Assert.Equal(0, port);
        }
示例#12
0
        public void IPv4StringToAddress_Valid_ClassC()
        {
            const string AddressString = "192.65536";

            var    bytes = new byte[IPAddressParserStatics.IPv4AddressBytes];
            ushort port;
            uint   err = IPAddressPal.Ipv4StringToAddress(AddressString, bytes, out port);

            Assert.Equal(IPAddressPal.SuccessErrorCode, err);
            Assert.Equal(192, bytes[0]);
            Assert.Equal(1, bytes[1]);
            Assert.Equal(0, bytes[2]);
            Assert.Equal(0, bytes[3]);
            Assert.Equal(0, port);
        }
示例#13
0
        public void IPv4StringToAddress_Valid_ClassA()
        {
            const string AddressString = "2130706433";

            var    bytes = stackalloc byte[IPAddressParserStatics.IPv4AddressBytes];
            ushort port;
            uint   err = IPAddressPal.Ipv4StringToAddress(AddressString, bytes, IPAddressParserStatics.IPv4AddressBytes, out port);

            Assert.Equal(IPAddressPal.SuccessErrorCode, err);
            Assert.Equal(127, bytes[0]);
            Assert.Equal(0, bytes[1]);
            Assert.Equal(0, bytes[2]);
            Assert.Equal(1, bytes[3]);
            Assert.Equal(0, port);
        }
示例#14
0
        public void IPv6StringToAddress_Valid_Localhost()
        {
            const string AddressString = "::1";
            var          expectedBytes = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 };

            var bytes = new byte[IPAddressParser.IPv6AddressBytes];

            Assert.Equal(bytes.Length, expectedBytes.Length);

            uint scope;
            uint err = IPAddressPal.Ipv6StringToAddress(AddressString, bytes, out scope);

            Assert.Equal(IPAddressPal.SuccessErrorCode, err);
            for (int i = 0; i < expectedBytes.Length; i++)
            {
                Assert.Equal(expectedBytes[i], bytes[i]);
            }
            Assert.Equal(0, (int)scope);
        }
示例#15
0
        public void IPv6StringToAddress_Valid_Compressed()
        {
            const string AddressString = "2001:db8::1";
            var          expectedBytes = new byte[] { 0x20, 0x01, 0x0d, 0x0b8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 };

            var bytes = new byte[IPAddressParserStatics.IPv6AddressBytes];

            Assert.Equal(bytes.Length, expectedBytes.Length);

            uint scope;
            uint err = IPAddressPal.Ipv6StringToAddress(AddressString, bytes, out scope);

            Assert.Equal(IPAddressPal.SuccessErrorCode, err);
            for (int i = 0; i < expectedBytes.Length; i++)
            {
                Assert.Equal(expectedBytes[i], bytes[i]);
            }
            Assert.Equal(0, (int)scope);
        }
示例#16
0
        public void IPv6StringToAddress_Valid_Port_2()
        {
            const string AddressString = "[2001:db8:aaaa:bbbb:cccc:dddd:eeee:1]:";
            var          expectedBytes = new byte[] { 0x20, 0x01, 0x0d, 0x0b8, 0xaa, 0xaa, 0xbb, 0xbb, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0x00, 0x01 };

            var bytes = new byte[IPAddressParserStatics.IPv6AddressBytes];

            Assert.Equal(bytes.Length, expectedBytes.Length);

            uint scope;
            uint err = IPAddressPal.Ipv6StringToAddress(AddressString, bytes, out scope);

            Assert.Equal(IPAddressPal.SuccessErrorCode, err);
            for (int i = 0; i < expectedBytes.Length; i++)
            {
                Assert.Equal(expectedBytes[i], bytes[i]);
            }
            Assert.Equal(0, (int)scope);
        }
示例#17
0
        public void IPv6StringToAddress_Valid_IPv4Compatible()
        {
            const string AddressString = "::ffff:222.1.41.90";
            var          expectedBytes = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 222, 1, 41, 90 };

            var bytes = new byte[IPAddressParserStatics.IPv6AddressBytes];

            Assert.Equal(bytes.Length, expectedBytes.Length);

            uint scope;
            uint err = IPAddressPal.Ipv6StringToAddress(AddressString, bytes, out scope);

            Assert.Equal(IPAddressPal.SuccessErrorCode, err);
            for (int i = 0; i < expectedBytes.Length; i++)
            {
                Assert.Equal(expectedBytes[i], bytes[i]);
            }
            Assert.Equal(0, (int)scope);
        }