diff --git a/src/.editorconfig b/src/.editorconfig index 25c629fc..b861ef86 100644 --- a/src/.editorconfig +++ b/src/.editorconfig @@ -100,6 +100,7 @@ dotnet_style_qualification_for_field = false:silent dotnet_style_qualification_for_property = false:silent dotnet_style_qualification_for_method = false:silent dotnet_style_qualification_for_event = false:silent + [*.cs] #### Styles de nommage #### @@ -121,31 +122,31 @@ dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case dotnet_naming_symbols.interface.applicable_kinds = interface dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected -dotnet_naming_symbols.interface.required_modifiers = +dotnet_naming_symbols.interface.required_modifiers = dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected -dotnet_naming_symbols.types.required_modifiers = +dotnet_naming_symbols.types.required_modifiers = dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected -dotnet_naming_symbols.non_field_members.required_modifiers = +dotnet_naming_symbols.non_field_members.required_modifiers = # Styles de nommage dotnet_naming_style.begins_with_i.required_prefix = I -dotnet_naming_style.begins_with_i.required_suffix = -dotnet_naming_style.begins_with_i.word_separator = +dotnet_naming_style.begins_with_i.required_suffix = +dotnet_naming_style.begins_with_i.word_separator = dotnet_naming_style.begins_with_i.capitalization = pascal_case -dotnet_naming_style.pascal_case.required_prefix = -dotnet_naming_style.pascal_case.required_suffix = -dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = dotnet_naming_style.pascal_case.capitalization = pascal_case -dotnet_naming_style.pascal_case.required_prefix = -dotnet_naming_style.pascal_case.required_suffix = -dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = dotnet_naming_style.pascal_case.capitalization = pascal_case # SA1208: System using directives should be placed before other using directives @@ -231,29 +232,29 @@ dotnet_naming_rule.membres_autres_que_des_champs_should_be_casse_pascal.style = dotnet_naming_symbols.interface.applicable_kinds = interface dotnet_naming_symbols.interface.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected -dotnet_naming_symbols.interface.required_modifiers = +dotnet_naming_symbols.interface.required_modifiers = dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum dotnet_naming_symbols.types.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected -dotnet_naming_symbols.types.required_modifiers = +dotnet_naming_symbols.types.required_modifiers = dotnet_naming_symbols.membres_autres_que_des_champs.applicable_kinds = property, event, method dotnet_naming_symbols.membres_autres_que_des_champs.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected -dotnet_naming_symbols.membres_autres_que_des_champs.required_modifiers = +dotnet_naming_symbols.membres_autres_que_des_champs.required_modifiers = # Styles de nommage dotnet_naming_style.commence_par_i.required_prefix = I -dotnet_naming_style.commence_par_i.required_suffix = -dotnet_naming_style.commence_par_i.word_separator = +dotnet_naming_style.commence_par_i.required_suffix = +dotnet_naming_style.commence_par_i.word_separator = dotnet_naming_style.commence_par_i.capitalization = pascal_case -dotnet_naming_style.casse_pascal.required_prefix = -dotnet_naming_style.casse_pascal.required_suffix = -dotnet_naming_style.casse_pascal.word_separator = +dotnet_naming_style.casse_pascal.required_prefix = +dotnet_naming_style.casse_pascal.required_suffix = +dotnet_naming_style.casse_pascal.word_separator = dotnet_naming_style.casse_pascal.capitalization = pascal_case -dotnet_naming_style.casse_pascal.required_prefix = -dotnet_naming_style.casse_pascal.required_suffix = -dotnet_naming_style.casse_pascal.word_separator = +dotnet_naming_style.casse_pascal.required_prefix = +dotnet_naming_style.casse_pascal.required_suffix = +dotnet_naming_style.casse_pascal.word_separator = dotnet_naming_style.casse_pascal.capitalization = pascal_case diff --git a/src/System.Net.IPNetwork/IPNetworkCollection.cs b/src/System.Net.IPNetwork/IPNetworkCollection.cs index 9fba0225..33f23d6d 100644 --- a/src/System.Net.IPNetwork/IPNetworkCollection.cs +++ b/src/System.Net.IPNetwork/IPNetworkCollection.cs @@ -112,13 +112,11 @@ public IPNetwork2 this[BigInteger i] #region IEnumerable Members - /// IEnumerator IEnumerable.GetEnumerator() { return this; } - /// IEnumerator IEnumerable.GetEnumerator() { return this; diff --git a/src/TestProject/BigIntegerBitWiseUnitTest.cs b/src/TestProject/BigIntegerBitWiseUnitTest.cs index 04c0e819..9d0efa90 100644 --- a/src/TestProject/BigIntegerBitWiseUnitTest.cs +++ b/src/TestProject/BigIntegerBitWiseUnitTest.cs @@ -2,40 +2,25 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net.TestProject -{ - using System.Numerics; - using Microsoft.VisualStudio.TestTools.UnitTesting; +namespace TestProject; - [TestClass] - public class BigIntegerBitWiseUnitTest +[TestClass] +public class BigIntegerBitWiseUnitTest +{ + [TestMethod] + [DataRow(new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }, 4, new byte[] { 0x0 })] + [DataRow(new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }, 8, + new byte[] { 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0xFF, 0x0 })] + public void Test1(byte[] bytes, int reverseLength, byte[] expected) { - [TestMethod] - public void Test1() - { - byte[] bytes = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }; - var reverseme = new BigInteger(bytes); - BigInteger reversed = reverseme.PositiveReverse(4); - - Assert.AreEqual(0, (int)reversed); - } - - [TestMethod] - public void Test2() - { - byte[] bytes = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }; var reverseme = new BigInteger(bytes); - BigInteger reversed = reverseme.PositiveReverse(8); + BigInteger reversed = reverseme.PositiveReverse(reverseLength); byte[] result = reversed.ToByteArray(); + Assert.AreEqual(expected.Length, result.Length); - Assert.AreEqual(0x0, result[0]); - Assert.AreEqual(0x0, result[1]); - Assert.AreEqual(0x0, result[2]); - Assert.AreEqual(0x0, result[3]); - Assert.AreEqual(0xFF, result[4]); - Assert.AreEqual(0xFF, result[5]); - Assert.AreEqual(0xFF, result[6]); - Assert.AreEqual(0xFF, result[7]); + for (int i = 0; i < expected.Length; i++) + { + Assert.AreEqual(expected[i], result[i], i.ToString()); + } } - } -} +} \ No newline at end of file diff --git a/src/TestProject/BigIntegerToUnitTest.cs b/src/TestProject/BigIntegerToUnitTest.cs index d43545a4..43029c26 100644 --- a/src/TestProject/BigIntegerToUnitTest.cs +++ b/src/TestProject/BigIntegerToUnitTest.cs @@ -2,27 +2,24 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net.TestProject -{ - using System.Numerics; - using Microsoft.VisualStudio.TestTools.UnitTesting; +namespace TestProject; - [TestClass] - public class BigIntegerToUnitTest +[TestClass] +public class BigIntegerToUnitTest +{ + [TestMethod] + public void TestToOctalString1() { - [TestMethod] - public void TestToOctalString1() - { - byte[] bytes = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }; + byte[] bytes = { 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }; var convertme = new BigInteger(bytes); string result = convertme.ToOctalString(); Assert.AreEqual("037777777777", result); } - [TestMethod] - public void TestToOctalString3() - { + [TestMethod] + public void TestToOctalString3() + { var bigi = BigInteger.Parse("1048576"); bigi++; string result = bigi.ToOctalString(); @@ -30,9 +27,9 @@ public void TestToOctalString3() Assert.AreEqual("04000001", result); } - [TestMethod] - public void TestToOctalString01() - { + [TestMethod] + public void TestToOctalString01() + { BigInteger bigi = BigInteger.Zero; bigi++; string result = bigi.ToOctalString(); @@ -40,9 +37,9 @@ public void TestToOctalString01() Assert.AreEqual("01", result); } - [TestMethod] - public void TestToOctalString02() - { + [TestMethod] + public void TestToOctalString02() + { BigInteger bigi = BigInteger.Zero; bigi--; string result = bigi.ToOctalString(); @@ -50,9 +47,9 @@ public void TestToOctalString02() Assert.AreEqual("377", result); } - [TestMethod] - public void TestToOctalString03() - { + [TestMethod] + public void TestToOctalString03() + { BigInteger bigi = BigInteger.Zero; bigi--; bigi--; @@ -66,29 +63,29 @@ public void TestToOctalString03() Assert.AreEqual("371", result); } - [TestMethod] - public void TestToHexadecimalString1() - { - byte[] bytes = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }; + [TestMethod] + public void TestToHexadecimalString1() + { + byte[] bytes = { 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }; var convertme = new BigInteger(bytes); string result = convertme.ToHexadecimalString(); Assert.AreEqual("0FFFFFFFF", result); } - [TestMethod] - public void TestToBinaryString1() - { - byte[] bytes = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }; + [TestMethod] + public void TestToBinaryString1() + { + byte[] bytes = { 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }; var convertme = new BigInteger(bytes); string result = convertme.ToBinaryString(); Assert.AreEqual("011111111111111111111111111111111", result); } - [TestMethod] - public void TestToBinaryString01() - { + [TestMethod] + public void TestToBinaryString01() + { BigInteger bigi = BigInteger.Zero; bigi++; string result = bigi.ToBinaryString(); @@ -96,23 +93,23 @@ public void TestToBinaryString01() Assert.AreEqual("01", result); } - [TestMethod] - public void TestToBinaryString2() - { + [TestMethod] + public void TestToBinaryString2() + { var convertme = new BigInteger(-1); string result = convertme.ToBinaryString(); Assert.AreEqual("11111111", result); } - [TestMethod] - public void TestToBinaryString3() - { - byte[] bytes = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; + [TestMethod] + public void TestToBinaryString3() + { + byte[] bytes = + { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; var convertme = new BigInteger(bytes); string result = convertme.ToBinaryString(); Assert.AreEqual("11111111", result); } - } -} +} \ No newline at end of file diff --git a/src/TestProject/CidrClassFullIpv4UnitTest.cs b/src/TestProject/CidrClassFullIpv4UnitTest.cs new file mode 100644 index 00000000..2ab99e2f --- /dev/null +++ b/src/TestProject/CidrClassFullIpv4UnitTest.cs @@ -0,0 +1,81 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject; + +[TestClass] +public class CidrClassFullIpv4UnitTest +{ + [TestMethod] + public void TestTryGuessCidrNull() + { + var cidrguess = new CidrClassFull(); + + byte cidr; + bool parsed = cidrguess.TryGuessCidr(null, out cidr); + + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(0, cidr, "cidr"); + } + + [TestMethod] + public void TestTryGuessCidrA() + { + var cidrguess = new CidrClassFull(); + + byte cidr; + bool parsed = cidrguess.TryGuessCidr("10.0.0.0", out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(8, cidr, "cidr"); + } + + [TestMethod] + public void TestTryGuessCidrB() + { + var cidrguess = new CidrClassFull(); + + byte cidr; + bool parsed = cidrguess.TryGuessCidr("172.0.0.0", out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(16, cidr, "cidr"); + } + + [TestMethod] + public void TestTryGuessCidrC() + { + var cidrguess = new CidrClassFull(); + + byte cidr; + bool parsed = cidrguess.TryGuessCidr("192.0.0.0", out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(24, cidr, "cidr"); + } + + [TestMethod] + public void TestTryGuessCidrD() + { + var cidrguess = new CidrClassFull(); + + byte cidr; + bool parsed = cidrguess.TryGuessCidr("224.0.0.0", out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(24, cidr, "cidr"); + } + + [TestMethod] + public void TestTryGuessCidrE() + { + var cidrguess = new CidrClassFull(); + + byte cidr; + bool parsed = cidrguess.TryGuessCidr("240.0.0.0", out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(24, cidr, "cidr"); + } +} \ No newline at end of file diff --git a/src/TestProject/CidrClassFullIpv6UnitTest.cs b/src/TestProject/CidrClassFullIpv6UnitTest.cs new file mode 100644 index 00000000..2ed51dd3 --- /dev/null +++ b/src/TestProject/CidrClassFullIpv6UnitTest.cs @@ -0,0 +1,45 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject; + +[TestClass] +public class CidrClassFullIpv6UnitTest +{ + [TestMethod] + public void TestIpV6TryGuessCidrNull() + { + var cidrguess = new CidrClassFull(); + + byte cidr; + bool parsed = cidrguess.TryGuessCidr(null, out cidr); + + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(0, cidr, "cidr"); + } + + [TestMethod] + public void TestIpV6TryGuessCidr1() + { + var cidrguess = new CidrClassFull(); + + byte cidr; + bool parsed = cidrguess.TryGuessCidr("::", out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(64, cidr, "cidr"); + } + + [TestMethod] + public void TestIpV6TryGuessCidr2() + { + var cidrguess = new CidrClassFull(); + + byte cidr; + bool parsed = cidrguess.TryGuessCidr("2001:0db8::", out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(64, cidr, "cidr"); + } +} \ No newline at end of file diff --git a/src/TestProject/CidrClassFullUnitTest.cs b/src/TestProject/CidrClassFullUnitTest.cs deleted file mode 100644 index 154fb8f7..00000000 --- a/src/TestProject/CidrClassFullUnitTest.cs +++ /dev/null @@ -1,129 +0,0 @@ -// -// Copyright (c) IPNetwork. All rights reserved. -// - -namespace System.Net.TestProject -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class CidrClassFullUnitTest - { - #region IPV4 - - [TestMethod] - public void TestTryGuessCidrNull() - { - var cidrguess = new CidrClassFull(); - - byte cidr; - bool parsed = cidrguess.TryGuessCidr(null, out cidr); - - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(0, cidr, "cidr"); - } - - [TestMethod] - public void TestTryGuessCidrA() - { - var cidrguess = new CidrClassFull(); - - byte cidr; - bool parsed = cidrguess.TryGuessCidr("10.0.0.0", out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(8, cidr, "cidr"); - } - - [TestMethod] - public void TestTryGuessCidrB() - { - var cidrguess = new CidrClassFull(); - - byte cidr; - bool parsed = cidrguess.TryGuessCidr("172.0.0.0", out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(16, cidr, "cidr"); - } - - [TestMethod] - public void TestTryGuessCidrC() - { - var cidrguess = new CidrClassFull(); - - byte cidr; - bool parsed = cidrguess.TryGuessCidr("192.0.0.0", out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(24, cidr, "cidr"); - } - - [TestMethod] - public void TestTryGuessCidrD() - { - var cidrguess = new CidrClassFull(); - - byte cidr; - bool parsed = cidrguess.TryGuessCidr("224.0.0.0", out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(24, cidr, "cidr"); - } - - [TestMethod] - - public void TestTryGuessCidrE() - { - var cidrguess = new CidrClassFull(); - - byte cidr; - bool parsed = cidrguess.TryGuessCidr("240.0.0.0", out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(24, cidr, "cidr"); - } - - #endregion - - #region IPV6 - - [TestMethod] - public void TestIpV6TryGuessCidrNull() - { - var cidrguess = new CidrClassFull(); - - byte cidr; - bool parsed = cidrguess.TryGuessCidr(null, out cidr); - - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(0, cidr, "cidr"); - } - - [TestMethod] - public void TestIpV6TryGuessCidr1() - { - var cidrguess = new CidrClassFull(); - - byte cidr; - bool parsed = cidrguess.TryGuessCidr("::", out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(64, cidr, "cidr"); - } - - [TestMethod] - public void TestIpV6TryGuessCidr2() - { - var cidrguess = new CidrClassFull(); - - byte cidr; - bool parsed = cidrguess.TryGuessCidr("2001:0db8::", out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(64, cidr, "cidr"); - } - - #endregion - } -} diff --git a/src/TestProject/CidrClassLessUnitTest.cs b/src/TestProject/CidrClassLessUnitTest.cs index df43c120..a136ae88 100644 --- a/src/TestProject/CidrClassLessUnitTest.cs +++ b/src/TestProject/CidrClassLessUnitTest.cs @@ -2,18 +2,16 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net.TestProject +namespace TestProject; + +[TestClass] +public class CidrClassLessUnitTest { - using Microsoft.VisualStudio.TestTools.UnitTesting; + #region IPV4 - [TestClass] - public class CidrClassLessUnitTest + [TestMethod] + public void TestTryGuessCidrNull() { - #region IPV4 - - [TestMethod] - public void TestTryGuessCidrNull() - { var cidrguess = new CidrClassLess(); byte cidr; @@ -23,9 +21,9 @@ public void TestTryGuessCidrNull() Assert.AreEqual(0, cidr, "cidr"); } - [TestMethod] - public void TestTryGuessCidrA() - { + [TestMethod] + public void TestTryGuessCidrA() + { var cidrguess = new CidrClassLess(); byte cidr; @@ -35,9 +33,9 @@ public void TestTryGuessCidrA() Assert.AreEqual(32, cidr, "cidr"); } - [TestMethod] - public void TestTryGuessCidrB() - { + [TestMethod] + public void TestTryGuessCidrB() + { var cidrguess = new CidrClassLess(); byte cidr; @@ -47,9 +45,9 @@ public void TestTryGuessCidrB() Assert.AreEqual(32, cidr, "cidr"); } - [TestMethod] - public void TestTryGuessCidrC() - { + [TestMethod] + public void TestTryGuessCidrC() + { var cidrguess = new CidrClassLess(); byte cidr; @@ -59,9 +57,9 @@ public void TestTryGuessCidrC() Assert.AreEqual(32, cidr, "cidr"); } - [TestMethod] - public void TestTryGuessCidrD() - { + [TestMethod] + public void TestTryGuessCidrD() + { var cidrguess = new CidrClassLess(); byte cidr; @@ -71,10 +69,9 @@ public void TestTryGuessCidrD() Assert.AreEqual(32, cidr, "cidr"); } - [TestMethod] - - public void TestTryGuessCidrE() - { + [TestMethod] + public void TestTryGuessCidrE() + { var cidrguess = new CidrClassLess(); byte cidr; @@ -84,13 +81,13 @@ public void TestTryGuessCidrE() Assert.AreEqual(32, cidr, "cidr"); } - #endregion + #endregion - #region IPV6 + #region IPV6 - [TestMethod] - public void TestIpV6TryGuessCidrNull() - { + [TestMethod] + public void TestIpV6TryGuessCidrNull() + { var cidrguess = new CidrClassLess(); byte cidr; @@ -100,9 +97,9 @@ public void TestIpV6TryGuessCidrNull() Assert.AreEqual(0, cidr, "cidr"); } - [TestMethod] - public void TestIpV6TryGuessCidr1() - { + [TestMethod] + public void TestIpV6TryGuessCidr1() + { var cidrguess = new CidrClassLess(); byte cidr; @@ -112,9 +109,9 @@ public void TestIpV6TryGuessCidr1() Assert.AreEqual(128, cidr, "cidr"); } - [TestMethod] - public void TestIpV6TryGuessCidr2() - { + [TestMethod] + public void TestIpV6TryGuessCidr2() + { var cidrguess = new CidrClassLess(); byte cidr; @@ -124,6 +121,5 @@ public void TestIpV6TryGuessCidr2() Assert.AreEqual(128, cidr, "cidr"); } - #endregion - } -} + #endregion +} \ No newline at end of file diff --git a/src/TestProject/ConsoleUnitTest.cs b/src/TestProject/ConsoleUnitTest.cs index cf5fc683..44a335a6 100644 --- a/src/TestProject/ConsoleUnitTest.cs +++ b/src/TestProject/ConsoleUnitTest.cs @@ -2,77 +2,38 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net.TestProject -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class ConsoleUnitTest - { - [TestMethod] - public void TestMethod1() - { - ConsoleApplication.Program.Main(new[] { "10.0.0.0/8" }); - } - - [TestMethod] - public void TestMethod2() - { - ConsoleApplication.Program.Main(new[] { "-Nnmcbflu", "10.0.0.0/8" }); - } - - [TestMethod] - public void TestMethod3() - { - ConsoleApplication.Program.Main(new[] { "-N", "-n", "-m", "-c", "-b", "-f", "-l", "-u", "10.0.0.0/8" }); - } - - [TestMethod] - public void TestMethod4() - { - ConsoleApplication.Program.Main(new[] { "10.0.0.0" }); - } - - [TestMethod] - public void TestMethod5() - { - ConsoleApplication.Program.Main(new[] { "-s", "16", "10.0.0.0/8" }); - } - - [TestMethod] - public void TestMethod6() - { - ConsoleApplication.Program.Main(new[] { "-d", "24", "-x", "-S", "192.168.168.0/24", "192.168.169.1/24", "192.168.170.2/24", "192.168.171.3/24", "192.168.172.3/24", "1.1.1.1" }); - } - - [TestMethod] - public void TestMethod7() - { - ConsoleApplication.Program.Main(new[] { "-i", "192.168.168.0/24", "192.168.169.1/24", "192.168.170.2/24", "192.168.171.3/24", "192.168.172.3/24", "1.1.1.1" }); - } - [TestMethod] - public void TestMethod8() - { - ConsoleApplication.Program.Main(new[] { "-d", "24", "-w", "192.168.168.0/24", "192.168.169.1/24", "192.168.170.2/24", "192.168.171.3/24", "192.168.172.3/24", "1.1.1.1" }); - } +namespace TestProject; - [TestMethod] - public void TestMethod9() - { - ConsoleApplication.Program.Main(new[] { ":" }); - } - - [TestMethod] - public void TestMethod10() - { - ConsoleApplication.Program.Main(new[] { "-C", "10.0.0.0/8", "1.1.1.1" }); - } - - [TestMethod] - public void TestMethod11() - { - ConsoleApplication.Program.Main(new[] { "-o", "10.0.0.0/8", "1.1.1.1" }); +[TestClass] +public class ConsoleUnitTest +{ + [DataTestMethod] + [DataRow(new[] { "10.0.0.0/8" })] + [DataRow(new[] { "-Nnmcbflu", "10.0.0.0/8" })] + [DataRow(new[] { "-N", "-n", "-m", "-c", "-b", "-f", "-l", "-u", "10.0.0.0/8" })] + [DataRow(new[] { "10.0.0.0" })] + [DataRow(new[] { "-s", "16", "10.0.0.0/8" })] + [DataRow(new[] + { + "-d", "24", "-x", "-S", "192.168.168.0/24", "192.168.169.1/24", "192.168.170.2/24", "192.168.171.3/24", + "192.168.172.3/24", "1.1.1.1" + })] + [DataRow(new[] + { + "-i", "192.168.168.0/24", "192.168.169.1/24", "192.168.170.2/24", "192.168.171.3/24", "192.168.172.3/24", + "1.1.1.1" + })] + [DataRow(new[] + { + "-d", "24", "-w", "192.168.168.0/24", "192.168.169.1/24", "192.168.170.2/24", "192.168.171.3/24", + "192.168.172.3/24", "1.1.1.1" + })] + [DataRow(new[] { ":" })] + [DataRow(new[] { "-C", "10.0.0.0/8", "1.1.1.1" })] + [DataRow(new[] { "-o", "10.0.0.0/8", "1.1.1.1" })] + public void TestProgramMain(string[] args) + { + Program.Main(args); } - } -} +} \ No newline at end of file diff --git a/src/TestProject/ContainsUnitTest.cs b/src/TestProject/ContainsUnitTest.cs index ca65a5f8..6d87376d 100644 --- a/src/TestProject/ContainsUnitTest.cs +++ b/src/TestProject/ContainsUnitTest.cs @@ -2,92 +2,46 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net.TestProject -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; +namespace TestProject; - /// - /// ContainsUnitTest test every Contiains method. - /// - [TestClass] - public class ContainsUnitTest +/// +/// ContainsUnitTest test every Contiains method. +/// +[TestClass] +public class ContainsUnitTest +{ + [DataTestMethod] + [DataRow("192.168.0.1/24", "192.168.0.1/24", true)] + [DataRow("192.168.0.1/16", "192.168.1.1/24", true)] + [DataRow("192.168.0.1/16", "10.10.10.0/24", false)] + [DataRow("192.168.1.1/24", "192.168.0.0/16", false)] + public void TestContainsNetwork(string network1, string networkOrAddress, bool expected) { - [TestMethod] - public void TestContains1() - { - var ipnetwork = IPNetwork2.Parse("192.168.0.1/24"); - var ipaddress = IPAddress.Parse("192.168.0.100"); - - bool result = ipnetwork.Contains(ipaddress); - bool expected = true; - - Assert.AreEqual(expected, result, "contains"); - } - - [TestMethod] - public void TestContains2() - { - var ipnetwork = IPNetwork2.Parse("192.168.0.1/24"); - var ipaddress = IPAddress.Parse("10.10.10.10"); - - bool result = ipnetwork.Contains(ipaddress); - bool expected = false; - - Assert.AreEqual(expected, result, "contains"); - } - - [TestMethod] - public void TestContains3() - { - var ipnetwork = IPNetwork2.Parse("192.168.0.1/24"); - var ipnetwork2 = IPNetwork2.Parse("192.168.0.1/24"); + var ipnetwork = IPNetwork2.Parse(network1); + var ipnetwork2 = IPNetwork2.Parse(networkOrAddress); bool result = ipnetwork.Contains(ipnetwork2); - bool expected = true; Assert.AreEqual(expected, result, "contains"); } - [TestMethod] - public void TestContains4() - { - var ipnetwork = IPNetwork2.Parse("192.168.0.1/16"); - var ipnetwork2 = IPNetwork2.Parse("192.168.1.1/24"); - - bool result = ipnetwork.Contains(ipnetwork2); - bool expected = true; - - Assert.AreEqual(expected, result, "contains"); - } - - [TestMethod] - public void TestContains5() - { - var ipnetwork = IPNetwork2.Parse("192.168.0.1/16"); - var ipnetwork2 = IPNetwork2.Parse("10.10.10.0/24"); - - bool result = ipnetwork.Contains(ipnetwork2); - bool expected = false; - - Assert.AreEqual(expected, result, "contains"); - } - - [TestMethod] - public void TestContains6() - { - var ipnetwork = IPNetwork2.Parse("192.168.1.1/24"); - var ipnetwork2 = IPNetwork2.Parse("192.168.0.0/16"); - - bool result = ipnetwork.Contains(ipnetwork2); - bool expected = false; + [DataTestMethod] + [DataRow("192.168.0.1/24", "192.168.0.100", true)] + [DataRow("192.168.0.1/24", "10.10.10.10", false)] + public void TestContainsAdrress(string network1, string networkOrAddress, bool expected) + { + var ipnetwork = IPNetwork2.Parse(network1); + bool result; + var ipaddress = IPAddress.Parse(networkOrAddress); + result = ipnetwork.Contains(ipaddress); Assert.AreEqual(expected, result, "contains"); } - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestContainsStatic3() - { + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestContainsStatic3() + { IPNetwork2 ipnetwork = null; IPNetwork2 ipnetwork2 = null; @@ -96,11 +50,11 @@ public void TestContainsStatic3() #pragma warning restore 0618 } - [TestMethod] - public void TestContainsStatic4() - { - var ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; - var ipnetwork2 = IPNetwork2.IANA_CBLK_RESERVED1; + [TestMethod] + public void TestContainsStatic4() + { + IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; + IPNetwork2 ipnetwork2 = IPNetwork2.IANA_CBLK_RESERVED1; #pragma warning disable 0618 bool result = IPNetwork2.Contains(ipnetwork, ipnetwork2); @@ -109,20 +63,20 @@ public void TestContainsStatic4() Assert.IsTrue(result, "result"); } - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestContains8() - { + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestContains8() + { var ipnetwork = IPNetwork2.Parse("0.0.0.0/0"); IPNetwork2 ipnetwork2 = null; bool result = ipnetwork.Contains(ipnetwork2); } - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestContainsStatic1() - { + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestContainsStatic1() + { IPNetwork2 ipnetwork = null; IPAddress ipaddress = null; @@ -131,10 +85,10 @@ public void TestContainsStatic1() #pragma warning restore 0618 } - [TestMethod] - public void TestContainsStatic2() - { - var ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; + [TestMethod] + public void TestContainsStatic2() + { + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; var ipaddress = IPAddress.Parse("10.0.0.1"); #pragma warning disable 0618 @@ -143,27 +97,27 @@ public void TestContainsStatic2() Assert.IsTrue(result, "result"); } - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestContains10() - { + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestContains10() + { var ipnetwork = IPNetwork2.Parse("0.0.0.0/0"); IPAddress ipaddress = null; bool result = ipnetwork.Contains(ipaddress); } - [DataTestMethod] - [DataRow("1.1.1.0/8", "1.1.1.1", true)] - [DataRow("1.1.1.0/8", "2.1.1.1", false)] - [DataRow("192.168.0.1/24", "192.168.0.100", true)] - [DataRow("192.168.0.1/24", "10.10.10.10", false)] - [DataRow("192.168.0.1/24", "192.168.0.1", true)] - [DataRow("192.168.0.1/16", "192.168.1.1", true)] - [DataRow("192.168.0.1/16", "10.10.10.0", false)] - [DataRow("192.168.1.1/24", "192.168.0.0", false)] - public void Test_Contains2_IPAddress_Should_Match_Contains(string contains1, string contains2, bool expected) - { + [DataTestMethod] + [DataRow("1.1.1.0/8", "1.1.1.1", true)] + [DataRow("1.1.1.0/8", "2.1.1.1", false)] + [DataRow("192.168.0.1/24", "192.168.0.100", true)] + [DataRow("192.168.0.1/24", "10.10.10.10", false)] + [DataRow("192.168.0.1/24", "192.168.0.1", true)] + [DataRow("192.168.0.1/16", "192.168.1.1", true)] + [DataRow("192.168.0.1/16", "10.10.10.0", false)] + [DataRow("192.168.1.1/24", "192.168.0.0", false)] + public void Test_Contains2_IPAddress_Should_Match_Contains(string contains1, string contains2, bool expected) + { var ipnetwork = IPNetwork2.Parse(contains1); var ipaddress = IPAddress.Parse(contains2); @@ -172,18 +126,18 @@ public void Test_Contains2_IPAddress_Should_Match_Contains(string contains1, str Assert.AreEqual(expected, result1, "contains1"); } - [DataTestMethod] - [DataRow("0.0.0.0/0", "255.255.255.255", true)] - [DataRow("1.1.1.0/8", "1.1.1.1", true)] - [DataRow("1.1.1.0/8", "2.1.1.1", false)] - [DataRow("192.168.0.1/24", "192.168.0.100/32", true)] - [DataRow("192.168.0.1/24", "10.10.10.10/32", false)] - [DataRow("192.168.0.1/24", "192.168.0.1/24", true)] - [DataRow("192.168.0.1/16", "192.168.1.1/24", true)] - [DataRow("192.168.0.1/16", "10.10.10.0/24", false)] - [DataRow("192.168.1.1/24", "192.168.0.0/16", false)] - public void Test_Contains2_IPNetwork_Should_Match_Contains(string contains1, string contains2, bool expected) - { + [DataTestMethod] + [DataRow("0.0.0.0/0", "255.255.255.255", true)] + [DataRow("1.1.1.0/8", "1.1.1.1", true)] + [DataRow("1.1.1.0/8", "2.1.1.1", false)] + [DataRow("192.168.0.1/24", "192.168.0.100/32", true)] + [DataRow("192.168.0.1/24", "10.10.10.10/32", false)] + [DataRow("192.168.0.1/24", "192.168.0.1/24", true)] + [DataRow("192.168.0.1/16", "192.168.1.1/24", true)] + [DataRow("192.168.0.1/16", "10.10.10.0/24", false)] + [DataRow("192.168.1.1/24", "192.168.0.0/16", false)] + public void Test_Contains2_IPNetwork_Should_Match_Contains(string contains1, string contains2, bool expected) + { var ipnetwork = IPNetwork2.Parse(contains1); var ipaddress = IPNetwork2.Parse(contains2); @@ -191,5 +145,4 @@ public void Test_Contains2_IPNetwork_Should_Match_Contains(string contains1, str Assert.AreEqual(expected, result1, "contains1"); } - } -} +} \ No newline at end of file diff --git a/src/TestProject/DataContractSerializeHelper.cs b/src/TestProject/DataContractSerializeHelper.cs index f33a916c..96ed67c2 100644 --- a/src/TestProject/DataContractSerializeHelper.cs +++ b/src/TestProject/DataContractSerializeHelper.cs @@ -2,17 +2,13 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net.TestSerialization.NetFramework -{ - using System.IO; - using System.Runtime.Serialization; - using System.Xml; +namespace TestProject; - public static class DataContractSerializeHelper +public static class DataContractSerializeHelper +{ + public static string Serialize(T obj, bool formatting = true) + where T : new() { - public static string Serialize(T obj, bool formatting = true) - where T : new() - { if (obj == null) { return string.Empty; @@ -22,7 +18,7 @@ public static string Serialize(T obj, bool formatting = true) var settings = new XmlWriterSettings { OmitXmlDeclaration = true, - Indent = formatting, + Indent = formatting }; using (var textWriter = new StringWriter()) { @@ -36,9 +32,9 @@ public static string Serialize(T obj, bool formatting = true) } } - public static T Deserialize(string xml) - where T : new() - { + public static T Deserialize(string xml) + where T : new() + { if (string.IsNullOrWhiteSpace(xml)) { return new T(); @@ -52,5 +48,4 @@ public static T Deserialize(string xml) return result; } } - } } \ No newline at end of file diff --git a/src/TestProject/EqualsUnitTest.cs b/src/TestProject/EqualsUnitTest.cs index 384d1483..24d740a7 100644 --- a/src/TestProject/EqualsUnitTest.cs +++ b/src/TestProject/EqualsUnitTest.cs @@ -2,18 +2,31 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net.TestProject +namespace TestProject; + +[TestClass] +public class EqualsUnitTest { - using Microsoft.VisualStudio.TestTools.UnitTesting; + #region Equals IPv6 vs IPv4 - [TestClass] - public class EqualsUnitTest + [TestMethod] + public void TestEquals_ipv6_ipv4_0() { - #region Equals IPv4 + var network1 = IPNetwork2.Parse("::/32"); + var network2 = IPNetwork2.Parse("0.0.0.0/32"); + bool result = network1.Equals(network2); + bool expected = false; + + Assert.AreEqual(expected, result, "equals"); + } - [TestMethod] - public void TestEquals_ipv4_1() - { + #endregion + + #region Equals IPv4 + + [TestMethod] + public void TestEquals_ipv4_1() + { var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.0.1/24"); bool result = network1.Equals(network2); @@ -22,9 +35,9 @@ public void TestEquals_ipv4_1() Assert.AreEqual(expected, result, "equals"); } - [TestMethod] - public void TestEquals_ipv4_2() - { + [TestMethod] + public void TestEquals_ipv4_2() + { var network1 = IPNetwork2.Parse("192.168.0.1/24"); IPNetwork2 network2 = null; bool result = network1.Equals(network2); @@ -33,9 +46,9 @@ public void TestEquals_ipv4_2() Assert.AreEqual(expected, result, "equals"); } - [TestMethod] - public void TestEquals_ipv4_3() - { + [TestMethod] + public void TestEquals_ipv4_3() + { var network1 = IPNetwork2.Parse("192.168.0.1/24"); object network2 = string.Empty; bool result = network1.Equals(network2); @@ -44,9 +57,9 @@ public void TestEquals_ipv4_3() Assert.AreEqual(expected, result, "equals"); } - [TestMethod] - public void TestEquals_ipv4_4() - { + [TestMethod] + public void TestEquals_ipv4_4() + { var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.0.1/25"); bool result = network1.Equals(network2); @@ -55,9 +68,9 @@ public void TestEquals_ipv4_4() Assert.AreEqual(expected, result, "equals"); } - [TestMethod] - public void TestEquals_ipv4_5() - { + [TestMethod] + public void TestEquals_ipv4_5() + { var network1 = IPNetwork2.Parse("192.168.0.1/24"); var network2 = IPNetwork2.Parse("192.168.1.1/24"); bool result = network1.Equals(network2); @@ -66,13 +79,13 @@ public void TestEquals_ipv4_5() Assert.AreEqual(expected, result, "equals"); } - #endregion + #endregion - #region Equals IPv6 + #region Equals IPv6 - [TestMethod] - public void TestEquals_ipv6_1() - { + [TestMethod] + public void TestEquals_ipv6_1() + { var network1 = IPNetwork2.Parse("::1/128"); var network2 = IPNetwork2.Parse("::1/128"); bool result = network1.Equals(network2); @@ -81,9 +94,9 @@ public void TestEquals_ipv6_1() Assert.AreEqual(expected, result, "equals"); } - [TestMethod] - public void TestEquals_ipv6_2() - { + [TestMethod] + public void TestEquals_ipv6_2() + { var network1 = IPNetwork2.Parse("::1/128"); IPNetwork2 network2 = null; bool result = network1.Equals(network2); @@ -92,9 +105,9 @@ public void TestEquals_ipv6_2() Assert.AreEqual(expected, result, "equals"); } - [TestMethod] - public void TestEquals_ipv6_3() - { + [TestMethod] + public void TestEquals_ipv6_3() + { var network1 = IPNetwork2.Parse("::1/128"); object network2 = string.Empty; bool result = network1.Equals(network2); @@ -103,9 +116,9 @@ public void TestEquals_ipv6_3() Assert.AreEqual(expected, result, "equals"); } - [TestMethod] - public void TestEquals_ipv6_4() - { + [TestMethod] + public void TestEquals_ipv6_4() + { var network1 = IPNetwork2.Parse("::1/128"); var network2 = IPNetwork2.Parse("::1/127"); bool result = network1.Equals(network2); @@ -114,9 +127,9 @@ public void TestEquals_ipv6_4() Assert.AreEqual(expected, result, "equals"); } - [TestMethod] - public void TestEquals_ipv6_5() - { + [TestMethod] + public void TestEquals_ipv6_5() + { var network1 = IPNetwork2.Parse("::1/128"); var network2 = IPNetwork2.Parse("::10/128"); bool result = network1.Equals(network2); @@ -125,21 +138,5 @@ public void TestEquals_ipv6_5() Assert.AreEqual(expected, result, "equals"); } - #endregion - - #region Equals IPv6 vs IPv4 - - [TestMethod] - public void TestEquals_ipv6_ipv4_0() - { - var network1 = IPNetwork2.Parse("::/32"); - var network2 = IPNetwork2.Parse("0.0.0.0/32"); - bool result = network1.Equals(network2); - bool expected = false; - - Assert.AreEqual(expected, result, "equals"); - } - - #endregion - } -} + #endregion +} \ No newline at end of file diff --git a/src/TestProject/GetHashCodeUnitTest.cs b/src/TestProject/GetHashCodeUnitTest.cs index ce3c4721..69563ef1 100644 --- a/src/TestProject/GetHashCodeUnitTest.cs +++ b/src/TestProject/GetHashCodeUnitTest.cs @@ -2,51 +2,15 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net.TestProject -{ - using System.Collections.Generic; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class GetHashCodeUnitTest - { - #region GetHashCode - - [TestMethod] - public void TestGetHashCode1() - { - var ipnetwork1 = IPNetwork2.Parse("0.0.1.1/0"); - var ipnetwork2 = IPNetwork2.Parse("0.0.1.1/0"); - int hashCode1 = ipnetwork1.GetHashCode(); - int hashCode2 = ipnetwork2.GetHashCode(); - Assert.AreEqual(hashCode1, hashCode2, "hashcode"); - } - - [TestMethod] - public void TestGetHashCode2() - { - var ipnetwork1 = IPNetwork2.Parse("0.0.0.0/1"); - var ipnetwork2 = IPNetwork2.Parse("0.0.0.0/1"); - int hashCode1 = ipnetwork1.GetHashCode(); - int hashCode2 = ipnetwork2.GetHashCode(); - Assert.AreEqual(hashCode1, hashCode2, "hashcode"); - } - - [TestMethod] - public void TestGetHashCode3() - { - var ipnetwork1 = IPNetwork2.Parse("0.0.0.0/32"); - var ipnetwork2 = IPNetwork2.Parse("0.0.0.0/32"); - int hashCode1 = ipnetwork1.GetHashCode(); - int hashCode2 = ipnetwork2.GetHashCode(); - Assert.AreEqual(hashCode1, hashCode2, "hashcode"); - } - #endregion +namespace TestProject; - [TestMethod] - public void TestGetHashCode_SameNetwork_DifferentIpAddress1() - { +[TestClass] +public class GetHashCodeUnitTest +{ + [TestMethod] + public void TestGetHashCode_SameNetwork_DifferentIpAddress1() + { var ipnetwork1 = IPNetwork2.Parse("0.0.1.1/0"); var ipnetwork2 = IPNetwork2.Parse("1.1.1.1/0"); int hashCode1 = ipnetwork1.GetHashCode(); @@ -54,9 +18,9 @@ public void TestGetHashCode_SameNetwork_DifferentIpAddress1() Assert.AreEqual(hashCode1, hashCode2, "hashcode"); } - [TestMethod] - public void TestGetHashCode_SameNetwork_DifferentIpAddress2() - { + [TestMethod] + public void TestGetHashCode_SameNetwork_DifferentIpAddress2() + { var ipnetwork1 = IPNetwork2.Parse("0.0.0.0/1"); var ipnetwork2 = IPNetwork2.Parse("1.0.0.0/1"); int hashCode1 = ipnetwork1.GetHashCode(); @@ -64,9 +28,9 @@ public void TestGetHashCode_SameNetwork_DifferentIpAddress2() Assert.AreEqual(hashCode1, hashCode2, "hashcode"); } - [TestMethod] - public void TestGetHashCode_Refactor__to_not_reference_mutable_fields() - { + [TestMethod] + public void TestGetHashCode_Refactor__to_not_reference_mutable_fields() + { var ipnetwork = IPNetwork2.Parse("1.0.0.0/1"); int hashCode1 = ipnetwork.GetHashCode(); ipnetwork.Value = "255.255.255.255/32"; @@ -75,9 +39,9 @@ public void TestGetHashCode_Refactor__to_not_reference_mutable_fields() Assert.AreEqual(hashCode1, hashCode2, "hashcode"); } - [TestMethod] - public void TestGetHashCode_Dictionary_failed() - { + [TestMethod] + public void TestGetHashCode_Dictionary_failed() + { var ipnetwork = IPNetwork2.Parse("1.0.0.0/1"); var ipnetwork2 = IPNetwork2.Parse("1.0.0.0/1"); var dic = new Dictionary(); @@ -100,11 +64,11 @@ public void TestGetHashCode_Dictionary_failed() Assert.AreEqual(false, contains6, "contains6"); } - #region Equals IPv6 vs IPv4 + #region Equals IPv6 vs IPv4 - [TestMethod] - public void TestGetHashCode_ipv6_ipv4_0() - { + [TestMethod] + public void TestGetHashCode_ipv6_ipv4_0() + { var network1 = IPNetwork2.Parse("::/32"); var network2 = IPNetwork2.Parse("0.0.0.0/32"); @@ -114,6 +78,39 @@ public void TestGetHashCode_ipv6_ipv4_0() Assert.AreNotEqual(hashCode1, hashCode2, "hashcode"); } - #endregion - } -} + #endregion + + #region GetHashCode + + [TestMethod] + public void TestGetHashCode1() + { + var ipnetwork1 = IPNetwork2.Parse("0.0.1.1/0"); + var ipnetwork2 = IPNetwork2.Parse("0.0.1.1/0"); + int hashCode1 = ipnetwork1.GetHashCode(); + int hashCode2 = ipnetwork2.GetHashCode(); + Assert.AreEqual(hashCode1, hashCode2, "hashcode"); + } + + [TestMethod] + public void TestGetHashCode2() + { + var ipnetwork1 = IPNetwork2.Parse("0.0.0.0/1"); + var ipnetwork2 = IPNetwork2.Parse("0.0.0.0/1"); + int hashCode1 = ipnetwork1.GetHashCode(); + int hashCode2 = ipnetwork2.GetHashCode(); + Assert.AreEqual(hashCode1, hashCode2, "hashcode"); + } + + [TestMethod] + public void TestGetHashCode3() + { + var ipnetwork1 = IPNetwork2.Parse("0.0.0.0/32"); + var ipnetwork2 = IPNetwork2.Parse("0.0.0.0/32"); + int hashCode1 = ipnetwork1.GetHashCode(); + int hashCode2 = ipnetwork2.GetHashCode(); + Assert.AreEqual(hashCode1, hashCode2, "hashcode"); + } + + #endregion +} \ No newline at end of file diff --git a/src/TestProject/GlobalUsings.cs b/src/TestProject/GlobalUsings.cs new file mode 100644 index 00000000..8b48a6d7 --- /dev/null +++ b/src/TestProject/GlobalUsings.cs @@ -0,0 +1,23 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +#pragma warning disable SA1200 +global using System; +global using System.Collections; +global using System.Collections.Generic; +global using System.IO; +global using System.Net; +global using System.Net.ConsoleApplication; +global using System.Net.Sockets; +global using System.Numerics; +global using System.Runtime.Serialization; +global using System.Text; +global using System.Xml; +global using System.Xml.Serialization; +global using System.Linq; +global using System.Security.Cryptography; +global using Microsoft.VisualStudio.TestTools.UnitTesting; +global using Newtonsoft.Json; + +#pragma warning restore SA1200 \ No newline at end of file diff --git a/src/TestProject/HashSetUnitTest.cs b/src/TestProject/HashSetUnitTest.cs index efbdb237..0b2f8652 100644 --- a/src/TestProject/HashSetUnitTest.cs +++ b/src/TestProject/HashSetUnitTest.cs @@ -2,17 +2,14 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net.TestProject -{ - using System.Collections.Generic; - using Microsoft.VisualStudio.TestTools.UnitTesting; +namespace TestProject; - [TestClass] - public class HashSetUnitTest +[TestClass] +public class HashSetUnitTest +{ + [TestMethod] + public void TestGetHashCode_HashSet_Add1() { - [TestMethod] - public void TestGetHashCode_HashSet_Add1() - { var ipnetwork1 = IPNetwork2.Parse("0.0.1.1/0"); var ipnetwork2 = IPNetwork2.Parse("1.1.1.1/0"); @@ -24,9 +21,9 @@ public void TestGetHashCode_HashSet_Add1() Assert.IsFalse(add2, "add2"); } - [TestMethod] - public void TestGetHashCode_HashSet_Add2() - { + [TestMethod] + public void TestGetHashCode_HashSet_Add2() + { var ipnetwork1 = IPNetwork2.Parse("0.0.0.0/1"); var ipnetwork2 = IPNetwork2.Parse("1.0.0.0/1"); @@ -37,37 +34,4 @@ public void TestGetHashCode_HashSet_Add2() Assert.IsTrue(add1, "add1"); Assert.IsFalse(add2, "add2"); } - - [TestMethod] - public void TestGetHashCode_HashSet_Add3() - { - var ipnetwork1 = IPNetwork2.Parse("0.0.0.0/32"); - var ipnetwork2 = IPNetwork2.Parse("0.0.0.1/32"); - - var hashset = new HashSet(); - bool add1 = hashset.Add(ipnetwork1); - bool add2 = hashset.Add(ipnetwork2); - - Assert.IsTrue(add1, "add1"); - Assert.IsTrue(add2, "add2"); - } - - #region Equals IPv6 vs IPv4 - - [TestMethod] - public void TestHashSet_Add_ipv6_ipv4_0() - { - var ipnetwork1 = IPNetwork2.Parse("::/32"); - var ipnetwork2 = IPNetwork2.Parse("0.0.0.0/32"); - - var hashset = new HashSet(); - bool add1 = hashset.Add(ipnetwork1); - bool add2 = hashset.Add(ipnetwork2); - - Assert.IsTrue(add1, "add1"); - Assert.IsTrue(add2, "add2"); - } - - #endregion - } -} +} \ No newline at end of file diff --git a/src/TestProject/HashSetUnitTestEqualsIPv6VsIPv4.cs b/src/TestProject/HashSetUnitTestEqualsIPv6VsIPv4.cs new file mode 100644 index 00000000..0ac5bbe3 --- /dev/null +++ b/src/TestProject/HashSetUnitTestEqualsIPv6VsIPv4.cs @@ -0,0 +1,23 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject; + +[TestClass] +public class HashSetUnitTestEqualsIPv6VsIPv4 +{ + [TestMethod] + public void TestHashSet_Add_ipv6_ipv4_0() + { + var ipnetwork1 = IPNetwork2.Parse("::/32"); + var ipnetwork2 = IPNetwork2.Parse("0.0.0.0/32"); + + var hashset = new HashSet(); + bool add1 = hashset.Add(ipnetwork1); + bool add2 = hashset.Add(ipnetwork2); + + Assert.IsTrue(add1, "add1"); + Assert.IsTrue(add2, "add2"); + } +} \ No newline at end of file diff --git a/src/TestProject/HashSetUnitTestHashCodeAdd3.cs b/src/TestProject/HashSetUnitTestHashCodeAdd3.cs new file mode 100644 index 00000000..82743db0 --- /dev/null +++ b/src/TestProject/HashSetUnitTestHashCodeAdd3.cs @@ -0,0 +1,23 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject; + +[TestClass] +public class HashSetUnitTestHashCodeAdd3 +{ + [TestMethod] + public void TestGetHashCode_HashSet_Add3() + { + var ipnetwork1 = IPNetwork2.Parse("0.0.0.0/32"); + var ipnetwork2 = IPNetwork2.Parse("0.0.0.1/32"); + + var hashset = new HashSet(); + bool add1 = hashset.Add(ipnetwork1); + bool add2 = hashset.Add(ipnetwork2); + + Assert.IsTrue(add1, "add1"); + Assert.IsTrue(add2, "add2"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPAddressCollectionUnitTest.cs b/src/TestProject/IPAddressCollectionUnitTest.cs index 3943fa27..a8a788e8 100644 --- a/src/TestProject/IPAddressCollectionUnitTest.cs +++ b/src/TestProject/IPAddressCollectionUnitTest.cs @@ -2,24 +2,87 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net.TestProject + +namespace TestProject; + +/// +/// IPNetworkUnitTest test every single method. +/// +[TestClass] +public class IPAddressCollectionUnitTest { - using System.Collections; - using System.Collections.Generic; - using System.Numerics; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - /// - /// IPNetworkUnitTest test every single method. - /// - [TestClass] - public class IPAddressCollectionUnitTest - { - #region ListIPAddress - - [TestMethod] - public void TestAtIndexIPAddress() - { + [TestMethod] + public void Test_Usable_AtIndexIPAddress() + { + var ipn = IPNetwork2.Parse("192.168.1.0/29"); + using (IPAddressCollection ips = ipn.ListIPAddress(FilterEnum.Usable)) + { + Assert.AreEqual("192.168.1.1", ips[0].ToString(), "0"); + Assert.AreEqual("192.168.1.2", ips[1].ToString(), "1"); + Assert.AreEqual("192.168.1.3", ips[2].ToString(), "2"); + Assert.AreEqual("192.168.1.4", ips[3].ToString(), "3"); + Assert.AreEqual("192.168.1.5", ips[4].ToString(), "4"); + Assert.AreEqual("192.168.1.6", ips[5].ToString(), "5"); + } + } + + [TestMethod] + public void Test_Usable_IteratorIPAddress() + { + var ipn = IPNetwork2.Parse("192.168.1.0/29"); + using (IPAddressCollection ips = ipn.ListIPAddress(FilterEnum.Usable)) + { + int i = 0; + foreach (IPAddress ip in ips) + { + Assert.AreEqual(ips[i], ip, i.ToString()); + i++; + } + } + } + + [TestMethod] + public void Test_Usable_AtIndexIPAddress_31() + { + var ipn = IPNetwork2.Parse("192.168.1.0/31"); + using (IPAddressCollection ips = ipn.ListIPAddress(FilterEnum.Usable)) + { + Assert.AreEqual(0, ips.Count, "Count"); + } + } + + [TestMethod] + public void Test_Usable_AtIndexIPAddress_32() + { + var ipn = IPNetwork2.Parse("192.168.1.0/32"); + using (IPAddressCollection ips = ipn.ListIPAddress(FilterEnum.Usable)) + { + Assert.AreEqual(0, ips.Count, "Count"); + } + } + + [TestMethod] + public void Test_All_AtIndexIPAddress() + { + var ipn = IPNetwork2.Parse("192.168.1.0/29"); + using (IPAddressCollection ips = ipn.ListIPAddress()) + { + Assert.AreEqual("192.168.1.0", ips[0].ToString(), "0"); + Assert.AreEqual("192.168.1.1", ips[1].ToString(), "1"); + Assert.AreEqual("192.168.1.2", ips[2].ToString(), "2"); + Assert.AreEqual("192.168.1.3", ips[3].ToString(), "3"); + Assert.AreEqual("192.168.1.4", ips[4].ToString(), "4"); + Assert.AreEqual("192.168.1.5", ips[5].ToString(), "5"); + Assert.AreEqual("192.168.1.6", ips[6].ToString(), "6"); + Assert.AreEqual("192.168.1.7", ips[7].ToString(), "6"); + } + } + + #region ListIPAddress + + [TestMethod] + public void TestAtIndexIPAddress() + { var ipn = IPNetwork2.Parse("192.168.1.0/29"); using (IPAddressCollection ips = ipn.ListIPAddress()) { @@ -34,9 +97,9 @@ public void TestAtIndexIPAddress() } } - [TestMethod] - public void TestAtIndexIPAddress2() - { + [TestMethod] + public void TestAtIndexIPAddress2() + { var ipn = IPNetwork2.Parse("192.168.1.0/29"); #pragma warning disable CS0618 // Type or member is obsolete using (IPAddressCollection ips = IPNetwork2.ListIPAddress(ipn)) @@ -53,9 +116,9 @@ public void TestAtIndexIPAddress2() } } - [TestMethod] - public void TestIterateIPAddress() - { + [TestMethod] + public void TestIterateIPAddress() + { var ipn = IPNetwork2.Parse("192.168.1.0/29"); IPAddress last = null; IPAddress first = null; @@ -81,10 +144,10 @@ public void TestIterateIPAddress() } } - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void TestOutOfRangeIPAddress() - { + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void TestOutOfRangeIPAddress() + { var ipn = IPNetwork2.Parse("192.168.1.0/29"); using (IPAddressCollection ips = ipn.ListIPAddress()) { @@ -92,9 +155,9 @@ public void TestOutOfRangeIPAddress() } } - [TestMethod] - public void TestCountIPAddress() - { + [TestMethod] + public void TestCountIPAddress() + { var ipn = IPNetwork2.Parse("192.168.1.0/29"); using (IPAddressCollection ips = ipn.ListIPAddress()) { @@ -102,9 +165,9 @@ public void TestCountIPAddress() } } - [TestMethod] - public void TestReset() - { + [TestMethod] + public void TestReset() + { var ipn = IPNetwork2.Parse("192.168.1.0/29"); using (IPAddressCollection ips = ipn.ListIPAddress()) { @@ -112,9 +175,9 @@ public void TestReset() } } - [TestMethod] - public void TestResetEnumerator() - { + [TestMethod] + public void TestResetEnumerator() + { var ipn = IPNetwork2.Parse("192.168.1.0/29"); using (IPAddressCollection ips = ipn.ListIPAddress()) { @@ -132,10 +195,10 @@ public void TestResetEnumerator() } } - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void TestEnumeratorFailed() - { + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void TestEnumeratorFailed() + { var ipn = IPNetwork2.Parse("192.168.1.0/29"); using (IEnumerator ips = ipn.ListIPAddress()) { @@ -149,9 +212,9 @@ public void TestEnumeratorFailed() } } - [TestMethod] - public void TestEnumeratorMoveNext() - { + [TestMethod] + public void TestEnumeratorMoveNext() + { var ipn = IPNetwork2.Parse("192.168.1.0/29"); using (IEnumerator ips = ipn.ListIPAddress()) { @@ -168,9 +231,9 @@ public void TestEnumeratorMoveNext() } } - [TestMethod] - public void TestEnumeratorMoveNext2() - { + [TestMethod] + public void TestEnumeratorMoveNext2() + { var ipn = IPNetwork2.Parse("192.168.1.0/31"); using (IEnumerator ips = ipn.ListIPAddress()) { @@ -184,17 +247,17 @@ public void TestEnumeratorMoveNext2() } } - [TestMethod] - public void TestEnumerableCurrent() - { + [TestMethod] + public void TestEnumerableCurrent() + { var ipn = IPNetwork2.Parse("192.168.1.0/31"); IEnumerable ips = ipn.ListIPAddress(); Assert.IsNotNull(ips.GetEnumerator()); } - [TestMethod] - public void TestEnumeratorCurrent() - { + [TestMethod] + public void TestEnumeratorCurrent() + { var ipn = IPNetwork2.Parse("192.168.1.0/31"); IEnumerator ips = ipn.ListIPAddress(); Assert.IsNotNull(ips.Current); @@ -204,10 +267,10 @@ public void TestEnumeratorCurrent() Assert.IsFalse(ips.MoveNext()); } - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void TestEnumeratorCurrentOor() - { + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void TestEnumeratorCurrentOor() + { var ipn = IPNetwork2.Parse("192.168.1.0/31"); IEnumerator ips = ipn.ListIPAddress(); Assert.IsNotNull(ips.Current); @@ -218,9 +281,9 @@ public void TestEnumeratorCurrentOor() Console.WriteLine("This is out of range : {0} ", ips.Current); } - [TestMethod] - public void TestEnumeratorIterate() - { + [TestMethod] + public void TestEnumeratorIterate() + { var ipn = IPNetwork2.Parse("192.168.1.0/31"); IEnumerator ips = ipn.ListIPAddress(); while (ips.MoveNext()) @@ -229,13 +292,13 @@ public void TestEnumeratorIterate() } } - #endregion + #endregion - #region IPv6 + #region IPv6 - [TestMethod] - public void Test_ipv6_AtIndexIPAddress() - { + [TestMethod] + public void Test_ipv6_AtIndexIPAddress() + { var ipn = IPNetwork2.Parse("::/125"); using (IPAddressCollection ips = ipn.ListIPAddress()) { @@ -250,9 +313,9 @@ public void Test_ipv6_AtIndexIPAddress() } } - [TestMethod] - public void Test_ipv6_IterateIPAddress() - { + [TestMethod] + public void Test_ipv6_IterateIPAddress() + { var ipn = IPNetwork2.Parse("::/125"); IPAddress last = null; IPAddress first = null; @@ -278,10 +341,10 @@ public void Test_ipv6_IterateIPAddress() } } - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void Test_ipv6_OutOfRangeIPAddress() - { + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void Test_ipv6_OutOfRangeIPAddress() + { var ipn = IPNetwork2.Parse("::/125"); using (IPAddressCollection ips = ipn.ListIPAddress()) { @@ -289,9 +352,9 @@ public void Test_ipv6_OutOfRangeIPAddress() } } - [TestMethod] - public void Test_ipv6_CountIPAddress() - { + [TestMethod] + public void Test_ipv6_CountIPAddress() + { var ipn = IPNetwork2.Parse("::/125"); using (IPAddressCollection ips = ipn.ListIPAddress()) { @@ -299,9 +362,9 @@ public void Test_ipv6_CountIPAddress() } } - [TestMethod] - public void Test_ipv6_CountIPAddress2() - { + [TestMethod] + public void Test_ipv6_CountIPAddress2() + { var ipn = IPNetwork2.Parse("::/0"); var max = BigInteger.Pow(2, 128); using (IPAddressCollection ips = ipn.ListIPAddress()) @@ -310,9 +373,9 @@ public void Test_ipv6_CountIPAddress2() } } - [TestMethod] - public void Test_ipv6_Reset() - { + [TestMethod] + public void Test_ipv6_Reset() + { var ipn = IPNetwork2.Parse("::/125"); using (IPAddressCollection ips = ipn.ListIPAddress()) { @@ -320,9 +383,9 @@ public void Test_ipv6_Reset() } } - [TestMethod] - public void Tes_ipv6_tResetEnumerator() - { + [TestMethod] + public void Tes_ipv6_tResetEnumerator() + { var ipn = IPNetwork2.Parse("::/125"); using (IEnumerator ips = ipn.ListIPAddress()) { @@ -340,10 +403,10 @@ public void Tes_ipv6_tResetEnumerator() } } - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void Test_ipv6_EnumeratorFailed() - { + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void Test_ipv6_EnumeratorFailed() + { var ipn = IPNetwork2.Parse("::/125"); using (IEnumerator ips = ipn.ListIPAddress()) { @@ -357,9 +420,9 @@ public void Test_ipv6_EnumeratorFailed() } } - [TestMethod] - public void Test_ipv6_EnumeratorMoveNext() - { + [TestMethod] + public void Test_ipv6_EnumeratorMoveNext() + { var ipn = IPNetwork2.Parse("::/125"); using (IEnumerator ips = ipn.ListIPAddress()) { @@ -376,9 +439,9 @@ public void Test_ipv6_EnumeratorMoveNext() } } - [TestMethod] - public void Test_ipv6_EnumeratorMoveNext2() - { + [TestMethod] + public void Test_ipv6_EnumeratorMoveNext2() + { var ipn = IPNetwork2.Parse("::/127"); using (IEnumerator ips = ipn.ListIPAddress()) { @@ -392,9 +455,9 @@ public void Test_ipv6_EnumeratorMoveNext2() } } - [TestMethod] - public void Test_ipv6_EnumeratorCurrent() - { + [TestMethod] + public void Test_ipv6_EnumeratorCurrent() + { var ipn = IPNetwork2.Parse("::/127"); IEnumerator ips = ipn.ListIPAddress(); Assert.IsNotNull(ips.Current); @@ -404,10 +467,10 @@ public void Test_ipv6_EnumeratorCurrent() Assert.IsFalse(ips.MoveNext()); } - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void Test_ipv6_EnumeratorCurrentOor() - { + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void Test_ipv6_EnumeratorCurrentOor() + { var ipn = IPNetwork2.Parse("::/127"); IEnumerator ips = ipn.ListIPAddress(); Assert.IsNotNull(ips.Current); @@ -418,9 +481,9 @@ public void Test_ipv6_EnumeratorCurrentOor() Console.WriteLine("This is out of range : {0} ", ips.Current); } - [TestMethod] - public void Test_ipv6_EnumeratorIterate() - { + [TestMethod] + public void Test_ipv6_EnumeratorIterate() + { var ipn = IPNetwork2.Parse("::/127"); IEnumerator ips = ipn.ListIPAddress(); while (ips.MoveNext()) @@ -429,80 +492,12 @@ public void Test_ipv6_EnumeratorIterate() } } - [TestMethod] - public void Test_ipv6_DefaultNetmask() - { + [TestMethod] + public void Test_ipv6_DefaultNetmask() + { var ipnetwork = IPNetwork2.Parse("::1"); Assert.AreEqual(64, ipnetwork.Cidr, "Cidr"); } - #endregion - - [TestMethod] - public void Test_Usable_AtIndexIPAddress() - { - var ipn = IPNetwork2.Parse("192.168.1.0/29"); - using (IPAddressCollection ips = ipn.ListIPAddress(FilterEnum.Usable)) - { - Assert.AreEqual("192.168.1.1", ips[0].ToString(), "0"); - Assert.AreEqual("192.168.1.2", ips[1].ToString(), "1"); - Assert.AreEqual("192.168.1.3", ips[2].ToString(), "2"); - Assert.AreEqual("192.168.1.4", ips[3].ToString(), "3"); - Assert.AreEqual("192.168.1.5", ips[4].ToString(), "4"); - Assert.AreEqual("192.168.1.6", ips[5].ToString(), "5"); - } - } - - [TestMethod] - public void Test_Usable_IteratorIPAddress() - { - var ipn = IPNetwork2.Parse("192.168.1.0/29"); - using (IPAddressCollection ips = ipn.ListIPAddress(FilterEnum.Usable)) - { - int i = 0; - foreach (IPAddress ip in ips) - { - Assert.AreEqual(ips[i], ip, i.ToString()); - i++; - } - } - } - - [TestMethod] - public void Test_Usable_AtIndexIPAddress_31() - { - var ipn = IPNetwork2.Parse("192.168.1.0/31"); - using (IPAddressCollection ips = ipn.ListIPAddress(FilterEnum.Usable)) - { - Assert.AreEqual(0, ips.Count, "Count"); - } - } - - [TestMethod] - public void Test_Usable_AtIndexIPAddress_32() - { - var ipn = IPNetwork2.Parse("192.168.1.0/32"); - using (IPAddressCollection ips = ipn.ListIPAddress(FilterEnum.Usable)) - { - Assert.AreEqual(0, ips.Count, "Count"); - } - } - - [TestMethod] - public void Test_All_AtIndexIPAddress() - { - var ipn = IPNetwork2.Parse("192.168.1.0/29"); - using (IPAddressCollection ips = ipn.ListIPAddress(FilterEnum.All)) - { - Assert.AreEqual("192.168.1.0", ips[0].ToString(), "0"); - Assert.AreEqual("192.168.1.1", ips[1].ToString(), "1"); - Assert.AreEqual("192.168.1.2", ips[2].ToString(), "2"); - Assert.AreEqual("192.168.1.3", ips[3].ToString(), "3"); - Assert.AreEqual("192.168.1.4", ips[4].ToString(), "4"); - Assert.AreEqual("192.168.1.5", ips[5].ToString(), "5"); - Assert.AreEqual("192.168.1.6", ips[6].ToString(), "6"); - Assert.AreEqual("192.168.1.7", ips[7].ToString(), "6"); - } - } - } -} + #endregion +} \ No newline at end of file diff --git a/src/TestProject/IPAddressExtensionTests.cs b/src/TestProject/IPAddressExtensionTests.cs index 8bfd45f1..afe7456b 100644 --- a/src/TestProject/IPAddressExtensionTests.cs +++ b/src/TestProject/IPAddressExtensionTests.cs @@ -2,24 +2,21 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net.TestProject -{ - using System.Collections.Generic; - using System.Linq; - using Microsoft.VisualStudio.TestTools.UnitTesting; +namespace TestProject; +/// +/// A collection of unit tests exercising the IPAddressExtensions class. +/// +[TestClass] +public class IPAddressExtensionTests +{ /// - /// A collection of unit tests exercising the IPAddressExtensions class. + /// Test converting a variety of IPv4 addreses into single-address networks. /// - [TestClass] - public class IPAddressExtensionTests + [TestMethod] + public void IPAddressToIPNetwork_SingleAddress_IPv4() { - /// - /// Test converting a variety of IPv4 addreses into single-address networks. - /// - [TestMethod] - public void IPAddressToIPNetwork_SingleAddress_IPv4() - => IPAddressToIPNetwork_SingleAddress_Internal( + IPAddressToIPNetwork_SingleAddress_Internal( 4, "0.0.0.0", "0.0.0.1", @@ -42,13 +39,15 @@ public void IPAddressToIPNetwork_SingleAddress_IPv4() "239.255.255.255", "240.0.0.0", "255.255.255.255"); + } - /// - /// Test converting a variety of IPv6 addreses into single-address networks. - /// - [TestMethod] - public void IPAddressToIPNetwork_SingleAddress_IPv6() - => IPAddressToIPNetwork_SingleAddress_Internal( + /// + /// Test converting a variety of IPv6 addreses into single-address networks. + /// + [TestMethod] + public void IPAddressToIPNetwork_SingleAddress_IPv6() + { + IPAddressToIPNetwork_SingleAddress_Internal( 16, "::1", "::", @@ -57,25 +56,25 @@ public void IPAddressToIPNetwork_SingleAddress_IPv6() "1234:ABCD::", "1:2:3:4:5:6:7:8", "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF"); + } - /// - /// Shared test case, called upon by the above two test cases. - /// - /// Number of bytes in the type of address being tester. - /// A collection of interesting IP addresses to include in the test. - private static void IPAddressToIPNetwork_SingleAddress_Internal( - int byteCount, - params string[] interestingAddrs) - { - /* Start the collection of test cases with the - * interesting addresses from the caller. */ + /// + /// Shared test case, called upon by the above two test cases. + /// + /// Number of bytes in the type of address being tester. + /// A collection of interesting IP addresses to include in the test. + private static void IPAddressToIPNetwork_SingleAddress_Internal( + int byteCount, + params string[] interestingAddrs) + { + /* Start the collection of test cases with the addresses from the caller. */ var addrs = interestingAddrs.ToList(); /* Populate with random but deterministic addresses. */ addrs.AddRange(RandomIPs(byteCount)); /* Loop through all of the test cases. */ - foreach (var ipAddr in addrs.Select(IPAddress.Parse)) + foreach (IPAddress ipAddr in addrs.Select(IPAddress.Parse)) { /* Convert to network, then pass the network object to a checker. */ TestForSingleAddressNetwork( @@ -85,16 +84,16 @@ private static void IPAddressToIPNetwork_SingleAddress_Internal( } } - /// - /// Generate random but deterministic IPs. - /// - /// 4 for IPv4. 16 for IPv6. - /// Collection of random IP addresses. - private static IEnumerable RandomIPs(int byteCount) - { - /* Start from a fixed starting byte array. - * Using a GUID's bytes so the sequence will be unique, with the first - * byte XOR'd with the byte count so the two sequences will be different. */ + /// + /// Generate random but deterministic IPs. + /// + /// 4 for IPv4. 16 for IPv6. + /// Collection of random IP addresses. + private static IEnumerable RandomIPs(int byteCount) + { + /* Start from a fixed starting byte array. + ing a GUID's bytes so the sequence will be unique, with the first + te XOR'd with the byte count so the two sequences will be different. */ byte[] hashInput = Guid.Parse("12f2c3ba-7bd1-4ec3-922c-a5625b8f5dd5").ToByteArray(); hashInput[0] ^= (byte)byteCount; @@ -102,7 +101,7 @@ private static IEnumerable RandomIPs(int byteCount) foreach (int i in Enumerable.Range(1, 1000)) { /* Hash the current interation to get a new block of deterministic bytes. */ - using (var hash = System.Security.Cryptography.SHA256.Create()) + using (var hash = SHA256.Create()) { hashInput = hash.ComputeHash(hashInput); } @@ -112,19 +111,18 @@ private static IEnumerable RandomIPs(int byteCount) } } - /// - /// Test if a single address network is valid. - /// - /// Expected addresss. - /// Actual network. - /// Expected CIDRsize. (32 or 128.) - private static void TestForSingleAddressNetwork(IPAddress ipAddr, IPNetwork2 net, int expectedSize) - { + /// + /// Test if a single address network is valid. + /// + /// Expected addresss. + /// Actual network. + /// Expected CIDRsize. (32 or 128.) + private static void TestForSingleAddressNetwork(IPAddress ipAddr, IPNetwork2 net, int expectedSize) + { Assert.AreEqual($"{ipAddr}/{expectedSize}", $"{net}"); Assert.AreEqual(ipAddr, net.FirstUsable); Assert.AreEqual(ipAddr, net.LastUsable); Assert.AreEqual(1, net.Total); Assert.AreEqual(expectedSize, net.Cidr); } - } -} +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkCollectionCtorTests.cs b/src/TestProject/IPNetworkCollectionCtorTests.cs new file mode 100644 index 00000000..379c64ed --- /dev/null +++ b/src/TestProject/IPNetworkCollectionCtorTests.cs @@ -0,0 +1,23 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject; + +[TestClass] +public class IPNetworkCollectionCtorTests +{ + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void TestCtor1() + { + var ipn = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 33); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestCtor2() + { + var ipn = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 2); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkCollectionCurrentTests.cs b/src/TestProject/IPNetworkCollectionCurrentTests.cs new file mode 100644 index 00000000..bef039bd --- /dev/null +++ b/src/TestProject/IPNetworkCollectionCurrentTests.cs @@ -0,0 +1,23 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject; + +[TestClass] +public class IPNetworkCollectionCurrentTests +{ + [TestMethod] + public void TestCurrent() + { + var ipn = IPNetwork2.Parse("192.168.0.0/32"); + using (IPNetworkCollection ipns = ipn.Subnet(32)) + { + var ipnse = (IEnumerator)ipns; + ipnse.MoveNext(); + object ipn0 = ipnse.Current; + + Assert.AreEqual("192.168.0.0/32", ipn0.ToString(), "ipn0"); + } + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkCollectionEnumeratorTests.cs b/src/TestProject/IPNetworkCollectionEnumeratorTests.cs new file mode 100644 index 00000000..26956b60 --- /dev/null +++ b/src/TestProject/IPNetworkCollectionEnumeratorTests.cs @@ -0,0 +1,23 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject; + +[TestClass] +public class IPNetworkCollectionEnumeratorTests +{ + [TestMethod] + public void TestEnumerator() + { + var ipn = IPNetwork2.Parse("192.168.0.0/32"); + using (IPNetworkCollection ipns = ipn.Subnet(32)) + { + var ipnse = (IEnumerable)ipns; + IEnumerator ee = ipnse.GetEnumerator(); + ee.MoveNext(); + object ipn0 = ee.Current; + Assert.AreEqual("192.168.0.0/32", ipn0.ToString(), "ipn0"); + } + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkCollectionMoveNextTests.cs b/src/TestProject/IPNetworkCollectionMoveNextTests.cs new file mode 100644 index 00000000..0ed960bf --- /dev/null +++ b/src/TestProject/IPNetworkCollectionMoveNextTests.cs @@ -0,0 +1,36 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject; + +[TestClass] +public class IPNetworkCollectionMoveNextTests +{ + [TestMethod] + public void MoveNext1() + { + var ipn = IPNetwork2.Parse("192.168.1.0/30"); + using (IPNetworkCollection ipns = ipn.Subnet(32)) + { + bool next = ipns.MoveNext(); + Assert.AreEqual(true, next, "next"); + } + } + + [TestMethod] + public void MoveNext2() + { + var ipn = IPNetwork2.Parse("192.168.1.0/30"); + using (IPNetworkCollection ipns = ipn.Subnet(32)) + { + ipns.MoveNext(); + ipns.MoveNext(); + ipns.MoveNext(); + ipns.MoveNext(); + bool next = ipns.MoveNext(); + + Assert.AreEqual(false, next, "next"); + } + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkCollectionResetTests.cs b/src/TestProject/IPNetworkCollectionResetTests.cs new file mode 100644 index 00000000..e9f0694f --- /dev/null +++ b/src/TestProject/IPNetworkCollectionResetTests.cs @@ -0,0 +1,24 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject; + +[TestClass] +public class IPNetworkCollectionResetTests +{ + [TestMethod] + public void TestReset1() + { + var ipn = IPNetwork2.Parse("192.168.1.0/29"); + using (IPNetworkCollection ipns = ipn.Subnet(32)) + { + IPNetwork2 ipn0 = ipns.Current; + ipns.MoveNext(); + ipns.Reset(); + IPNetwork2 ipn1 = ipns.Current; + + Assert.AreEqual(ipn0, ipn1, "reset"); + } + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkCollectionUnitTest.cs b/src/TestProject/IPNetworkCollectionUnitTest.cs deleted file mode 100644 index bbc0bff3..00000000 --- a/src/TestProject/IPNetworkCollectionUnitTest.cs +++ /dev/null @@ -1,116 +0,0 @@ -// -// Copyright (c) IPNetwork. All rights reserved. -// - -namespace System.Net.TestProject -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class IPNetworkCollectionUnitTest - { - #region ctor - - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void TestCtor1() - { - var ipn = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 33); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestCtor2() - { - var ipn = new IPNetworkCollection(IPNetwork2.IANA_ABLK_RESERVED1, 2); - } - - #endregion - - #region Current - - [TestMethod] - public void TestCurrent() - { - var ipn = IPNetwork2.Parse("192.168.0.0/32"); - using (IPNetworkCollection ipns = ipn.Subnet(32)) - { - var ipnse = (Collections.IEnumerator)ipns; - ipnse.MoveNext(); - object ipn0 = ipnse.Current; - - Assert.AreEqual("192.168.0.0/32", ipn0.ToString(), "ipn0"); - } - } - - #endregion - - #region Enumerator - - [TestMethod] - public void TestEnumerator() - { - var ipn = IPNetwork2.Parse("192.168.0.0/32"); - using (IPNetworkCollection ipns = ipn.Subnet(32)) - { - var ipnse = (Collections.IEnumerable)ipns; - Collections.IEnumerator ee = ipnse.GetEnumerator(); - ee.MoveNext(); - object ipn0 = ee.Current; - Assert.AreEqual("192.168.0.0/32", ipn0.ToString(), "ipn0"); - } - } - - #endregion - - #region Reset - - [TestMethod] - public void TestReset1() - { - var ipn = IPNetwork2.Parse("192.168.1.0/29"); - using (IPNetworkCollection ipns = ipn.Subnet(32)) - { - IPNetwork2 ipn0 = ipns.Current; - ipns.MoveNext(); - ipns.Reset(); - IPNetwork2 ipn1 = ipns.Current; - - Assert.AreEqual(ipn0, ipn1, "reset"); - } - } - - #endregion - - #region MoveNext - - [TestMethod] - public void MoveNext1() - { - var ipn = IPNetwork2.Parse("192.168.1.0/30"); - using (IPNetworkCollection ipns = ipn.Subnet(32)) - { - bool next = ipns.MoveNext(); - Assert.AreEqual(true, next, "next"); - } - } - - [TestMethod] - public void MoveNext2() - { - var ipn = IPNetwork2.Parse("192.168.1.0/30"); - using (IPNetworkCollection ipns = ipn.Subnet(32)) - { - ipns.MoveNext(); - ipns.MoveNext(); - ipns.MoveNext(); - ipns.MoveNext(); - bool next = ipns.MoveNext(); - - Assert.AreEqual(false, next, "next"); - } - } - - #endregion - } -} diff --git a/src/TestProject/IPNetworkTest/IPNetworkBitsSetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkBitsSetTests.cs new file mode 100644 index 00000000..314f1524 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkBitsSetTests.cs @@ -0,0 +1,64 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +/// +/// Tests for bit set functionality in IPNetwork2. +/// +[TestClass] +public class IPNetworkBitsSetTests +{ + /// + /// Tests that BitsSet returns 32 for a 255.255.255.255 address. + /// + [TestMethod] + public void TestBitsSet32() + { + var ip = IPAddress.Parse("255.255.255.255"); + uint bits = 32; + uint result = IPNetwork2.BitsSet(ip); + + Assert.AreEqual(bits, result, "BitsSet"); + } + + /// + /// Tests that BitsSet returns 24 for a 255.255.255.0 address. + /// + [TestMethod] + public void TestBitsSet24() + { + var ip = IPAddress.Parse("255.255.255.0"); + uint bits = 24; + uint result = IPNetwork2.BitsSet(ip); + + Assert.AreEqual(bits, result, "BitsSet"); + } + + /// + /// Tests that BitsSet returns 16 for a 255.255.0.0 address. + /// + [TestMethod] + public void TestBitsSet16() + { + var ip = IPAddress.Parse("255.255.0.0"); + uint bits = 16; + uint result = IPNetwork2.BitsSet(ip); + + Assert.AreEqual(bits, result, "BitsSet"); + } + + /// + /// Tests that BitsSet returns 4 for a 128.128.128.128 address. + /// + [TestMethod] + public void TestBitsSet4() + { + var ip = IPAddress.Parse("128.128.128.128"); + uint bits = 4; + uint result = IPNetwork2.BitsSet(ip); + + Assert.AreEqual(bits, result, "BitsSet"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkCompareTests.cs b/src/TestProject/IPNetworkTest/IPNetworkCompareTests.cs new file mode 100644 index 00000000..19e3abf6 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkCompareTests.cs @@ -0,0 +1,112 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkCompareTests +{ + /// + /// Tests Compare functionality with Compare To1. + /// + [TestMethod] + public void TestCompareTo1() + { + var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); + var ipn2 = IPNetwork2.Parse("10.0.0.2/16"); + + int comparison = ipn1.CompareTo(ipn2); + + Assert.AreEqual(0, comparison, "compare"); + } + + /// + /// Tests Compare functionality with Compare To2. + /// + [TestMethod] + public void TestCompareTo2() + { + var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); + object ipn2 = IPNetwork2.Parse("10.0.0.2/16"); + + int comparison = ipn1.CompareTo(ipn2); + + Assert.AreEqual(0, comparison, "compare"); + } + + /// + /// Tests Compare functionality with Compare To3. + /// + [TestMethod] + public void TestCompareTo3() + { + var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); + object ipn2 = null; + + int comparison = ipn1.CompareTo(ipn2); + + Assert.AreEqual(1, comparison, "compare"); + } + + /// + /// Tests Compare functionality with Compare To4. + /// + [TestMethod] + public void TestCompareTo4() + { + var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); + IPNetwork2 ipn2 = null; + + int comparison = ipn1.CompareTo(ipn2); + + Assert.AreEqual(1, comparison, "compare"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestCompareTo5() + { + var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); + string ipn2 = string.Empty; + + int comparison = ipn1.CompareTo(ipn2); + } + + /// + /// Tests Compare functionality with Compare To6. + /// + [TestMethod] + public void TestCompareTo6() + { + var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); + int comparison = ipn1.CompareTo(ipn1); + + Assert.AreEqual(0, comparison, "compare"); + } + + /// + /// Tests Compare functionality with Compare1. + /// + [TestMethod] + public void TestCompare1() + { + var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); + int comparison = IPNetwork2.Compare(null, ipn1); + + Assert.AreEqual(-1, comparison, "compare"); + } + + /// + /// Tests Compare functionality with Compare2. + /// + [TestMethod] + public void TestCompare2() + { + var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); + var ipn2 = IPNetwork2.Parse("20.0.0.1/16"); + int comparison = IPNetwork2.Compare(ipn1, ipn2); + + Assert.AreEqual(-1, comparison, "compare"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkCountTests.cs b/src/TestProject/IPNetworkTest/IPNetworkCountTests.cs new file mode 100644 index 00000000..ed97b208 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkCountTests.cs @@ -0,0 +1,89 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +/// +/// Tests for the Count property in IPNetwork2. +/// +[TestClass] +public class IPNetworkCountTests +{ + /// + /// Tests Count functionality with Total32. + /// + [TestMethod] + public void TestTotal32() + { + var network = IPNetwork2.Parse("0.0.0.0/32"); + int total = 1; + Assert.AreEqual(total, network.Total, "Total"); + } + + /// + /// Tests Count functionality with Total31. + /// + [TestMethod] + public void TestTotal31() + { + var network = IPNetwork2.Parse("0.0.0.0/31"); + int total = 2; + Assert.AreEqual(total, network.Total, "Total"); + } + + /// + /// Tests Count functionality with Total30. + /// + [TestMethod] + public void TestTotal30() + { + var network = IPNetwork2.Parse("0.0.0.0/30"); + int total = 4; + Assert.AreEqual(total, network.Total, "Total"); + } + + /// + /// Tests Count functionality with Total24. + /// + [TestMethod] + public void TestTotal24() + { + var network = IPNetwork2.Parse("0.0.0.0/24"); + int total = 256; + Assert.AreEqual(total, network.Total, "Total"); + } + + /// + /// Tests Count functionality with Total16. + /// + [TestMethod] + public void TestTotal16() + { + var network = IPNetwork2.Parse("0.0.0.0/16"); + int total = 65536; + Assert.AreEqual(total, network.Total, "Total"); + } + + /// + /// Tests Count functionality with Total8. + /// + [TestMethod] + public void TestTotal8() + { + var network = IPNetwork2.Parse("0.0.0.0/8"); + int total = 16777216; + Assert.AreEqual(total, network.Total, "Total"); + } + + /// + /// Tests Count functionality with Total0. + /// + [TestMethod] + public void TestTotal0() + { + var network = IPNetwork2.Parse("0.0.0.0/0"); + long total = 4294967296; + Assert.AreEqual(total, network.Total, "Total"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkCtorTests.cs b/src/TestProject/IPNetworkTest/IPNetworkCtorTests.cs new file mode 100644 index 00000000..1a576c83 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkCtorTests.cs @@ -0,0 +1,16 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkCtorTests +{ + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void TestCtor1() + { + new IPNetwork2(BigInteger.Zero, AddressFamily.InterNetwork, 33); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs new file mode 100644 index 00000000..6c2284cb --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkCtorWithIpAndCidrTests.cs @@ -0,0 +1,38 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkCtorWithIpAndCidrTests +{ + /// + /// Tests Ctor With Ip And Cidr functionality with a /1 network. + /// + [TestMethod] + public void CtorWithIpAndCidr1() + { + string ipaddress = "192.168.168.100"; + var ip = IPAddress.Parse(ipaddress); + var ipnetwork = new IPNetwork2(ip, 24); + Assert.AreEqual("192.168.168.0/24", ipnetwork.ToString(), "network"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void CtorWithIpAndCidr2() + { + IPAddress ip = null; + var ipnetwork = new IPNetwork2(ip, 24); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void CtorWithIpAndCidr3() + { + string ipaddress = "192.168.168.100"; + var ip = IPAddress.Parse(ipaddress); + var ipnetwork = new IPNetwork2(ip, 33); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs b/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs new file mode 100644 index 00000000..21cc6870 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkExamplesTests.cs @@ -0,0 +1,235 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkExamplesTests +{ + /// + /// Tests Examples functionality with a /1 network. + /// + [TestMethod] + public void Example1() + { + var ipnetwork = IPNetwork2.Parse("192.168.168.100/24"); + + Console.WriteLine("Network : {0}", ipnetwork.Network); + Console.WriteLine("Netmask : {0}", ipnetwork.Netmask); + Console.WriteLine("Broadcast : {0}", ipnetwork.Broadcast); + Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable); + Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable); + Console.WriteLine("Usable : {0}", ipnetwork.Usable); + Console.WriteLine("Cidr : {0}", ipnetwork.Cidr); + } + + /// + /// Tests Examples functionality with a /2 network. + /// + [TestMethod] + public void Example2() + { + var ipnetwork = IPNetwork2.Parse("192.168.0.0/24"); + var ipaddress = IPAddress.Parse("192.168.0.100"); + var ipaddress2 = IPAddress.Parse("192.168.1.100"); + + var ipnetwork2 = IPNetwork2.Parse("192.168.0.128/25"); + var ipnetwork3 = IPNetwork2.Parse("192.168.1.1/24"); + + bool contains1 = ipnetwork.Contains(ipaddress); + bool contains2 = ipnetwork.Contains(ipaddress2); + bool contains3 = ipnetwork.Contains(ipnetwork2); + bool contains4 = ipnetwork.Contains(ipnetwork3); + + bool overlap1 = ipnetwork.Overlap(ipnetwork2); + bool overlap2 = ipnetwork.Overlap(ipnetwork3); + + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress, contains1); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork2, contains3); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork3, contains4); + + Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork2, overlap1); + Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork3, overlap2); + } + + /// + /// Tests Examples functionality. + /// + [TestMethod] + public void Example2B() + { + var ipnetwork1 = IPNetwork2.Parse("10.1.0.0/16"); + var ipnetwork2 = IPNetwork2.Parse("192.168.1.0/24"); + + var ipaddress1 = IPAddress.Parse("192.168.1.1"); + var ipaddress2 = IPAddress.Parse("192.168.2.100"); + var ipaddress3 = IPAddress.Parse("10.1.2.3"); + var ipaddress4 = IPAddress.Parse("10.4.5.6"); + + bool contains1 = ipnetwork2.Contains(ipaddress1); + bool contains2 = ipnetwork2.Contains(ipaddress2); + bool contains3 = ipnetwork1.Contains(ipaddress3); + bool contains4 = ipnetwork1.Contains(ipaddress4); + + Console.WriteLine("{0} contains {1} : {2}", ipnetwork1, ipaddress1, contains1); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork1, ipaddress2, contains2); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork2, ipaddress3, contains3); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork2, ipaddress4, contains4); + } + + /// + /// Tests Examples functionality with a /3 network. + /// + [TestMethod] + public void Example3() + { + IPNetwork2 ianaABlock = IPNetwork2.IANA_ABLK_RESERVED1; + IPNetwork2 ianaBBlock = IPNetwork2.IANA_BBLK_RESERVED1; + IPNetwork2 ianaCBlock = IPNetwork2.IANA_CBLK_RESERVED1; + + Console.WriteLine("IANA_ABLK_RESERVED1 is {0}", ianaABlock); + Console.WriteLine("IANA_BBLK_RESERVED1 is {0}", ianaBBlock); + Console.WriteLine("IANA_CBLK_RESERVED1 is {0}", ianaCBlock); + } + + /// + /// Tests Examples functionality with a /4 network. + /// + [TestMethod] + public void Example4() + { + var wholeInternet = IPNetwork2.Parse("0.0.0.0/0"); + byte newCidr = 2; + IPNetworkCollection subneted = wholeInternet.Subnet(newCidr); + + Console.WriteLine("{0} was subnetted into {1} subnets", wholeInternet, subneted.Count); + Console.WriteLine("First: {0}", subneted[0]); + Console.WriteLine("Last : {0}", subneted[subneted.Count - 1]); + Console.WriteLine("All :"); + + foreach (IPNetwork2 ipnetwork in subneted) + { + Console.WriteLine("{0}", ipnetwork); + } + } + + /// + /// Tests Examples functionality with a /5 network. + /// + [TestMethod] + public void Example5() + { + var ipnetwork1 = IPNetwork2.Parse("192.168.0.0/24"); + var ipnetwork2 = IPNetwork2.Parse("192.168.1.0/24"); + IPNetwork2[] ipnetwork3 = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2 }); + + Console.WriteLine("{0} + {1} = {2}", ipnetwork1, ipnetwork2, ipnetwork3[0]); + } + + /// + /// Tests Examples functionality with a /7 network. + /// + [TestMethod] + public void Example7() + { + var ipnetwork = IPNetwork2.Parse("192.168.168.100/24"); + + var ipaddress = IPAddress.Parse("192.168.168.200"); + var ipaddress2 = IPAddress.Parse("192.168.0.200"); + + bool contains1 = ipnetwork.Contains(ipaddress); + bool contains2 = ipnetwork.Contains(ipaddress2); + + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress, contains1); + Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); + } + + /// + /// Tests Examples functionality with a /9 network. + /// + [TestMethod] + public void Example9() + { + var network = IPNetwork2.Parse("192.168.0.1"); + var network2 = IPNetwork2.Parse("192.168.0.254"); + + IPNetwork2 ipnetwork = network.Supernet(network2); + + Console.WriteLine("Network : {0}", ipnetwork.Network); + Console.WriteLine("Netmask : {0}", ipnetwork.Netmask); + Console.WriteLine("Broadcast : {0}", ipnetwork.Broadcast); + Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable); + Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable); + Console.WriteLine("Usable : {0}", ipnetwork.Usable); + Console.WriteLine("Cidr : {0}", ipnetwork.Cidr); + } + + /// + /// Tests Examples with invalid input to ensure proper error handling. + /// + [TestMethod] + public void When_TrySupernet_192_168_0_0_cidr24_add_192_168_10_0_cidr24_Then_Should_Invalid() + { + var network = IPNetwork2.Parse("192.168.0.0/24"); + var network2 = IPNetwork2.Parse("192.168.10.0/24"); + + bool supernetted = network.TrySupernet(network2, out IPNetwork2 ipnetwork); + Assert.AreEqual(false, supernetted); + } + + /// + /// Tests Examples with invalid input to ensure proper error handling. + /// + [TestMethod] + public void When_TryWideSubnet_192_168_0_0_cidr24_add_192_168_10_0_cidr24_Then_Should_Invalid() + { + var network = IPNetwork2.Parse("192.168.0.0/24"); + var network2 = IPNetwork2.Parse("192.168.10.0/24"); + + bool wideSubnetted = IPNetwork2.TryWideSubnet(new[] { network, network2 }, out IPNetwork2 ipnetwork); + Assert.AreEqual(true, wideSubnetted); + Assert.AreEqual("192.168.0.0/20", ipnetwork.ToString()); + + Console.WriteLine("Network : {0}", ipnetwork.Network); + Console.WriteLine("Netmask : {0}", ipnetwork.Netmask); + Console.WriteLine("Broadcast : {0}", ipnetwork.Broadcast); + Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable); + Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable); + Console.WriteLine("Usable : {0}", ipnetwork.Usable); + Console.WriteLine("Cidr : {0}", ipnetwork.Cidr); + } + + /// + /// Tests Examples functionality with a /10 network. + /// + [TestMethod] + public void Example10() + { + var ipnetwork = IPNetwork2.Parse("192.168.0.1/25"); + + Console.WriteLine("Network : {0}", ipnetwork.Network); + Console.WriteLine("Netmask : {0}", ipnetwork.Netmask); + Console.WriteLine("Broadcast : {0}", ipnetwork.Broadcast); + Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable); + Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable); + Console.WriteLine("Usable : {0}", ipnetwork.Usable); + Console.WriteLine("Cidr : {0}", ipnetwork.Cidr); + } + + /// + /// Tests Examples functionality with a /11 network. + /// + [TestMethod] + public void Example11() + { + var defaultParse = IPNetwork2.Parse("192.168.0.0"); // default to ClassFull + var classFullParse = IPNetwork2.Parse("192.168.0.0", CidrGuess.ClassFull); + var classLessParse = IPNetwork2.Parse("192.168.0.0", CidrGuess.ClassLess); + + Console.WriteLine("IPV4 Default Parse : {0}", defaultParse); + Console.WriteLine("IPV4 ClassFull Parse : {0}", classFullParse); + Console.WriteLine("IPV4 ClassLess Parse : {0}", classLessParse); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkIanaBlocksTests.cs b/src/TestProject/IPNetworkTest/IPNetworkIanaBlocksTests.cs new file mode 100644 index 00000000..93397e1f --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkIanaBlocksTests.cs @@ -0,0 +1,157 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkIanaBlocksTests +{ + /// + /// Tests IANA_blocks functionality with IANA1. + /// + [TestMethod] + public void TestIana1() + { + var ipaddress = IPAddress.Parse("192.168.66.66"); + bool expected = true; + bool result = IPNetwork2.IsIANAReserved(ipaddress); + + Assert.AreEqual(expected, result, "IANA"); + } + + /// + /// Tests IANA_blocks functionality with IANA2. + /// + [TestMethod] + public void TestIana2() + { + var ipaddress = IPAddress.Parse("10.0.0.0"); + bool expected = true; + bool result = IPNetwork2.IsIANAReserved(ipaddress); + + Assert.AreEqual(expected, result, "IANA"); + } + + /// + /// Tests IANA_blocks functionality with IANA3. + /// + [TestMethod] + public void TestIana3() + { + var ipaddress = IPAddress.Parse("172.17.10.10"); + bool expected = true; + bool result = IPNetwork2.IsIANAReserved(ipaddress); + + Assert.AreEqual(expected, result, "IANA"); + } + + /// + /// Tests IANA_blocks functionality with IANA4. + /// + [TestMethod] + public void TestIana4() + { + var ipnetwork = IPNetwork2.Parse("192.168.66.66/24"); + bool expected = true; + bool result = ipnetwork.IsIANAReserved(); + + Assert.AreEqual(expected, result, "IANA"); + } + + /// + /// Tests IANA_blocks functionality with IANA5. + /// + [TestMethod] + public void TestIana5() + { + var ipnetwork = IPNetwork2.Parse("10.10.10/18"); + bool expected = true; + bool result = ipnetwork.IsIANAReserved(); + + Assert.AreEqual(expected, result, "IANA"); + } + + /// + /// Tests IANA_blocks functionality with IANA6. + /// + [TestMethod] + public void TestIana6() + { + var ipnetwork = IPNetwork2.Parse("172.31.10.10/24"); + bool expected = true; + bool result = ipnetwork.IsIANAReserved(); + + Assert.AreEqual(expected, result, "IANA"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestIana7() + { + IPAddress ipaddress = null; + IPNetwork2.IsIANAReserved(ipaddress); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestIana8() + { + IPNetwork2 ipnetwork = null; +#pragma warning disable 0618 + bool result = IPNetwork2.IsIANAReserved(ipnetwork); +#pragma warning restore 0618 + } + + /// + /// Tests IANA_blocks functionality with IANABlk1. + /// + [TestMethod] + public void TestIanaBlk1() + { + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; +#pragma warning disable 0618 + bool result = IPNetwork2.IsIANAReserved(ipnetwork); +#pragma warning restore 0618 + Assert.IsTrue(result, "result"); + } + + /// + /// Tests IANA_blocks functionality with IANA9. + /// + [TestMethod] + public void TestIana9() + { + var ipaddress = IPAddress.Parse("1.2.3.4"); + bool expected = false; + bool result = IPNetwork2.IsIANAReserved(ipaddress); + + Assert.AreEqual(expected, result, "IANA"); + } + + /// + /// Tests IANA_blocks functionality with IANA10. + /// + [TestMethod] + public void TestIana10() + { + var ipnetwork = IPNetwork2.Parse("172.16.0.0/8"); + bool expected = false; + bool result = ipnetwork.IsIANAReserved(); + + Assert.AreEqual(expected, result, "IANA"); + } + + /// + /// Tests IANA_blocks functionality with IANA11. + /// + [TestMethod] + public void TestIana11() + { + var ipnetwork = IPNetwork2.Parse("192.168.15.1/8"); + bool expected = false; + bool result = ipnetwork.IsIANAReserved(); + + Assert.AreEqual(expected, result, "IANA"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkOperatorTests.cs b/src/TestProject/IPNetworkTest/IPNetworkOperatorTests.cs new file mode 100644 index 00000000..3e4de18f --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkOperatorTests.cs @@ -0,0 +1,121 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkOperatorTests +{ + /// + /// Tests Operator functionality with Operator Greater1. + /// + [TestMethod] + public void TestOperatorGreater1() + { + var ipn1 = IPNetwork2.Parse("10.0.0.1/32"); + var ipn2 = IPNetwork2.Parse("10.0.0.2/32"); + + bool greater = ipn1 > ipn2; + + Assert.AreEqual(false, greater, "greater"); + } + + /// + /// Tests Operator functionality with Operator Greater2. + /// + [TestMethod] + public void TestOperatorGreater2() + { + var ipn1 = IPNetwork2.Parse("10.0.0.100/32"); + var ipn2 = IPNetwork2.Parse("10.0.0.2/32"); + + bool greater = ipn1 > ipn2; + + Assert.AreEqual(true, greater, "greater"); + } + + /// + /// Tests Operator functionality with Operator Lower1. + /// + [TestMethod] + public void TestOperatorLower1() + { + var ipn1 = IPNetwork2.Parse("10.0.0.1/32"); + var ipn2 = IPNetwork2.Parse("10.0.0.2/32"); + + bool lower = ipn1 < ipn2; + + Assert.AreEqual(true, lower, "lower"); + } + + /// + /// Tests Operator functionality with Operator Lower2. + /// + [TestMethod] + public void TestOperatorLower2() + { + var ipn1 = IPNetwork2.Parse("10.0.0.100/32"); + var ipn2 = IPNetwork2.Parse("10.0.0.2/32"); + + bool lower = ipn1 < ipn2; + + Assert.AreEqual(false, lower, "lower"); + } + + /// + /// Tests Operator functionality with Operator Different1. + /// + [TestMethod] + public void TestOperatorDifferent1() + { + var ipn1 = IPNetwork2.Parse("10.0.0.100/32"); + var ipn2 = IPNetwork2.Parse("10.0.0.2/32"); + + bool different = ipn1 != ipn2; + + Assert.AreEqual(true, different, "different"); + } + + /// + /// Tests Operator functionality with Operator Different2. + /// + [TestMethod] + public void TestOperatorDifferent2() + { + var ipn1 = IPNetwork2.Parse("10.0.0.1/32"); + var ipn2 = IPNetwork2.Parse("10.0.0.1/32"); + + bool different = ipn1 != ipn2; + + Assert.AreEqual(false, different, "different"); + } + + /// + /// Tests Operator functionality with Operator Equal1. + /// + [TestMethod] + public void TestOperatorEqual1() + { + var ipn1 = IPNetwork2.Parse("10.0.0.100/32"); + var ipn2 = IPNetwork2.Parse("10.0.0.2/32"); + + bool eq = ipn1 == ipn2; + + Assert.AreEqual(false, eq, "eq"); + } + + /// + /// Tests Operator functionality with Operator Equal2. + /// + [TestMethod] + public void TestOperatorEqual2() + { + var ipn1 = IPNetwork2.Parse("10.0.0.1/32"); + var ipn2 = IPNetwork2.Parse("10.0.0.1/32"); + + bool eq = ipn1 == ipn2; + + Assert.AreEqual(true, eq, "eq"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkOverlapTests.cs b/src/TestProject/IPNetworkTest/IPNetworkOverlapTests.cs new file mode 100644 index 00000000..f3f082be --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkOverlapTests.cs @@ -0,0 +1,102 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkOverlapTests +{ + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestOverlap1() + { + IPNetwork2 network1 = null; + IPNetwork2 network2 = null; + +#pragma warning disable 0618 + bool result = IPNetwork2.Overlap(network1, network2); +#pragma warning restore 0618 + } + + /// + /// Tests Overlap functionality with Overlap Static2. + /// + [TestMethod] + public void TestOverlapStatic2() + { + IPNetwork2 network1 = IPNetwork2.IANA_ABLK_RESERVED1; + IPNetwork2 network2 = IPNetwork2.IANA_ABLK_RESERVED1; + +#pragma warning disable 0618 + bool result = IPNetwork2.Overlap(network1, network2); +#pragma warning restore 0618 + + Assert.IsTrue(result, "result"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestOverlap2() + { + var network1 = IPNetwork2.Parse("10.0.0.0/0"); + IPNetwork2 network2 = null; + network1.Overlap(network2); + } + + /// + /// Tests Overlap functionality with Overlap3. + /// + [TestMethod] + public void TestOverlap3() + { + var network1 = IPNetwork2.Parse("10.0.0.0/0"); + var network2 = IPNetwork2.Parse("10.0.0.0/0"); + bool result = network1.Overlap(network2); + bool expected = true; + + Assert.AreEqual(expected, result, "overlap"); + } + + /// + /// Tests Overlap functionality with Overlap4. + /// + [TestMethod] + public void TestOverlap4() + { + var network1 = IPNetwork2.Parse("10.10.0.0/16"); + var network2 = IPNetwork2.Parse("10.10.1.0/24"); + bool result = network1.Overlap(network2); + bool expected = true; + + Assert.AreEqual(expected, result, "overlap"); + } + + /// + /// Tests Overlap functionality with Overlap5. + /// + [TestMethod] + public void TestOverlap5() + { + var network1 = IPNetwork2.Parse("10.10.0.0/24"); + var network2 = IPNetwork2.Parse("10.10.1.0/24"); + bool result = network1.Overlap(network2); + bool expected = false; + + Assert.AreEqual(expected, result, "overlap"); + } + + /// + /// Tests Overlap functionality with Overlap6. + /// + [TestMethod] + public void TestOverlap6() + { + var network1 = IPNetwork2.Parse("10.10.1.0/24"); + var network2 = IPNetwork2.Parse("10.10.0.0/16"); + bool result = network1.Overlap(network2); + bool expected = true; + + Assert.AreEqual(expected, result, "overlap"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkParseIpIpTests.cs b/src/TestProject/IPNetworkTest/IPNetworkParseIpIpTests.cs new file mode 100644 index 00000000..6b8940a4 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkParseIpIpTests.cs @@ -0,0 +1,42 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkParseIpIpTests +{ + /// + /// Tests Parse Ip Ip functionality with a /1 network. + /// + [TestMethod] + public void ParseIpIp1() + { + string ipaddress = "192.168.168.100"; + string netmask = "255.255.255.0"; + var ip = IPAddress.Parse(ipaddress); + var netm = IPAddress.Parse(netmask); + var ipnetwork = IPNetwork2.Parse(ip, netm); + Assert.AreEqual("192.168.168.0/24", ipnetwork.ToString(), "network"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void ParseIpIp2() + { + IPAddress ip = null; + IPAddress netm = null; + var ipnetwork = IPNetwork2.Parse(ip, netm); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void ParseIpIp3() + { + string ipaddress = "192.168.168.100"; + var ip = IPAddress.Parse(ipaddress); + IPAddress netm = null; + var ipnetwork = IPNetwork2.Parse(ip, netm); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkParseStringStringTests.cs b/src/TestProject/IPNetworkTest/IPNetworkParseStringStringTests.cs new file mode 100644 index 00000000..45c45b9c --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkParseStringStringTests.cs @@ -0,0 +1,62 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkParseStringStringTests +{ + /// + /// Tests Parse String String functionality with Parse String String1. + /// + [TestMethod] + public void TestParseStringString1() + { + string ipaddress = "192.168.168.100"; + string netmask = "255.255.255.0"; + + var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + Assert.AreEqual("192.168.168.0/24", ipnetwork.ToString(), "network"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestParseStringString2() + { + string ipaddress = null; + string netmask = null; + + var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestParseStringString3() + { + string ipaddress = "192.168.168.100"; + string netmask = null; + + var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestParseStringString4() + { + string ipaddress = string.Empty; + string netmask = string.Empty; + + var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestParseStringString5() + { + string ipaddress = "192.168.168.100"; + string netmask = string.Empty; + + var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkParseTests.cs b/src/TestProject/IPNetworkTest/IPNetworkParseTests.cs new file mode 100644 index 00000000..9fdb09b4 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkParseTests.cs @@ -0,0 +1,569 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkParseTests +{ + [TestMethod] + [TestCategory("Parse")] + [ExpectedException(typeof(ArgumentNullException))] + public void TestParseIPAddressNetmaskAne2() + { + IPAddress ip = null; + IPNetwork2.Parse(ip, ip); + } + + [TestMethod] + [TestCategory("Parse")] + [ExpectedException(typeof(ArgumentNullException))] + public void TestParseIPAddressNetmaskAne3() + { + IPNetwork2.Parse(string.Empty, 0); + } + + [TestMethod] + [TestCategory("Parse")] + [ExpectedException(typeof(ArgumentNullException))] + public void TestParseIPAddressNetmaskAne4() + { + IPNetwork2.Parse(null, 0); + } + + [TestMethod] + [TestCategory("Parse")] + [ExpectedException(typeof(ArgumentNullException))] + public void TestParseIPAddressNetmaskAne5() + { + string n = null; + IPNetwork2.Parse(n, n); + } + + [TestMethod] + [TestCategory("Parse")] + [ExpectedException(typeof(ArgumentException))] + public void TestParseIPAddressNetmaskAne8() + { + var ipnet = IPNetwork2.Parse("x.x.x.x", "x.x.x.x"); + } + + [TestMethod] + [TestCategory("Parse")] + [ExpectedException(typeof(ArgumentException))] + public void TestParseIPAddressNetmaskAne9() + { + var ipnet = IPNetwork2.Parse("0.0.0.0", "x.x.x.x"); + } + + [TestMethod] + [TestCategory("Parse")] + [ExpectedException(typeof(ArgumentException))] + public void TestParseIPAddressNetmaskAne10() + { + var ipnet = IPNetwork2.Parse("x.x.x.x", 0); + } + + [TestMethod] + [TestCategory("Parse")] + [ExpectedException(typeof(ArgumentException))] + public void TestParseIPAddressNetmaskAne11() + { + var ipnet = IPNetwork2.Parse("0.0.0.0", 33); + } + + [TestCategory("Parse")] + /// + /// Tests Parse functionality with Parse IPAddress Netmask. + /// + [TestMethod] + public void TestParseIPAddressNetmask() + { + string ipaddress = "192.168.168.100"; + string netmask = "255.255.255.0"; + + string network = "192.168.168.0"; + string broadcast = "192.168.168.255"; + string firstUsable = "192.168.168.1"; + string lastUsable = "192.168.168.254"; + byte cidr = 24; + uint usable = 254; + + var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + [TestCategory("Parse")] + /// + /// Tests Parse functionality with Parse String1. + /// + [TestMethod] + public void TestParseString1() + { + string ipaddress = "192.168.168.100 255.255.255.0"; + + string network = "192.168.168.0"; + string netmask = "255.255.255.0"; + string broadcast = "192.168.168.255"; + string firstUsable = "192.168.168.1"; + string lastUsable = "192.168.168.254"; + byte cidr = 24; + uint usable = 254; + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + [TestCategory("Parse")] + /// + /// Tests Parse functionality with Parse String2. + /// + [TestMethod] + public void TestParseString2() + { + string ipaddress = "192.168.168.100/24"; + + string network = "192.168.168.0"; + string netmask = "255.255.255.0"; + string broadcast = "192.168.168.255"; + string firstUsable = "192.168.168.1"; + string lastUsable = "192.168.168.254"; + byte cidr = 24; + uint usable = 254; + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + [TestCategory("Parse")] + /// + /// Tests Parse functionality with Parse String3. + /// + [TestMethod] + public void TestParseString3() + { + string ipaddress = "0.0.0.0/0"; + + string network = "0.0.0.0"; + string netmask = "0.0.0.0"; + string broadcast = "255.255.255.255"; + string firstUsable = "0.0.0.1"; + string lastUsable = "255.255.255.254"; + byte cidr = 0; + uint usable = 4294967294; + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + [TestCategory("Parse")] + /// + /// Tests Parse functionality with Parse String4. + /// + [TestMethod] + public void TestParseString4() + { + string ipaddress = "0.0.0.0/32"; + + string network = "0.0.0.0"; + string netmask = "255.255.255.255"; + string broadcast = "0.0.0.0"; + string firstUsable = "0.0.0.0"; + string lastUsable = "0.0.0.0"; + byte cidr = 32; + uint usable = 0; + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + [TestCategory("Parse")] + /// + /// Tests Parse functionality with Parse String5. + /// + [TestMethod] + public void TestParseString5() + { + string ipaddress = "255.255.255.255/32"; + + string network = "255.255.255.255"; + string netmask = "255.255.255.255"; + string broadcast = "255.255.255.255"; + string firstUsable = "255.255.255.255"; + string lastUsable = "255.255.255.255"; + byte cidr = 32; + uint usable = 0; + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + [TestCategory("Parse")] + /// + /// Tests Parse functionality with Parse IPAddress No Netmask1. + /// + [TestMethod] + public void TestParseIPAddressNoNetmask1() + { + string ipaddress = "10.0.0.0"; + + string network = "10.0.0.0"; + string netmask = "255.0.0.0"; + string broadcast = "10.255.255.255"; + string firstUsable = "10.0.0.1"; + string lastUsable = "10.255.255.254"; + byte cidr = 8; + uint usable = 16777214; + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + /// + /// Tests Parse functionality. + /// + [TestMethod] + public void When_Parse_254_128_0_0_Should_Succeed() + { + string ipaddress = "254.128.0.0"; + + string network = "254.128.0.0"; + string netmask = "255.255.255.0"; + string broadcast = "254.128.0.255"; + string firstUsable = "254.128.0.1"; + string lastUsable = "254.128.0.254"; + byte cidr = 24; + uint usable = 254; + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + /// + /// Tests Parse functionality with Parse IPAddress No Netmask2. + /// + [TestMethod] + public void TestParseIPAddressNoNetmask2() + { + string ipaddress = "172.0.0.0"; + + string network = "172.0.0.0"; + string netmask = "255.255.0.0"; + string broadcast = "172.0.255.255"; + string firstUsable = "172.0.0.1"; + string lastUsable = "172.0.255.254"; + byte cidr = 16; + uint usable = 65534; + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + /// + /// Tests Parse functionality with Parse IPAddress No Netmask3. + /// + [TestMethod] + public void TestParseIPAddressNoNetmask3() + { + string ipaddress = "192.0.0.0"; + + string network = "192.0.0.0"; + string netmask = "255.255.255.0"; + string broadcast = "192.0.0.255"; + string firstUsable = "192.0.0.1"; + string lastUsable = "192.0.0.254"; + byte cidr = 24; + uint usable = 254; + + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + /// + /// Tests Parse functionality with Parse IPAddress No Netmask1_Class Full. + /// + [TestMethod] + public void TestParseIPAddressNoNetmask1_ClassFull() + { + string ipaddress = "10.0.0.0"; + ICidrGuess guessCidr = CidrGuess.ClassFull; + + var ipnetwork = IPNetwork2.Parse(ipaddress, guessCidr); + + string network = "10.0.0.0"; + string netmask = "255.0.0.0"; + string broadcast = "10.255.255.255"; + string firstUsable = "10.0.0.1"; + string lastUsable = "10.255.255.254"; + byte cidr = 8; + uint usable = 16777214; + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + /// + /// Tests Parse functionality with Parse IPAddress No Netmask2_Class Full. + /// + [TestMethod] + public void TestParseIPAddressNoNetmask2_ClassFull() + { + string ipaddress = "172.0.0.0"; + ICidrGuess guessCidr = CidrGuess.ClassFull; + + var ipnetwork = IPNetwork2.Parse(ipaddress, guessCidr); + + string network = "172.0.0.0"; + string netmask = "255.255.0.0"; + string broadcast = "172.0.255.255"; + string firstUsable = "172.0.0.1"; + string lastUsable = "172.0.255.254"; + byte cidr = 16; + uint usable = 65534; + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + /// + /// Tests Parse functionality with Parse IPAddress No Netmask3_Class Full. + /// + [TestMethod] + public void TestParseIPAddressNoNetmask3_ClassFull() + { + string ipaddress = "192.0.0.0"; + ICidrGuess guessCidr = CidrGuess.ClassFull; + + var ipnetwork = IPNetwork2.Parse(ipaddress, guessCidr); + + string network = "192.0.0.0"; + string netmask = "255.255.255.0"; + string broadcast = "192.0.0.255"; + string firstUsable = "192.0.0.1"; + string lastUsable = "192.0.0.254"; + byte cidr = 24; + uint usable = 254; + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + /// + /// Tests Parse functionality with Parse IPAddress No Netmask1_Class Less. + /// + [TestMethod] + public void TestParseIPAddressNoNetmask1_ClassLess() + { + string ipaddress = "10.0.0.0"; + ICidrGuess guessCidr = CidrGuess.ClassLess; + + var ipnetwork = IPNetwork2.Parse(ipaddress, guessCidr); + + string network = "10.0.0.0"; + string netmask = "255.255.255.255"; + string broadcast = "10.0.0.0"; + string firstUsable = "10.0.0.0"; + string lastUsable = "10.0.0.0"; + byte cidr = 32; + uint usable = 0; + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + /// + /// Tests Parse functionality with Parse IPAddress No Netmask2_Class Less. + /// + [TestMethod] + public void TestParseIPAddressNoNetmask2_ClassLess() + { + string ipaddress = "172.0.0.0"; + ICidrGuess guessCidr = CidrGuess.ClassLess; + + var ipnetwork = IPNetwork2.Parse(ipaddress, guessCidr); + + string network = "172.0.0.0"; + string netmask = "255.255.255.255"; + string broadcast = "172.0.0.0"; + string firstUsable = "172.0.0.0"; + string lastUsable = "172.0.0.0"; + byte cidr = 32; + uint usable = 0; + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + /// + /// Tests Parse functionality with Parse IPAddress No Netmask3_Class Less. + /// + [TestMethod] + public void TestParseIPAddressNoNetmask3_ClassLess() + { + string ipaddress = "192.0.0.0"; + ICidrGuess guessCidr = CidrGuess.ClassLess; + + var ipnetwork = IPNetwork2.Parse(ipaddress, guessCidr); + + string network = "192.0.0.0"; + string netmask = "255.255.255.255"; + string broadcast = "192.0.0.0"; + string firstUsable = "192.0.0.0"; + string lastUsable = "192.0.0.0"; + byte cidr = 32; + uint usable = 0; + + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + /// + /// Tests Parse functionality with Parse IPAddress No Netmask4. + /// + [TestMethod] + public void TestParseIPAddressNoNetmask4() + { + string ipaddress = "224.0.0.0"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + + Assert.AreEqual("224.0.0.0/24", ipnetwork.ToString(), "Network"); + } + + /// + /// Tests Parse functionality with Parse IPAddress No Netmask5. + /// + [TestMethod] + public void TestParseIPAddressNoNetmask5() + { + string ipaddress = "240.0.0.0"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + Assert.AreEqual("240.0.0.0/24", ipnetwork.ToString(), "Network"); + } + + /// + /// Tests Parse functionality with Parse IPAddress No Netmask127001. + /// + [TestMethod] + public void TestParseIPAddressNoNetmask127001() + { + string ipaddress = "127.0.0.1"; + IPNetwork2 result = null; + IPNetwork2.TryParse(ipaddress, out result); + Assert.AreEqual(result.Cidr, 8); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestParseStringAe1() + { + string ipaddress = "garbage"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestParseStringAe2() + { + string ipaddress = "0.0.0.0 0.0.1.0"; + var ipnetwork = IPNetwork2.Parse(ipaddress); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestParseStringAne1() + { + string ipaddress = null; + var ipnetwork = IPNetwork2.Parse(ipaddress); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkPrintTests.cs b/src/TestProject/IPNetworkTest/IPNetworkPrintTests.cs new file mode 100644 index 00000000..37397ece --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkPrintTests.cs @@ -0,0 +1,52 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkPrintTests +{ + /// + /// Tests Print functionality. + /// + [TestMethod] + public void Print() + { + var ipn = IPNetwork2.Parse("0.0.0.0/0"); + string print = ipn.Print().Replace("\r", string.Empty); + string expected = @"IPNetwork : 0.0.0.0/0 +Network : 0.0.0.0 +Netmask : 0.0.0.0 +Cidr : 0 +Broadcast : 255.255.255.255 +FirstUsable : 0.0.0.1 +LastUsable : 255.255.255.254 +Usable : 4294967294 +".Replace("\r", string.Empty); + + Assert.AreEqual(expected, print, "Print"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void PrintNull() + { + IPNetwork2 ipn = null; +#pragma warning disable 0618 + string print = IPNetwork2.Print(ipn); +#pragma warning restore 0618 + } + + /// + /// Tests Print functionality. + /// + [TestMethod] + public void PrintStatic() + { + IPNetwork2 ipn = IPNetwork2.IANA_ABLK_RESERVED1; +#pragma warning disable 0618 + string print = IPNetwork2.Print(ipn); +#pragma warning restore 0618 + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs b/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs new file mode 100644 index 00000000..3761aa88 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkResizeTests.cs @@ -0,0 +1,16 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkResizeTests +{ + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestResize1() + { + byte[] resut = IPNetwork2.Resize(new byte[33], AddressFamily.InterNetwork); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkSortTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSortTests.cs new file mode 100644 index 00000000..9cba5109 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkSortTests.cs @@ -0,0 +1,55 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkSortTests +{ + /// + /// Tests Sort functionality with Sort1. + /// + [TestMethod] + public void TestSort1() + { + string[] ips = { "1.1.1.1", "255.255.255.255", "2.2.2.2", "0.0.0.0" }; + var ipns = new List(); + foreach (string ip in ips) + { + IPNetwork2 ipn; + if (IPNetwork2.TryParse(ip, 32, out ipn)) + { + ipns.Add(ipn); + } + } + + ipns.Sort(); + Assert.AreEqual("0.0.0.0/32", ipns[0].ToString(), "0"); + Assert.AreEqual("1.1.1.1/32", ipns[1].ToString(), "1"); + Assert.AreEqual("2.2.2.2/32", ipns[2].ToString(), "2"); + Assert.AreEqual("255.255.255.255/32", ipns[3].ToString(), "3"); + } + + /// + /// Tests Sort functionality with Sort2. + /// + [TestMethod] + public void TestSort2() + { + string[] ips = { "0.0.0.100/32", "0.0.0.0/24" }; + var ipns = new List(); + foreach (string ip in ips) + { + IPNetwork2 ipn; + if (IPNetwork2.TryParse(ip, out ipn)) + { + ipns.Add(ipn); + } + } + + ipns.Sort(); + Assert.AreEqual("0.0.0.0/24", ipns[0].ToString(), "0"); + Assert.AreEqual("0.0.0.100/32", ipns[1].ToString(), "1"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs new file mode 100644 index 00000000..cf874e3c --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkSubnetTests.cs @@ -0,0 +1,208 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkSubnetTests +{ + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestSubnet1() + { + IPNetwork2 ipnetwork = null; + byte cidr = 9; + +#pragma warning disable 0618 + IPNetworkCollection result = IPNetwork2.Subnet(ipnetwork, cidr); +#pragma warning restore 0618 + } + + /// + /// Tests Subnet functionality with Subnet Static1. + /// + [TestMethod] + public void TestSubnetStatic1() + { + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; + byte cidr = 9; + +#pragma warning disable 0618 + IPNetworkCollection result = IPNetwork2.Subnet(ipnetwork, cidr); +#pragma warning restore 0618 + } + + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void TestSubnet3() + { + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; + byte cidr = 55; + + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestSubnet4() + { + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; + byte cidr = 1; + + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + } + + /// + /// Tests Subnet functionality with Subnet5. + /// + [TestMethod] + public void TestSubnet5() + { + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; + byte cidr = 9; + + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(2, subnets.Count, "count"); + Assert.AreEqual("10.0.0.0/9", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("10.128.0.0/9", subnets[1].ToString(), "subnet2"); + } + + /// + /// Tests Subnet functionality with Subnet6. + /// + [TestMethod] + public void TestSubnet6() + { + IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; + byte cidr = 20; + + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(16, subnets.Count, "count"); + Assert.AreEqual("192.168.0.0/20", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("192.168.16.0/20", subnets[1].ToString(), "subnet2"); + Assert.AreEqual("192.168.32.0/20", subnets[2].ToString(), "subnet3"); + Assert.AreEqual("192.168.48.0/20", subnets[3].ToString(), "subnet4"); + Assert.AreEqual("192.168.64.0/20", subnets[4].ToString(), "subnet5"); + Assert.AreEqual("192.168.80.0/20", subnets[5].ToString(), "subnet6"); + Assert.AreEqual("192.168.96.0/20", subnets[6].ToString(), "subnet7"); + Assert.AreEqual("192.168.112.0/20", subnets[7].ToString(), "subnet8"); + Assert.AreEqual("192.168.128.0/20", subnets[8].ToString(), "subnet9"); + Assert.AreEqual("192.168.144.0/20", subnets[9].ToString(), "subnet10"); + Assert.AreEqual("192.168.160.0/20", subnets[10].ToString(), "subnet11"); + Assert.AreEqual("192.168.176.0/20", subnets[11].ToString(), "subnet12"); + Assert.AreEqual("192.168.192.0/20", subnets[12].ToString(), "subnet13"); + Assert.AreEqual("192.168.208.0/20", subnets[13].ToString(), "subnet14"); + Assert.AreEqual("192.168.224.0/20", subnets[14].ToString(), "subnet15"); + Assert.AreEqual("192.168.240.0/20", subnets[15].ToString(), "subnet16"); + } + + /// + /// Tests Subnet functionality with Subnet7. + /// + [TestMethod] + public void TestSubnet7() + { + IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; + byte cidr = 24; + + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(256, subnets.Count, "count"); + Assert.AreEqual("192.168.0.0/24", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("192.168.255.0/24", subnets[255].ToString(), "subnet16"); + } + + /// + /// Tests Subnet functionality with Subnet8. + /// + [TestMethod] + public void TestSubnet8() + { + IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; + byte cidr = 24; + + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(256, subnets.Count, "count"); + Assert.AreEqual("192.168.0.0/24", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("192.168.255.0/24", subnets[255].ToString(), "subnet256"); + } + + /// + /// Tests Subnet functionality with Subnet9. + /// + [TestMethod] + public void TestSubnet9() + { + var ipnetwork = IPNetwork2.Parse("192.168.0.0/24"); + byte cidr = 32; + + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(256, subnets.Count, "count"); + Assert.AreEqual("192.168.0.0/32", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("192.168.0.255/32", subnets[255].ToString(), "subnet256"); + } + + /// + /// Tests Subnet functionality with Subnet_Example8. + /// + [TestMethod] + public void TestSubnet_Example8() + { + var wholeInternet = IPNetwork2.Parse("0.0.0.0/0"); + byte newCidr = 2; + IPNetworkCollection subneted = wholeInternet.Subnet(newCidr); + + Console.WriteLine("{0} was subnetted into {1} subnets", wholeInternet, subneted.Count); + Console.WriteLine("First: {0}", subneted[0]); + Console.WriteLine("Last : {0}", subneted[subneted.Count - 1]); + Console.WriteLine("All :"); + + foreach (IPNetwork2 ipnetwork in subneted) + { + Console.WriteLine("{0}", ipnetwork); + } + } + + /// + /// Tests Subnet functionality with Subnet10. + /// + [TestMethod] + public void TestSubnet10() + { + var ipnetwork = IPNetwork2.Parse("0.0.0.0/0"); + byte cidr = 32; + + // Here I spawm a OOM dragon ! beware of the beast ! + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + Assert.AreEqual(4294967296, subnets.Count, "count"); + Assert.AreEqual("0.0.0.0/32", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("255.255.255.255/32", subnets[4294967295].ToString(), "subnet256"); + } + + /// + /// Tests Subnet functionality with Subnet12. + /// + [TestMethod] + public void TestSubnet12() + { + IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; + byte cidr = 20; + int i = -1; + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + foreach (IPNetwork2 ipn in subnets) + { + i++; + Assert.AreEqual(subnets[i], ipn, "subnet"); + } + } + + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void TestSubnet13() + { + IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; + byte cidr = 20; + IPNetworkCollection subnets = ipnetwork.Subnet(cidr); + IPNetwork2 error = subnets[1000]; + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkSupernetArrayTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSupernetArrayTests.cs new file mode 100644 index 00000000..2bb0d5a7 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkSupernetArrayTests.cs @@ -0,0 +1,245 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkSupernetArrayTests +{ + /// + /// Tests Supernet Array functionality with Try Supernet Array. + /// + [TestMethod] + public void TestTrySupernetArray() + { + var ipnetwork1 = IPNetwork2.Parse("192.168.0.0/24"); + var ipnetwork2 = IPNetwork2.Parse("192.168.1.0/24"); + var ipnetwork3 = IPNetwork2.Parse("192.168.2.0/24"); + var ipnetwork4 = IPNetwork2.Parse("192.168.3.0/24"); + + IPNetwork2[] ipnetworks = { ipnetwork1, ipnetwork2, ipnetwork3, ipnetwork4 }; + IPNetwork2[] expected = { IPNetwork2.Parse("192.168.0.0/22") }; + + IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); + + Assert.AreEqual(expected.Length, result.Length, "supernetarray"); + Assert.AreEqual(expected[0], expected[0], "suppernet"); + } + + /// + /// Tests Supernet Array functionality with Try Supernet Array1. + /// + [TestMethod] + public void TestTrySupernetArray1() + { + IPNetwork2[] ipnetworks = { }; + IPNetwork2[] expected = { }; + + IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); + + Assert.AreEqual(expected.Length, result.Length, "supernetarray"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestTrySupernetArray2() + { + IPNetwork2[] ipnetworks = null; + IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); + } + + /// + /// Tests Supernet Array functionality with Try Supernet Array3. + /// + [TestMethod] + public void TestTrySupernetArray3() + { + IPNetwork2 ipnetwork1 = null; + IPNetwork2 ipnetwork2 = null; + IPNetwork2 ipnetwork3 = null; + IPNetwork2 ipnetwork4 = null; + + IPNetwork2[] ipnetworks = { ipnetwork1, ipnetwork2, ipnetwork3, ipnetwork4 }; + IPNetwork2[] expected = { }; + + IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); + + Assert.AreEqual(expected.Length, result.Length, "supernetarray"); + } + + /// + /// Tests Supernet Array functionality with Try Supernet Array4. + /// + [TestMethod] + public void TestTrySupernetArray4() + { + var ipnetwork1 = IPNetwork2.Parse("192.168.0.0/24"); + IPNetworkCollection subnetted = ipnetwork1.Subnet(32); + IPNetwork2[] ipnetworks = subnetted.ToArray(); + Assert.AreEqual(256, ipnetworks.Length, "subnet"); + + IPNetwork2[] expected = { IPNetwork2.Parse("192.168.0.0/24") }; + + IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); + + Assert.AreEqual(expected.Length, result.Length, "supernetarray"); + Assert.AreEqual(expected[0], ipnetwork1, "suppernet"); + } + + /// + /// Tests Supernet Array functionality with Try Supernet Array5. + /// + [TestMethod] + public void TestTrySupernetArray5() + { + var ipnetwork1 = IPNetwork2.Parse("192.168.0.0/16"); + IPNetworkCollection subnetted = ipnetwork1.Subnet(24); + IPNetwork2[] ipnetworks = subnetted.ToArray(); + Assert.AreEqual(256, ipnetworks.Length, "subnet"); + + IPNetwork2[] expected = { IPNetwork2.Parse("192.168.0.0/16") }; + + IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); + + Assert.AreEqual(expected.Length, result.Length, "supernetarray"); + Assert.AreEqual(expected[0], ipnetwork1, "suppernet"); + } + + /// + /// Tests Supernet Array functionality with Try Supernet Array6. + /// + [TestMethod] + public void TestTrySupernetArray6() + { + var ipnetwork1 = IPNetwork2.Parse("192.168.0.0/8"); + IPNetworkCollection subnetted = ipnetwork1.Subnet(24); + IPNetwork2[] ipnetworks = subnetted.ToArray(); + Assert.AreEqual(65536, ipnetworks.Length, "subnet"); + + IPNetwork2[] expected = { IPNetwork2.Parse("192.0.0.0/8") }; + + IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); + + Assert.AreEqual(expected.Length, result.Length, "supernetarray"); + Assert.AreEqual(expected[0], ipnetwork1, "suppernet"); + } + + /// + /// Tests Supernet Array functionality with Try Supernet Array7. + /// + [TestMethod] + public void TestTrySupernetArray7() + { + IPNetwork2[] ipnetworks = + { + IPNetwork2.Parse("10.0.2.2/24"), + IPNetwork2.Parse("192.168.0.0/24"), + IPNetwork2.Parse("192.168.1.0/24"), + IPNetwork2.Parse("192.168.2.0/24"), + IPNetwork2.Parse("10.0.1.1/24"), + IPNetwork2.Parse("192.168.3.0/24") + }; + + IPNetwork2[] expected = + { + IPNetwork2.Parse("10.0.1.0/24"), + IPNetwork2.Parse("10.0.2.0/24"), + IPNetwork2.Parse("192.168.0/22") + }; + + IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); + + Assert.AreEqual(expected.Length, result.Length, "supernetarray"); + Assert.AreEqual(expected[0], result[0], "suppernet"); + Assert.AreEqual(expected[1], result[1], "suppernet1"); + Assert.AreEqual(expected[2], result[2], "suppernet2"); + } + + /// + /// Tests Supernet Array functionality with Try Supernet Array8. + /// + [TestMethod] + public void TestTrySupernetArray8() + { + IPNetwork2[] ipnetworks = + { + IPNetwork2.Parse("10.0.2.2/24"), + IPNetwork2.Parse("192.168.0.0/24"), + IPNetwork2.Parse("192.168.1.0/24"), + IPNetwork2.Parse("192.168.2.0/24"), + IPNetwork2.Parse("10.0.1.1/24"), + IPNetwork2.Parse("192.168.3.0/24"), + IPNetwork2.Parse("10.6.6.6/8") + }; + + IPNetwork2[] expected = + { + IPNetwork2.Parse("10.0.0.0/8"), + IPNetwork2.Parse("192.168.0/22") + }; + + IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); + + Assert.AreEqual(expected.Length, result.Length, "supernetarray"); + Assert.AreEqual(expected[0], result[0], "suppernet"); + Assert.AreEqual(expected[1], result[1], "suppernet1"); + } + + /// + /// Tests Supernet Array functionality with Try Supernet Array9. + /// + [TestMethod] + public void TestTrySupernetArray9() + { + IPNetwork2[] ipnetworks = + { + IPNetwork2.Parse("10.0.2.2/24"), + IPNetwork2.Parse("192.168.0.0/24"), + IPNetwork2.Parse("192.168.1.0/24"), + IPNetwork2.Parse("192.168.2.0/24"), + IPNetwork2.Parse("10.0.1.1/24"), + IPNetwork2.Parse("192.168.3.0/24"), + IPNetwork2.Parse("10.6.6.6/8"), + IPNetwork2.Parse("11.6.6.6/8"), + IPNetwork2.Parse("12.6.6.6/8") + }; + + IPNetwork2[] expected = + { + IPNetwork2.Parse("10.0.0.0/7"), + IPNetwork2.Parse("12.0.0.0/8"), + IPNetwork2.Parse("192.168.0/22") + }; + + IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); + + Assert.AreEqual(expected.Length, result.Length, "supernetarray"); + Assert.AreEqual(expected[0], result[0], "suppernet"); + Assert.AreEqual(expected[1], result[1], "suppernet1"); + Assert.AreEqual(expected[2], result[2], "suppernet2"); + } + + /// + /// Tests Supernet Array functionality with Try Supernet Array10. + /// + [TestMethod] + public void TestTrySupernetArray10() + { + IPNetwork2[] ipnetworks = + { + IPNetwork2.Parse("10.0.2.2/24"), + IPNetwork2.Parse("10.0.2.2/23") + }; + + IPNetwork2[] expected = + { + IPNetwork2.Parse("10.0.2.2/23") + }; + + IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); + + Assert.AreEqual(expected.Length, result.Length, "supernetarray"); + Assert.AreEqual(expected[0], result[0], "suppernet"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs new file mode 100644 index 00000000..04cd46f3 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkSupernetTests.cs @@ -0,0 +1,206 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkSupernetTests +{ + /// + /// Tests Supernet functionality with Supernet Internal1. + /// + [TestMethod] + public void TestSupernetInternal1() + { + IPNetwork2 result; + IPNetwork2.InternalSupernet(true, null, null, out result); + + Assert.AreEqual(null, result, "supernet"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestSupernetInternal2() + { + IPNetwork2 result; + IPNetwork2.InternalSupernet(false, null, null, out result); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void Issue33__TestSupernet__Bug_or_default_behavior() + { + var network1 = IPNetwork2.Parse("192.168.0.0/24"); + var network2 = IPNetwork2.Parse("192.168.2.0/24"); + var expected = IPNetwork2.Parse("192.168.0.0/23"); + IPNetwork2 supernet = network1.Supernet(network2); + + Assert.AreEqual(expected, supernet, "supernet"); + } + + /// + /// Tests Supernet functionality. + /// + [TestMethod] + public void Issue33__TestWideSubnet__Bug_or_default_behavior() + { + var network1 = IPNetwork2.Parse("192.168.0.0/24"); + var network2 = IPNetwork2.Parse("192.168.2.0/24"); + var expected = IPNetwork2.Parse("192.168.0.0/22"); + var widenetwork = IPNetwork2.WideSubnet(new[] { network1, network2 }); + + Assert.AreEqual(expected, widenetwork, "widesubnet"); + } + + /// + /// Tests Supernet functionality. + /// + [TestMethod] + public void Issue162__Test_IPrangeToCIDRnotation() + { + string network1 = "172.64.0.0"; + string network2 = "172.71.255.255"; + + var final = IPNetwork2.WideSubnet(network1, network2); + string result = final.ToString(); + + string expected = "172.64.0.0/13"; + Assert.AreEqual(expected, result, "Supernet"); + } + + /// + /// Tests Supernet functionality with Supernet1. + /// + [TestMethod] + public void TestSupernet1() + { + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.1.1/24"); + var expected = IPNetwork2.Parse("192.168.0.0/23"); + IPNetwork2 supernet = network1.Supernet(network2); + + Assert.AreEqual(expected, supernet, "supernet"); + } + + [TestMethod] + [ExpectedException(typeof(NullReferenceException))] + public void TestSupernet2() + { + IPNetwork2 network1 = null; + var network2 = IPNetwork2.Parse("192.168.1.1/24"); + IPNetwork2 supernet = network1.Supernet(network2); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestSupernet3() + { + var network1 = IPNetwork2.Parse("192.168.1.1/24"); + IPNetwork2 network2 = null; + IPNetwork2 supernet = network1.Supernet(network2); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestSupernet4() + { + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.1.1/25"); + IPNetwork2 supernet = network1.Supernet(network2); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void TestSupernet5() + { + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.5.1/24"); + IPNetwork2 supernet = network1.Supernet(network2); + } + + /// + /// Tests Supernet functionality with Supernet6. + /// + [TestMethod] + public void TestSupernet6() + { + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.0.1/25"); + var expected = IPNetwork2.Parse("192.168.0.0/24"); + IPNetwork2 supernet = network1.Supernet(network2); + + Assert.AreEqual(expected, supernet, "supernet"); + } + + /// + /// Tests Supernet functionality with Supernet7. + /// + [TestMethod] + public void TestSupernet7() + { + var network1 = IPNetwork2.Parse("192.168.0.1/25"); + var network2 = IPNetwork2.Parse("192.168.0.1/24"); + var expected = IPNetwork2.Parse("192.168.0.0/24"); + IPNetwork2 supernet = network1.Supernet(network2); + + Assert.AreEqual(expected, supernet, "supernet"); + } + + /// + /// Tests Supernet functionality with Supernet Static1. + /// + [TestMethod] + public void TestSupernetStatic1() + { + var network1 = IPNetwork2.Parse("192.168.0.1/25"); + var network2 = IPNetwork2.Parse("192.168.0.1/24"); + var expected = IPNetwork2.Parse("192.168.0.0/24"); +#pragma warning disable CS0618 // Type or member is obsolete + var supernet = IPNetwork2.Supernet(network1, network2); +#pragma warning restore CS0618 // Type or member is obsolete + + Assert.AreEqual(expected, supernet, "supernet"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestSupernet8() + { + var network1 = IPNetwork2.Parse("192.168.1.1/24"); + var network2 = IPNetwork2.Parse("192.168.2.1/24"); + IPNetwork2 supernet = network1.Supernet(network2); + } + + /// + /// Tests Supernet functionality with Supernet9. + /// + [TestMethod] + public void TestSupernet9() + { + var ipnetwork1 = IPNetwork2.Parse("200.16.0.0/24"); + var ipnetwork2 = IPNetwork2.Parse("200.16.1.0/24"); + var ipnetwork3 = IPNetwork2.Parse("200.16.2.0/24"); + var ipnetwork4 = IPNetwork2.Parse("200.16.3.0/24"); + + IPNetwork2 result = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2, ipnetwork3, ipnetwork4 })[0]; + var expected = IPNetwork2.Parse("200.16.0.0/22"); + + Assert.AreEqual(expected, result, "supernet"); + } + + /// + /// Tests Supernet functionality with Supernet10. + /// + [TestMethod] + public void TestSupernet10() + { + var ipnetwork1 = IPNetwork2.Parse("1.1.0.0/24"); + var ipnetwork2 = IPNetwork2.Parse("1.2.1.0/24"); + + IPNetwork2 result = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2 })[0]; + var expected = IPNetwork2.Parse("1.1.0.0/24"); + + Assert.AreEqual(expected, result, "supernet"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkToBigIntegerTests.cs b/src/TestProject/IPNetworkTest/IPNetworkToBigIntegerTests.cs new file mode 100644 index 00000000..838fcda1 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkToBigIntegerTests.cs @@ -0,0 +1,178 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkToBigIntegerTests +{ + /// + /// Tests To Big Integer functionality with To Big Integer32. + /// + [TestMethod] + public void TestToBigInteger32() + { + var mask = IPAddress.Parse("255.255.255.255"); + uint uintMask = 0xffffffff; + var result = IPNetwork2.ToBigInteger(mask); + + Assert.AreEqual(uintMask, result, "uint"); + } + + /// + /// Tests To Big Integer functionality with To Big Integer24. + /// + [TestMethod] + public void TestToBigInteger24() + { + var mask = IPAddress.Parse("255.255.255.0"); + uint uintMask = 0xffffff00; + BigInteger? result = IPNetwork2.ToBigInteger(mask); + + Assert.AreEqual(uintMask, result, "uint"); + } + + /// + /// Tests To Big Integer functionality with To Big Integer16. + /// + [TestMethod] + public void TestToBigInteger16() + { + var mask = IPAddress.Parse("255.255.0.0"); + uint uintMask = 0xffff0000; + BigInteger? result = IPNetwork2.ToBigInteger(mask); + + Assert.AreEqual(uintMask, result, "uint"); + } + + /// + /// Tests To Big Integer functionality with To Big Integer8. + /// + [TestMethod] + public void TestToBigInteger8() + { + var mask = IPAddress.Parse("255.0.0.0"); + uint uintMask = 0xff000000; + BigInteger? result = IPNetwork2.ToBigInteger(mask); + + Assert.AreEqual(uintMask, result, "uint"); + } + + /// + /// Tests To Big Integer functionality with To Big Integer0. + /// + [TestMethod] + public void TestToBigInteger0() + { + var mask = IPAddress.Parse("0.0.0.0"); + uint uintMask = 0x00000000; + BigInteger? result = IPNetwork2.ToBigInteger(mask); + + Assert.AreEqual(uintMask, result, "uint"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestToBigIntegerAne() + { + BigInteger? result = IPNetwork2.ToBigInteger(null); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestToBigIntegerAne3() + { + IPAddress ip = null; + BigInteger? result = IPNetwork2.ToBigInteger(ip); + } + + /// + /// Tests To Big Integer functionality with To Big Integer ANE2. + /// + [TestMethod] + public void TestToBigIntegerAne2() + { + BigInteger? result = IPNetwork2.ToBigInteger(IPAddress.IPv6Any); + uint expected = 0; + Assert.AreEqual(expected, result, "result"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void TestToBigIntegerByte() + { + BigInteger result = IPNetwork2.ToUint(33, AddressFamily.InterNetwork); + } + + /// + /// Tests To Big Integer functionality with To Big Integer Byte2. + /// + [TestMethod] + public void TestToBigIntegerByte2() + { + BigInteger result = IPNetwork2.ToUint(32, AddressFamily.InterNetwork); + uint expected = 4294967295; + Assert.AreEqual(expected, result, "result"); + } + + /// + /// Tests To Big Integer functionality with To Big Integer Byte3. + /// + [TestMethod] + public void TestToBigIntegerByte3() + { + BigInteger result = IPNetwork2.ToUint(0, AddressFamily.InterNetwork); + uint expected = 0; + Assert.AreEqual(expected, result, "result"); + } + + /// + /// Tests To Big Integer functionality with To Big Integer Internal1. + /// + [TestMethod] + public void TestToBigIntegerInternal1() + { + BigInteger? result = null; + IPNetwork2.InternalToBigInteger(true, 33, AddressFamily.InterNetwork, out result); + Assert.AreEqual(null, result, "result"); + } + + /// + /// Tests To Big Integer functionality with To Big Integer Internal2. + /// + [TestMethod] + public void TestToBigIntegerInternal2() + { + BigInteger? result = null; + IPNetwork2.InternalToBigInteger(true, 129, AddressFamily.InterNetworkV6, out result); + Assert.AreEqual(null, result, "result"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void TestToBigIntegerInternal3() + { + BigInteger? result = null; + IPNetwork2.InternalToBigInteger(false, 129, AddressFamily.InterNetworkV6, out result); + } + + [TestMethod] + [ExpectedException(typeof(NotSupportedException))] + public void TestToBigIntegerInternal4() + { + BigInteger? result = null; + IPNetwork2.InternalToBigInteger(false, 32, AddressFamily.AppleTalk, out result); + } + + /// + /// Tests To Big Integer functionality with To Big Integer Internal5. + /// + [TestMethod] + public void TestToBigIntegerInternal5() + { + BigInteger? result = null; + IPNetwork2.InternalToBigInteger(true, 32, AddressFamily.AppleTalk, out result); + Assert.AreEqual(null, result, "result"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkToCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkToCidrTests.cs new file mode 100644 index 00000000..38ecd0c0 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkToCidrTests.cs @@ -0,0 +1,98 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkToCidrTests +{ + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestToCidrAne() + { + IPNetwork2.ToCidr(null); + } + + /// + /// Tests To Cidr functionality with To Cidr AE. + /// + [TestMethod] + public void TestToCidrAe() + { + byte cidr = IPNetwork2.ToCidr(IPAddress.IPv6Any); + Assert.AreEqual(0, cidr, "cidr"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestToCidrAe2() + { + IPNetwork2.ToCidr(IPAddress.Parse("6.6.6.6")); + } + + /// + /// Tests To Cidr functionality with To Cidr32. + /// + [TestMethod] + public void TestToCidr32() + { + var mask = IPAddress.Parse("255.255.255.255"); + byte cidr = 32; + int result = IPNetwork2.ToCidr(mask); + + Assert.AreEqual(cidr, result, "cidr"); + } + + /// + /// Tests To Cidr functionality with To Cidr24. + /// + [TestMethod] + public void TestToCidr24() + { + var mask = IPAddress.Parse("255.255.255.0"); + byte cidr = 24; + int result = IPNetwork2.ToCidr(mask); + + Assert.AreEqual(cidr, result, "cidr"); + } + + /// + /// Tests To Cidr functionality with To Cidr16. + /// + [TestMethod] + public void TestToCidr16() + { + var mask = IPAddress.Parse("255.255.0.0"); + byte cidr = 16; + int result = IPNetwork2.ToCidr(mask); + + Assert.AreEqual(cidr, result, "cidr"); + } + + /// + /// Tests To Cidr functionality with To Cidr8. + /// + [TestMethod] + public void TestToCidr8() + { + var mask = IPAddress.Parse("255.0.0.0"); + byte cidr = 8; + int result = IPNetwork2.ToCidr(mask); + + Assert.AreEqual(cidr, result, "cidr"); + } + + /// + /// Tests To Cidr functionality with To Cidr0. + /// + [TestMethod] + public void TestToCidr0() + { + var mask = IPAddress.Parse("0.0.0.0"); + byte cidr = 0; + int result = IPNetwork2.ToCidr(mask); + + Assert.AreEqual(cidr, result, "cidr"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkToIPAddressTests.cs b/src/TestProject/IPNetworkTest/IPNetworkToIPAddressTests.cs new file mode 100644 index 00000000..dab4d83a --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkToIPAddressTests.cs @@ -0,0 +1,47 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkToIPAddressTests +{ + /// + /// Tests To IPAddress functionality with To IPAddress. + /// + [TestMethod] + public void TestToIPAddress() + { + var ip = new BigInteger(0); + var result = IPNetwork2.ToIPAddress(ip, AddressFamily.InterNetwork); + Assert.AreEqual(IPAddress.Any, result, "ToIPAddress"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestToIPAddress2() + { + var ip = new BigInteger(0); + var result = IPNetwork2.ToIPAddress(ip, AddressFamily.AppleTalk); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestToIPAddress3() + { + var ip = new BigInteger(new byte[] + { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + }); + var result = IPNetwork2.ToIPAddress(ip, AddressFamily.AppleTalk); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkToNetmaskTests.cs b/src/TestProject/IPNetworkTest/IPNetworkToNetmaskTests.cs new file mode 100644 index 00000000..26a797e6 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkToNetmaskTests.cs @@ -0,0 +1,123 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkToNetmaskTests +{ + /// + /// Tests To Netmask functionality with a /32 network. + /// + [TestMethod] + public void ToNetmask32() + { + byte cidr = 32; + string netmask = "255.255.255.255"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + + Assert.AreEqual(netmask, result, "netmask"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void ToNetmaskNonInet() + { + byte cidr = 0; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.AppleTalk).ToString(); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void ToNetmaskNegative() + { + byte cidr = 0; + cidr--; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + } + + /// + /// Tests To Netmask functionality with a /1 network. + /// + [TestMethod] + public void ToNetmaskInternal1() + { + IPAddress result; + IPNetwork2.InternalToNetmask(true, 0, AddressFamily.AppleTalk, out result); + Assert.AreEqual(null, result); + } + + /// + /// Tests To Netmask functionality with a /31 network. + /// + [TestMethod] + public void ToNetmask31() + { + byte cidr = 31; + string netmask = "255.255.255.254"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + + Assert.AreEqual(netmask, result, "netmask"); + } + + /// + /// Tests To Netmask functionality with a /30 network. + /// + [TestMethod] + public void ToNetmask30() + { + byte cidr = 30; + string netmask = "255.255.255.252"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + + Assert.AreEqual(netmask, result, "netmask"); + } + + /// + /// Tests To Netmask functionality with a /29 network. + /// + [TestMethod] + public void ToNetmask29() + { + byte cidr = 29; + string netmask = "255.255.255.248"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + + Assert.AreEqual(netmask, result, "netmask"); + } + + /// + /// Tests To Netmask functionality with a /1 network. + /// + [TestMethod] + public void ToNetmask1() + { + byte cidr = 1; + string netmask = "128.0.0.0"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + + Assert.AreEqual(netmask, result, "netmask"); + } + + /// + /// Tests To Netmask functionality with a /0 network. + /// + [TestMethod] + public void ToNetmask0() + { + byte cidr = 0; + string netmask = "0.0.0.0"; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + + Assert.AreEqual(netmask, result, "netmask"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void ToNetmaskOore1() + { + byte cidr = 33; + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetwork).ToString(); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkToStringTests.cs b/src/TestProject/IPNetworkTest/IPNetworkToStringTests.cs new file mode 100644 index 00000000..0298360d --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkToStringTests.cs @@ -0,0 +1,126 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkToStringTests +{ + /// + /// Tests To String functionality with To String. + /// + [TestMethod] + public void TestToString() + { + var ipnetwork = IPNetwork2.Parse("192.168.15.1/8"); + string expected = "192.0.0.0/8"; + string result = ipnetwork.ToString(); + + Assert.AreEqual(expected, result, "ToString"); + } + + /// + /// Tests To String functionality with To String1. + /// + [TestMethod] + public void TestToString1() + { + var ipnetwork = IPNetwork2.Parse("192.168.15.1/9"); + string expected = "192.128.0.0/9"; + string result = ipnetwork.ToString(); + + Assert.AreEqual(expected, result, "ToString"); + } + + /// + /// Tests To String functionality with To String2. + /// + [TestMethod] + public void TestToString2() + { + var ipnetwork = IPNetwork2.Parse("192.168.15.1/10"); + string expected = "192.128.0.0/10"; + string result = ipnetwork.ToString(); + + Assert.AreEqual(expected, result, "ToString"); + } + + /// + /// Tests To String functionality with To String3. + /// + [TestMethod] + public void TestToString3() + { + var ipnetwork = IPNetwork2.Parse("192.168.15.1/11"); + string expected = "192.160.0.0/11"; + string result = ipnetwork.ToString(); + + Assert.AreEqual(expected, result, "ToString"); + } + + /// + /// Tests To String functionality with To String4. + /// + [TestMethod] + public void TestToString4() + { + var ipnetwork = IPNetwork2.Parse("192.168.15.1/12"); + string expected = "192.160.0.0/12"; + string result = ipnetwork.ToString(); + + Assert.AreEqual(expected, result, "ToString"); + } + + /// + /// Tests To String functionality with To String5. + /// + [TestMethod] + public void TestToString5() + { + var ipnetwork = IPNetwork2.Parse("192.168.15.1/13"); + string expected = "192.168.0.0/13"; + string result = ipnetwork.ToString(); + + Assert.AreEqual(expected, result, "ToString"); + } + + /// + /// Tests To String functionality with To String6. + /// + [TestMethod] + public void TestToString6() + { + var ipnetwork = IPNetwork2.Parse("192.168.15.1/14"); + string expected = "192.168.0.0/14"; + string result = ipnetwork.ToString(); + + Assert.AreEqual(expected, result, "ToString"); + } + + /// + /// Tests To String functionality with To String7. + /// + [TestMethod] + public void TestToString7() + { + var ipnetwork = IPNetwork2.Parse("192.168.15.1/15"); + string expected = "192.168.0.0/15"; + string result = ipnetwork.ToString(); + + Assert.AreEqual(expected, result, "ToString"); + } + + /// + /// Tests To String functionality with To String8. + /// + [TestMethod] + public void TestToString8() + { + var ipnetwork = IPNetwork2.Parse("192.168.15.1/16"); + string expected = "192.168.0.0/16"; + string result = ipnetwork.ToString(); + + Assert.AreEqual(expected, result, "ToString"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs new file mode 100644 index 00000000..92885841 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkTryGuessCidrTests.cs @@ -0,0 +1,87 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkTryGuessCidrTests +{ + /// + /// Tests Try Guess Cidr functionality with Try Guess Cidr Null. + /// + [TestMethod] + public void TestTryGuessCidrNull() + { + byte cidr; + bool parsed = IPNetwork2.TryGuessCidr(null, out cidr); + + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(0, cidr, "cidr"); + } + + /// + /// Tests Try Guess Cidr functionality with Try Guess Cidr A. + /// + [TestMethod] + public void TestTryGuessCidrA() + { + byte cidr; + bool parsed = IPNetwork2.TryGuessCidr("10.0.0.0", out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(8, cidr, "cidr"); + } + + /// + /// Tests Try Guess Cidr functionality with Try Guess Cidr B. + /// + [TestMethod] + public void TestTryGuessCidrB() + { + byte cidr; + bool parsed = IPNetwork2.TryGuessCidr("172.0.0.0", out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(16, cidr, "cidr"); + } + + /// + /// Tests Try Guess Cidr functionality with Try Guess Cidr C. + /// + [TestMethod] + public void TestTryGuessCidrC() + { + byte cidr; + bool parsed = IPNetwork2.TryGuessCidr("192.0.0.0", out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(24, cidr, "cidr"); + } + + /// + /// Tests Try Guess Cidr functionality with Try Guess Cidr D. + /// + [TestMethod] + public void TestTryGuessCidrD() + { + byte cidr; + bool parsed = IPNetwork2.TryGuessCidr("224.0.0.0", out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(24, cidr, "cidr"); + } + + /// + /// Tests Try Guess Cidr functionality with Try Guess Cidr E. + /// + [TestMethod] + public void TestTryGuessCidrE() + { + byte cidr; + bool parsed = IPNetwork2.TryGuessCidr("240.0.0.0", out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(24, cidr, "cidr"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs new file mode 100644 index 00000000..bbac6c70 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkTryParseCidrTests.cs @@ -0,0 +1,56 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkTryParseCidrTests +{ + /// + /// Tests Try Parse Cidr functionality with a /1 network. + /// + [TestMethod] + public void TryParseCidr1() + { + string sidr = "0"; + byte? cidr; + byte? result = 0; + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } + + /// + /// Tests Try Parse Cidr functionality with a /2 network. + /// + [TestMethod] + public void TryParseCidr2() + { + string sidr = "sadsd"; + byte? cidr; + byte? result = null; + + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out cidr); + + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } + + /// + /// Tests Try Parse Cidr functionality with a /3 network. + /// + [TestMethod] + public void TryParseCidr3() + { + string sidr = "33"; + byte? cidr; + byte? result = null; + + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetwork, out cidr); + + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(result, cidr, "cidr"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs new file mode 100644 index 00000000..690c7d9e --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkTryParseTests.cs @@ -0,0 +1,344 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkTryParseTests +{ + /// + /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE2. + /// + [TestMethod] + public void TestTryParseIPAddressNetmaskAne2() + { + IPNetwork2 ipnet = null; + IPAddress ip = null; + bool parsed = IPNetwork2.TryParse(ip, ip, out ipnet); + + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } + + /// + /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE3. + /// + [TestMethod] + public void TestTryParseIPAddressNetmaskAne3() + { + IPNetwork2 ipnet = null; + bool parsed = IPNetwork2.TryParse(string.Empty, 0, out ipnet); + + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } + + /// + /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE4. + /// + [TestMethod] + public void TestTryParseIPAddressNetmaskAne4() + { + IPNetwork2 ipnet = null; + bool parsed = IPNetwork2.TryParse(null, 0, out ipnet); + + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } + + /// + /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE5. + /// + [TestMethod] + public void TestTryParseIPAddressNetmaskAne5() + { + string n = null; + IPNetwork2 ipnet = null; + bool parsed = IPNetwork2.TryParse(n, n, out ipnet); + + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } + + /// + /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE6. + /// + [TestMethod] + public void TestTryParseIPAddressNetmaskAne6() + { + IPNetwork2 ipnet = null; + bool parsed = IPNetwork2.TryParse(IPAddress.Parse("10.10.10.10"), null, out ipnet); + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } + + /// + /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE7. + /// + [TestMethod] + public void TestTryParseIPAddressNetmaskAne7() + { + IPNetwork2 ipnet = null; + bool parsed = IPNetwork2.TryParse("0.0.0.0", null, out ipnet); + + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } + + /// + /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE8. + /// + [TestMethod] + public void TestTryParseIPAddressNetmaskAne8() + { + IPNetwork2 ipnet = null; + bool parsed = IPNetwork2.TryParse("x.x.x.x", "x.x.x.x", out ipnet); + + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } + + /// + /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE9. + /// + [TestMethod] + public void TestTryParseIPAddressNetmaskAne9() + { + IPNetwork2 ipnet = null; + bool parsed = IPNetwork2.TryParse("0.0.0.0", "x.x.x.x", out ipnet); + + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } + + /// + /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE10. + /// + [TestMethod] + public void TestTryParseIPAddressNetmaskAne10() + { + IPNetwork2 ipnet = null; + bool parsed = IPNetwork2.TryParse("x.x.x.x", 0, out ipnet); + + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } + + /// + /// Tests Try Parse functionality with Try Parse IPAddress Netmask ANE11. + /// + [TestMethod] + public void TestTryParseIPAddressNetmaskAne11() + { + IPNetwork2 ipnet = null; + bool parsed = IPNetwork2.TryParse("0.0.0.0", 33, out ipnet); + + Assert.AreEqual(false, parsed, "parsed"); + Assert.AreEqual(null, ipnet, "ipnet"); + } + + /// + /// Tests Try Parse functionality with Try Parse IPAddress Netmask. + /// + [TestMethod] + public void TestTryParseIPAddressNetmask() + { + IPNetwork2 ipnetwork = null; + string ipaddress = "192.168.168.100"; + string netmask = "255.255.255.0"; + + string network = "192.168.168.0"; + string broadcast = "192.168.168.255"; + string firstUsable = "192.168.168.1"; + string lastUsable = "192.168.168.254"; + byte cidr = 24; + uint usable = 254; + + bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + /// + /// Tests Try Parse functionality with Try Parse String1. + /// + [TestMethod] + public void TestTryParseString1() + { + IPNetwork2 ipnetwork = null; + string ipaddress = "192.168.168.100 255.255.255.0"; + + string network = "192.168.168.0"; + string netmask = "255.255.255.0"; + string broadcast = "192.168.168.255"; + string firstUsable = "192.168.168.1"; + string lastUsable = "192.168.168.254"; + byte cidr = 24; + uint usable = 254; + + bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + /// + /// Tests Try Parse functionality with Try Parse String2. + /// + [TestMethod] + public void TestTryParseString2() + { + IPNetwork2 ipnetwork = null; + string ipaddress = "192.168.168.100/24"; + + string network = "192.168.168.0"; + string netmask = "255.255.255.0"; + string broadcast = "192.168.168.255"; + string firstUsable = "192.168.168.1"; + string lastUsable = "192.168.168.254"; + byte cidr = 24; + uint usable = 254; + + bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + /// + /// Tests Try Parse functionality with Try Parse String3. + /// + [TestMethod] + public void TestTryParseString3() + { + IPNetwork2 ipnetwork = null; + string ipaddress = "0.0.0.0/0"; + + string network = "0.0.0.0"; + string netmask = "0.0.0.0"; + string broadcast = "255.255.255.255"; + string firstUsable = "0.0.0.1"; + string lastUsable = "255.255.255.254"; + byte cidr = 0; + uint usable = 4294967294; + + bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + /// + /// Tests Try Parse functionality with Try Parse String4. + /// + [TestMethod] + public void TestTryParseString4() + { + IPNetwork2 ipnetwork = null; + string ipaddress = "0.0.0.0/32"; + + string network = "0.0.0.0"; + string netmask = "255.255.255.255"; + string broadcast = "0.0.0.0"; + string firstUsable = "0.0.0.0"; + string lastUsable = "0.0.0.0"; + byte cidr = 32; + uint usable = 0; + + bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + /// + /// Tests Try Parse functionality with Try Parse String5. + /// + [TestMethod] + public void TestTryParseString5() + { + IPNetwork2 ipnetwork = null; + string ipaddress = "255.255.255.255/32"; + + string network = "255.255.255.255"; + string netmask = "255.255.255.255"; + string broadcast = "255.255.255.255"; + string firstUsable = "255.255.255.255"; + string lastUsable = "255.255.255.255"; + byte cidr = 32; + uint usable = 0; + + bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); + Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); + Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); + Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); + Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); + Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); + Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); + } + + /// + /// Tests Try Parse functionality with Try Parse String AE1. + /// + [TestMethod] + public void TestTryParseStringAe1() + { + string ipaddress = "garbage"; + IPNetwork2 ipnetwork = null; + bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); + Assert.AreEqual(false, parsed, "parsed"); + } + + /// + /// Tests Try Parse functionality with Try Parse String AE2. + /// + [TestMethod] + public void TestTryParseStringAe2() + { + string ipaddress = "0.0.0.0 0.0.1.0"; + IPNetwork2 ipnetwork = null; + bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); + Assert.AreEqual(false, parsed, "parsed"); + } + + /// + /// Tests Try Parse functionality with Try Parse String ANE1. + /// + [TestMethod] + public void TestTryParseStringAne1() + { + string ipaddress = null; + IPNetwork2 ipnetwork = null; + bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); + Assert.AreEqual(false, parsed, "parsed"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs new file mode 100644 index 00000000..54fb3414 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkTrySubnetTests.cs @@ -0,0 +1,136 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkTrySubnetTests +{ + /// + /// Tests Try Subnet functionality with Internal Subnet1. + /// + [TestMethod] + public void TestInternalSubnet1() + { + IPNetworkCollection subnets = null; + IPNetwork2.InternalSubnet(true, null, 0, out subnets); + Assert.AreEqual(null, subnets, "subnets"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestInternalSubnet2() + { + IPNetworkCollection subnets = null; + IPNetwork2.InternalSubnet(false, null, 0, out subnets); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestTrySubnet1() + { + IPNetwork2 ipnetwork = null; + byte cidr = 9; + + IPNetworkCollection subnets = null; +#pragma warning disable 0618 + bool subnetted = IPNetwork2.TrySubnet(ipnetwork, cidr, out subnets); +#pragma warning restore 0618 + } + + /// + /// Tests Try Subnet functionality with Try Subnet Static1. + /// + [TestMethod] + public void TestTrySubnetStatic1() + { + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; + byte cidr = 9; + + IPNetworkCollection subnets = null; +#pragma warning disable 0618 + bool subnetted = IPNetwork2.TrySubnet(ipnetwork, cidr, out subnets); +#pragma warning restore 0618 + } + + /// + /// Tests Try Subnet functionality with Try Subnet3. + /// + [TestMethod] + public void TestTrySubnet3() + { + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; + byte cidr = 55; + + IPNetworkCollection subnets = null; + bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + + Assert.AreEqual(false, subnetted, "subnetted"); + } + + /// + /// Tests Try Subnet functionality with Try Subnet4. + /// + [TestMethod] + public void TestTrySubnet4() + { + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; + byte cidr = 1; + + IPNetworkCollection subnets = null; + bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + + Assert.AreEqual(false, subnetted, "subnetted"); + } + + /// + /// Tests Try Subnet functionality with Try Subnet5. + /// + [TestMethod] + public void TestTrySubnet5() + { + IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; + byte cidr = 9; + + IPNetworkCollection subnets = null; + bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + + Assert.AreEqual(true, subnetted, "subnetted"); + Assert.AreEqual(2, subnets.Count, "count"); + Assert.AreEqual("10.0.0.0/9", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("10.128.0.0/9", subnets[1].ToString(), "subnet2"); + } + + /// + /// Tests Try Subnet functionality with Try Subnet6. + /// + [TestMethod] + public void TestTrySubnet6() + { + IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; + byte cidr = 20; + + IPNetworkCollection subnets = null; + bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); + + Assert.AreEqual(true, subnetted, "subnetted"); + Assert.AreEqual(16, subnets.Count, "count"); + Assert.AreEqual("192.168.0.0/20", subnets[0].ToString(), "subnet1"); + Assert.AreEqual("192.168.16.0/20", subnets[1].ToString(), "subnet2"); + Assert.AreEqual("192.168.32.0/20", subnets[2].ToString(), "subnet3"); + Assert.AreEqual("192.168.48.0/20", subnets[3].ToString(), "subnet4"); + Assert.AreEqual("192.168.64.0/20", subnets[4].ToString(), "subnet5"); + Assert.AreEqual("192.168.80.0/20", subnets[5].ToString(), "subnet6"); + Assert.AreEqual("192.168.96.0/20", subnets[6].ToString(), "subnet7"); + Assert.AreEqual("192.168.112.0/20", subnets[7].ToString(), "subnet8"); + Assert.AreEqual("192.168.128.0/20", subnets[8].ToString(), "subnet9"); + Assert.AreEqual("192.168.144.0/20", subnets[9].ToString(), "subnet10"); + Assert.AreEqual("192.168.160.0/20", subnets[10].ToString(), "subnet11"); + Assert.AreEqual("192.168.176.0/20", subnets[11].ToString(), "subnet12"); + Assert.AreEqual("192.168.192.0/20", subnets[12].ToString(), "subnet13"); + Assert.AreEqual("192.168.208.0/20", subnets[13].ToString(), "subnet14"); + Assert.AreEqual("192.168.224.0/20", subnets[14].ToString(), "subnet15"); + Assert.AreEqual("192.168.240.0/20", subnets[15].ToString(), "subnet16"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTrySupernetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTrySupernetTests.cs new file mode 100644 index 00000000..0ff0df83 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkTrySupernetTests.cs @@ -0,0 +1,209 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkTrySupernetTests +{ + /// + /// Tests Try Supernet functionality with Try Supernet1. + /// + [TestMethod] + public void TestTrySupernet1() + { + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.1.1/24"); + var supernetExpected = IPNetwork2.Parse("192.168.0.0/23"); + IPNetwork2 supernet; + bool parsed = true; + bool result = network1.TrySupernet(network2, out supernet); + + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestTrySupernet2() + { + IPNetwork2 network1 = null; + var network2 = IPNetwork2.Parse("192.168.1.1/24"); + IPNetwork2 supernet; + +#pragma warning disable 0618 + bool result = IPNetwork2.TrySupernet(network1, network2, out supernet); +#pragma warning restore 0618 + } + + /// + /// Tests Try Supernet functionality with Try Supernet Static2. + /// + [TestMethod] + public void TestTrySupernetStatic2() + { + IPNetwork2 network1 = IPNetwork2.IANA_ABLK_RESERVED1; + var network2 = IPNetwork2.Parse("192.168.1.1/24"); + IPNetwork2 supernet; + +#pragma warning disable 0618 + bool result = IPNetwork2.TrySupernet(network1, network2, out supernet); +#pragma warning restore 0618 + } + + /// + /// Tests Try Supernet functionality with Try Supernet3. + /// + [TestMethod] + public void TestTrySupernet3() + { + var network1 = IPNetwork2.Parse("192.168.1.1/24"); + IPNetwork2 network2 = null; + IPNetwork2 supernetExpected = null; + IPNetwork2 supernet; + bool parsed = false; + bool result = network1.TrySupernet(network2, out supernet); + + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } + + /// + /// Tests Try Supernet functionality with Try Supernet4. + /// + [TestMethod] + public void TestTrySupernet4() + { + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.1.1/25"); + IPNetwork2 supernetExpected = null; + IPNetwork2 supernet; + bool parsed = false; + bool result = network1.TrySupernet(network2, out supernet); + + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } + + /// + /// Tests Try Supernet functionality with Try Supernet5. + /// + [TestMethod] + public void TestTrySupernet5() + { + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.5.1/24"); + IPNetwork2 supernetExpected = null; + IPNetwork2 supernet; + bool parsed = false; + bool result = network1.TrySupernet(network2, out supernet); + + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } + + /// + /// Tests Try Supernet functionality with Try Supernet6. + /// + [TestMethod] + public void TestTrySupernet6() + { + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.0.1/25"); + var supernetExpected = IPNetwork2.Parse("192.168.0.0/24"); + IPNetwork2 supernet; + bool parsed = true; + bool result = network1.TrySupernet(network2, out supernet); + + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } + + /// + /// Tests Try Supernet functionality with Try Supernet7. + /// + [TestMethod] + public void TestTrySupernet7() + { + var network1 = IPNetwork2.Parse("192.168.0.1/25"); + var network2 = IPNetwork2.Parse("192.168.0.1/24"); + var supernetExpected = IPNetwork2.Parse("192.168.0.0/24"); + IPNetwork2 supernet; + bool parsed = true; + bool result = network1.TrySupernet(network2, out supernet); + + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } + + /// + /// Tests Try Supernet functionality with Try Supernet8. + /// + [TestMethod] + public void TestTrySupernet8() + { + var network1 = IPNetwork2.Parse("192.168.1.1/24"); + var network2 = IPNetwork2.Parse("192.168.2.1/24"); + IPNetwork2 supernetExpected = null; + IPNetwork2 supernet; + bool parsed = false; + bool result = network1.TrySupernet(network2, out supernet); + + Assert.AreEqual(supernetExpected, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } + + /// + /// Tests Try Supernet functionality with Try Supernet9. + /// + [TestMethod] + public void TestTrySupernet9() + { + var network1 = IPNetwork2.Parse("192.168.1.1/24"); + var network2 = IPNetwork2.Parse("192.168.2.1/24"); + IPNetwork2[] network3 = { network1, network2 }; + IPNetwork2[] supernetExpected = { network1, network2 }; + IPNetwork2[] supernet; + bool parsed = true; + bool result = IPNetwork2.TrySupernet(network3, out supernet); + + Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); + Assert.AreEqual(supernetExpected[1], supernet[1], "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } + + /// + /// Tests Try Supernet functionality with Try Supernet10. + /// + [TestMethod] + public void TestTrySupernet10() + { + var network1 = IPNetwork2.Parse("192.168.0.1/24"); + var network2 = IPNetwork2.Parse("192.168.1.1/24"); + IPNetwork2[] network3 = { network1, network2 }; + IPNetwork2[] supernetExpected = { IPNetwork2.Parse("192.168.0.0/23") }; + IPNetwork2[] supernet; + bool parsed = true; + bool result = IPNetwork2.TrySupernet(network3, out supernet); + + Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } + + /// + /// Tests Try Supernet functionality with Try Supernet11. + /// + [TestMethod] + public void TestTrySupernet11() + { + IPNetwork2[] network3 = null; + IPNetwork2[] supernetExpected = { IPNetwork2.Parse("192.168.0.0/23") }; + IPNetwork2[] supernet; + bool parsed = false; + bool result = IPNetwork2.TrySupernet(network3, out supernet); + + Assert.AreEqual(null, supernet, "supernet"); + Assert.AreEqual(parsed, result, "parsed"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs new file mode 100644 index 00000000..30587339 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToBigIntegerTests.cs @@ -0,0 +1,125 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkTryToBigIntegerTests +{ + /// + /// Tests Try To Big Integer functionality with Try To Big Integer32. + /// + [TestMethod] + public void TestTryToBigInteger32() + { + var mask = IPAddress.Parse("255.255.255.255"); + uint uintMask = 0xffffffff; + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } + + /// + /// Tests Try To Big Integer functionality with Try To Big Integer24. + /// + [TestMethod] + public void TestTryToBigInteger24() + { + var mask = IPAddress.Parse("255.255.255.0"); + uint uintMask = 0xffffff00; + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } + + /// + /// Tests Try To Big Integer functionality with Try To Big Integer16. + /// + [TestMethod] + public void TestTryToBigInteger16() + { + var mask = IPAddress.Parse("255.255.0.0"); + uint uintMask = 0xffff0000; + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } + + /// + /// Tests Try To Big Integer functionality with Try To Big Integer8. + /// + [TestMethod] + public void TestTryToBigInteger8() + { + var mask = IPAddress.Parse("255.0.0.0"); + uint uintMask = 0xff000000; + + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } + + /// + /// Tests Try To Big Integer functionality with Try To Big Integer0. + /// + [TestMethod] + public void TestTryToBigInteger0() + { + var mask = IPAddress.Parse("0.0.0.0"); + uint uintMask = 0x00000000; + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(mask, out result); + + Assert.AreEqual(uintMask, result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } + + /// + /// Tests Try To Big Integer functionality with Try To Big Integer ANE. + /// + [TestMethod] + public void TestTryToBigIntegerAne() + { + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(null, out result); + + Assert.AreEqual(null, result, "uint"); + Assert.AreEqual(false, parsed, "parsed"); + } + + /// + /// Tests Try To Big Integer functionality with Try To Big Integer ANE3. + /// + [TestMethod] + public void TestTryToBigIntegerAne3() + { + IPAddress ip = null; + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(ip, out result); + + Assert.AreEqual(null, result, "uint"); + Assert.AreEqual(false, parsed, "parsed"); + } + + /// + /// Tests Try To Big Integer functionality with Try To Big Integer ANE2. + /// + [TestMethod] + public void TestTryToBigIntegerAne2() + { + BigInteger? result = null; + bool parsed = IPNetwork2.TryToBigInteger(IPAddress.IPv6Any, out result); + + Assert.AreEqual(0, result, "result"); + Assert.AreEqual(true, parsed, "parsed"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs new file mode 100644 index 00000000..2b51b02e --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToCidrTests.cs @@ -0,0 +1,118 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkTryToCidrTests +{ + /// + /// Tests Try To Cidr functionality with Try To Cidr ANE. + /// + [TestMethod] + public void TestTryToCidrAne() + { + byte? cidr = null; + bool parsed = IPNetwork2.TryToCidr(null, out cidr); + Assert.AreEqual(false, parsed, "parsed"); + } + + /// + /// Tests Try To Cidr functionality with Try To Cidr AE. + /// + [TestMethod] + public void TestTryToCidrAe() + { + byte? cidr = null; + bool parsed = IPNetwork2.TryToCidr(IPAddress.IPv6Any, out cidr); + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual((byte)0, cidr, "cidr"); + } + + /// + /// Tests Try To Cidr functionality with Try To Cidr AE2. + /// + [TestMethod] + public void TestTryToCidrAe2() + { + byte? cidr = null; + bool parsed = IPNetwork2.TryToCidr(IPAddress.Parse("6.6.6.6"), out cidr); + Assert.AreEqual(false, parsed, "parsed"); + } + + /// + /// Tests Try To Cidr functionality with Try To Cidr32. + /// + [TestMethod] + public void TestTryToCidr32() + { + byte? cidr = null; + var mask = IPAddress.Parse("255.255.255.255"); + byte result = 32; + bool parsed = IPNetwork2.TryToCidr(mask, out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } + + /// + /// Tests Try To Cidr functionality with Try To Cidr24. + /// + [TestMethod] + public void TestTryToCidr24() + { + byte? cidr = null; + var mask = IPAddress.Parse("255.255.255.0"); + byte result = 24; + bool parsed = IPNetwork2.TryToCidr(mask, out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } + + /// + /// Tests Try To Cidr functionality with Try To Cidr16. + /// + [TestMethod] + public void TestTryToCidr16() + { + byte? cidr = null; + var mask = IPAddress.Parse("255.255.0.0"); + byte result = 16; + bool parsed = IPNetwork2.TryToCidr(mask, out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } + + /// + /// Tests Try To Cidr functionality with Try To Cidr8. + /// + [TestMethod] + public void TestTryToCidr8() + { + byte? cidr = null; + var mask = IPAddress.Parse("255.0.0.0"); + byte result = 8; + bool parsed = IPNetwork2.TryToCidr(mask, out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } + + /// + /// Tests Try To Cidr functionality with Try To Cidr0. + /// + [TestMethod] + public void TestTryToCidr0() + { + byte? cidr = null; + var mask = IPAddress.Parse("0.0.0.0"); + byte result = 0; + bool parsed = IPNetwork2.TryToCidr(mask, out cidr); + + Assert.AreEqual(true, parsed, "parsed"); + Assert.AreEqual(cidr, result, "cidr"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs new file mode 100644 index 00000000..b5ef7ba8 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToNetmaskTests.cs @@ -0,0 +1,37 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkTryToNetmaskTests +{ + /// + /// Tests Try To Netmask functionality with a /1 network. + /// + [TestMethod] + public void TryToNetmask1() + { + IPAddress result = null; + bool parsed = IPNetwork2.TryToNetmask(0, AddressFamily.InterNetwork, out result); + var expected = IPAddress.Parse("0.0.0.0"); + + Assert.AreEqual(expected, result, "Netmask"); + Assert.AreEqual(true, parsed, "parsed"); + } + + /// + /// Tests Try To Netmask functionality with a /2 network. + /// + [TestMethod] + public void TryToNetmask2() + { + IPAddress result = null; + bool parsed = IPNetwork2.TryToNetmask(33, AddressFamily.InterNetwork, out result); + IPAddress expected = null; + + Assert.AreEqual(expected, result, "Netmask"); + Assert.AreEqual(false, parsed, "parsed"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs new file mode 100644 index 00000000..83503aba --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkTryToUintTests.cs @@ -0,0 +1,22 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkTryToUintTests +{ + /// + /// Tests Try To Uint functionality with Try To Uint1. + /// + [TestMethod] + public void TestTryToUint1() + { + BigInteger? result = null; + bool parsed = IPNetwork2.TryToUint(32, AddressFamily.InterNetwork, out result); + + Assert.IsNotNull(result, "uint"); + Assert.AreEqual(true, parsed, "parsed"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs new file mode 100644 index 00000000..27237fa7 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkTryWideSubnetTests.cs @@ -0,0 +1,111 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkTryWideSubnetTests +{ + /// + /// Tests Try Wide Subnet functionality with a /1 network. + /// + [TestMethod] + public void TryWideSubnet1() + { + string[] ips = { "1.1.1.1", "255.255.255.255", "2.2.2.2", "0.0.0.0" }; + var ipns = new List(); + foreach (string ip in ips) + { + IPNetwork2 ipn; + if (IPNetwork2.TryParse(ip, 32, out ipn)) + { + ipns.Add(ipn); + } + } + + IPNetwork2 ipnetwork = null; + bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out ipnetwork); + Assert.AreEqual(true, wide, "wide"); + Assert.AreEqual("0.0.0.0/0", ipnetwork.ToString(), "ipnetwork"); + } + + /// + /// Tests Try Wide Subnet functionality with a /2 network. + /// + [TestMethod] + public void TryWideSubnet2() + { + string[] ips = { "1.1.1.1", "10.0.0.0", "2.2.2.2", "0.0.0.0" }; + var ipns = new List(); + foreach (string ip in ips) + { + IPNetwork2 ipn; + if (IPNetwork2.TryParse(ip, 32, out ipn)) + { + ipns.Add(ipn); + } + } + + IPNetwork2 ipnetwork = null; + bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out ipnetwork); + Assert.AreEqual(true, wide, "wide"); + Assert.AreEqual("0.0.0.0/4", ipnetwork.ToString(), "ipnetwork"); + } + + /// + /// Tests Try Wide Subnet functionality with a /3 network. + /// + [TestMethod] + public void TryWideSubnet3() + { + string[] ips = { "a", "b", "c", "d" }; + var ipns = new List(); + foreach (string ip in ips) + { + IPNetwork2 ipn; + if (IPNetwork2.TryParse(ip, 32, out ipn)) + { + ipns.Add(ipn); + } + } + + IPNetwork2 ipnetwork = null; + bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out ipnetwork); + Assert.AreEqual(false, wide, "wide"); + } + + /// + /// Tests Try Wide Subnet functionality with a /4 network. + /// + [TestMethod] + public void TryWideSubnet4() + { + string[] ips = { "a", "b", "1.1.1.1", "d" }; + var ipns = new List(); + foreach (string ip in ips) + { + IPNetwork2 ipn; + if (IPNetwork2.TryParse(ip, 32, out ipn)) + { + ipns.Add(ipn); + } + } + + IPNetwork2 ipnetwork = null; + bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out ipnetwork); + Assert.AreEqual(true, wide, "wide"); + Assert.AreEqual("1.1.1.1/32", ipnetwork.ToString(), "ipnetwork"); + } + + /// + /// Tests Try Wide Subnet with null input to ensure proper null handling. + /// + [TestMethod] + public void TryWideSubnetNull() + { + IPNetwork2 ipnetwork = null; + bool wide = IPNetwork2.TryWideSubnet(null, out ipnetwork); + Assert.AreEqual(false, wide, "wide"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkUsableTests.cs b/src/TestProject/IPNetworkTest/IPNetworkUsableTests.cs new file mode 100644 index 00000000..73272cbf --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkUsableTests.cs @@ -0,0 +1,86 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkUsableTests +{ + /// + /// Tests Usable functionality with a /32 network. + /// + [TestMethod] + public void Usable32() + { + var network = IPNetwork2.Parse("0.0.0.0/32"); + uint usable = 0; + Assert.AreEqual(usable, network.Usable, "Usable"); + } + + /// + /// Tests Usable functionality with a /31 network. + /// + [TestMethod] + public void Usable31() + { + var network = IPNetwork2.Parse("0.0.0.0/31"); + uint usable = 0; + Assert.AreEqual(usable, network.Usable, "Usable"); + } + + /// + /// Tests Usable functionality with a /30 network. + /// + [TestMethod] + public void Usable30() + { + var network = IPNetwork2.Parse("0.0.0.0/30"); + uint usable = 2; + Assert.AreEqual(usable, network.Usable, "Usable"); + } + + /// + /// Tests Usable functionality with a /24 network. + /// + [TestMethod] + public void Usable24() + { + var network = IPNetwork2.Parse("0.0.0.0/24"); + uint usable = 254; + Assert.AreEqual(usable, network.Usable, "Usable"); + } + + /// + /// Tests Usable functionality with a /16 network. + /// + [TestMethod] + public void Usable16() + { + var network = IPNetwork2.Parse("0.0.0.0/16"); + uint usable = 65534; + Assert.AreEqual(usable, network.Usable, "Usable"); + } + + /// + /// Tests Usable functionality with a /8 network. + /// + [TestMethod] + public void Usable8() + { + var network = IPNetwork2.Parse("0.0.0.0/8"); + uint usable = 16777214; + Assert.AreEqual(usable, network.Usable, "Usable"); + } + + /// + /// Tests Usable functionality with a /0 network. + /// + [TestMethod] + public void Usable0() + { + var network = IPNetwork2.Parse("0.0.0.0/0"); + uint usable = 4294967294; + Assert.AreEqual(usable, network.Usable, "Usable"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkValidNetmaskTests.cs b/src/TestProject/IPNetworkTest/IPNetworkValidNetmaskTests.cs new file mode 100644 index 00000000..5f7e2acb --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkValidNetmaskTests.cs @@ -0,0 +1,92 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +[TestClass] +public class IPNetworkValidNetmaskTests +{ + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestValidNetmaskInvalid1() + { + bool resut = IPNetwork2.InternalValidNetmask(BigInteger.Zero, AddressFamily.AppleTalk); + } + + /// + /// Tests Valid Netmask functionality with Valid Netmask0. + /// + [TestMethod] + public void TestValidNetmask0() + { + var mask = IPAddress.Parse("255.255.255.255"); + bool expected = true; + bool result = IPNetwork2.ValidNetmask(mask); + + Assert.AreEqual(expected, result, "ValidNetmask"); + } + + /// + /// Tests Valid Netmask functionality with Valid Netmask1. + /// + [TestMethod] + public void TestValidNetmask1() + { + var mask = IPAddress.Parse("255.255.255.0"); + bool expected = true; + bool result = IPNetwork2.ValidNetmask(mask); + + Assert.AreEqual(expected, result, "ValidNetmask"); + } + + /// + /// Tests Valid Netmask functionality with Valid Netmask2. + /// + [TestMethod] + public void TestValidNetmask2() + { + var mask = IPAddress.Parse("255.255.0.0"); + bool expected = true; + bool result = IPNetwork2.ValidNetmask(mask); + + Assert.AreEqual(expected, result, "ValidNetmask"); + } + + /// + /// Tests Valid Netmask functionality with Valid Netmask EAE1. + /// + [TestMethod] + public void TestValidNetmaskEae1() + { + var mask = IPAddress.Parse("0.255.0.0"); + bool expected = false; + bool result = IPNetwork2.ValidNetmask(mask); + + Assert.AreEqual(expected, result, "ValidNetmask"); + } + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestValidNetmaskEae2() + { + IPAddress mask = null; + bool expected = true; + bool result = IPNetwork2.ValidNetmask(mask); + + Assert.AreEqual(expected, result, "ValidNetmask"); + } + + /// + /// Tests Valid Netmask functionality with Valid Netmask EAE3. + /// + [TestMethod] + public void TestValidNetmaskEae3() + { + var mask = IPAddress.Parse("255.255.0.1"); + bool expected = false; + bool result = IPNetwork2.ValidNetmask(mask); + + Assert.AreEqual(expected, result, "ValidNetmask"); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkTest/IPNetworkWideSubnetTests.cs b/src/TestProject/IPNetworkTest/IPNetworkWideSubnetTests.cs new file mode 100644 index 00000000..1fc974a2 --- /dev/null +++ b/src/TestProject/IPNetworkTest/IPNetworkWideSubnetTests.cs @@ -0,0 +1,100 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject.IPNetworkTest; + +/// +/// Tests for the WideSubnet method in IPNetwork2. +/// +[TestClass] +public class IPNetworkWideSubnetTests +{ + /// + /// Tests WideSubnet with a diverse set of addresses, expecting a /0 network. + /// + [TestMethod] + public void WideSubnet1() + { + string[] ips = { "1.1.1.1", "255.255.255.255", "2.2.2.2", "0.0.0.0" }; + var ipns = new List(); + foreach (string ip in ips) + { + IPNetwork2 ipn; + if (IPNetwork2.TryParse(ip, 32, out ipn)) + { + ipns.Add(ipn); + } + } + + var ipnetwork = IPNetwork2.WideSubnet(ipns.ToArray()); + Assert.AreEqual("0.0.0.0/0", ipnetwork.ToString(), "ipnetwork"); + } + + /// + /// Tests WideSubnet with addresses in same range, expecting a /4 network. + /// + [TestMethod] + public void WideSubnet2() + { + string[] ips = { "1.1.1.1", "10.0.0.0", "2.2.2.2", "0.0.0.0" }; + var ipns = new List(); + foreach (string ip in ips) + { + IPNetwork2 ipn; + if (IPNetwork2.TryParse(ip, 32, out ipn)) + { + ipns.Add(ipn); + } + } + + var ipnetwork = IPNetwork2.WideSubnet(ipns.ToArray()); + Assert.AreEqual("0.0.0.0/4", ipnetwork.ToString(), "ipnetwork"); + } + + /// + /// Tests WideSubnet with null input to ensure it throws ArgumentNullException. + /// + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void WideSubnetNull() + { + var ipnetwork = IPNetwork2.WideSubnet(null); + } + + /// + /// Tests WideSubnet with invalid IP addresses to ensure it throws ArgumentException. + /// + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void WideSubnetNull2() + { + string[] ips = { "a", "b", "e", "d" }; + var ipns = new List(); + foreach (string ip in ips) + { + IPNetwork2 ipn; + if (IPNetwork2.TryParse(ip, 32, out ipn)) + { + ipns.Add(ipn); + } + } + + var ipnetwork = IPNetwork2.WideSubnet(ipns.ToArray()); + } + + /// + /// Tests WideSubnet with mixed IPv4 and IPv6 addresses to ensure it throws ArgumentException. + /// + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void WideSubnetMixed() + { + var ipns = new List + { + IPNetwork2.IANA_ABLK_RESERVED1, + IPNetwork2.Parse("2001:0db8::/64") + }; + var ipnetwork = IPNetwork2.WideSubnet(ipns.ToArray()); + } +} \ No newline at end of file diff --git a/src/TestProject/IPNetworkUnitTest.cs b/src/TestProject/IPNetworkUnitTest.cs deleted file mode 100644 index b351c647..00000000 --- a/src/TestProject/IPNetworkUnitTest.cs +++ /dev/null @@ -1,3754 +0,0 @@ -// -// Copyright (c) IPNetwork. All rights reserved. -// - -namespace System.Net.TestProject -{ - using System.Collections.Generic; - using System.Linq; - using System.Numerics; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - /// - /// IPNetworkUnitTest test every single method. - /// - [TestClass] - public class IPNetworkUnitTest - { - #region ctor - - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void TestCtor1() - { - new IPNetwork2(BigInteger.Zero, Sockets.AddressFamily.InterNetwork, 33); - } - #endregion - - #region Parse - - [TestMethod] - [TestCategory("Parse")] - [ExpectedException(typeof(ArgumentNullException))] - public void TestParseIPAddressNetmaskANE2() - { - IPAddress ip = null; - IPNetwork2.Parse(ip, ip); - } - - [TestMethod] - [TestCategory("Parse")] - [ExpectedException(typeof(ArgumentNullException))] - public void TestParseIPAddressNetmaskANE3() - { - IPNetwork2.Parse(string.Empty, 0); - } - - [TestMethod] - [TestCategory("Parse")] - [ExpectedException(typeof(ArgumentNullException))] - public void TestParseIPAddressNetmaskANE4() - { - IPNetwork2.Parse((string)null, 0); - } - - [TestMethod] - [TestCategory("Parse")] - [ExpectedException(typeof(ArgumentNullException))] - public void TestParseIPAddressNetmaskANE5() - { - string n = null; - IPNetwork2.Parse(n, n); - } - - [TestMethod] - [TestCategory("Parse")] - [ExpectedException(typeof(ArgumentException))] - public void TestParseIPAddressNetmaskANE8() - { - var ipnet = IPNetwork2.Parse("x.x.x.x", "x.x.x.x"); - } - - [TestMethod] - [TestCategory("Parse")] - [ExpectedException(typeof(ArgumentException))] - public void TestParseIPAddressNetmaskANE9() - { - var ipnet = IPNetwork2.Parse("0.0.0.0", "x.x.x.x"); - } - - [TestMethod] - [TestCategory("Parse")] - [ExpectedException(typeof(ArgumentException))] - public void TestParseIPAddressNetmaskANE10() - { - var ipnet = IPNetwork2.Parse("x.x.x.x", 0); - } - - [TestMethod] - [TestCategory("Parse")] - [ExpectedException(typeof(ArgumentException))] - public void TestParseIPAddressNetmaskANE11() - { - var ipnet = IPNetwork2.Parse("0.0.0.0", 33); - } - - [TestCategory("Parse")] - [TestMethod] - public void TestParseIPAddressNetmask() - { - string ipaddress = "192.168.168.100"; - string netmask = "255.255.255.0"; - - string network = "192.168.168.0"; - string broadcast = "192.168.168.255"; - string firstUsable = "192.168.168.1"; - string lastUsable = "192.168.168.254"; - byte cidr = 24; - uint usable = 254; - - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestCategory("Parse")] - [TestMethod] - public void TestParseString1() - { - string ipaddress = "192.168.168.100 255.255.255.0"; - - string network = "192.168.168.0"; - string netmask = "255.255.255.0"; - string broadcast = "192.168.168.255"; - string firstUsable = "192.168.168.1"; - string lastUsable = "192.168.168.254"; - byte cidr = 24; - uint usable = 254; - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestCategory("Parse")] - [TestMethod] - public void TestParseString2() - { - string ipaddress = "192.168.168.100/24"; - - string network = "192.168.168.0"; - string netmask = "255.255.255.0"; - string broadcast = "192.168.168.255"; - string firstUsable = "192.168.168.1"; - string lastUsable = "192.168.168.254"; - byte cidr = 24; - uint usable = 254; - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestCategory("Parse")] - [TestMethod] - public void TestParseString3() - { - string ipaddress = "0.0.0.0/0"; - - string network = "0.0.0.0"; - string netmask = "0.0.0.0"; - string broadcast = "255.255.255.255"; - string firstUsable = "0.0.0.1"; - string lastUsable = "255.255.255.254"; - byte cidr = 0; - uint usable = 4294967294; - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestCategory("Parse")] - [TestMethod] - public void TestParseString4() - { - string ipaddress = "0.0.0.0/32"; - - string network = "0.0.0.0"; - string netmask = "255.255.255.255"; - string broadcast = "0.0.0.0"; - string firstUsable = "0.0.0.0"; - string lastUsable = "0.0.0.0"; - byte cidr = 32; - uint usable = 0; - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestCategory("Parse")] - [TestMethod] - public void TestParseString5() - { - string ipaddress = "255.255.255.255/32"; - - string network = "255.255.255.255"; - string netmask = "255.255.255.255"; - string broadcast = "255.255.255.255"; - string firstUsable = "255.255.255.255"; - string lastUsable = "255.255.255.255"; - byte cidr = 32; - uint usable = 0; - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestCategory("Parse")] - [TestMethod] - public void TestParseIPAddressNoNetmask1() - { - string ipaddress = "10.0.0.0"; - - string network = "10.0.0.0"; - string netmask = "255.0.0.0"; - string broadcast = "10.255.255.255"; - string firstUsable = "10.0.0.1"; - string lastUsable = "10.255.255.254"; - byte cidr = 8; - uint usable = 16777214; - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestMethod] - public void When_Parse_254_128_0_0_Should_Succeed() - { - string ipaddress = "254.128.0.0"; - - string network = "254.128.0.0"; - string netmask = "255.255.255.0"; - string broadcast = "254.128.0.255"; - string firstUsable = "254.128.0.1"; - string lastUsable = "254.128.0.254"; - byte cidr = 24; - uint usable = 254; - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestMethod] - public void TestParseIPAddressNoNetmask2() - { - string ipaddress = "172.0.0.0"; - - string network = "172.0.0.0"; - string netmask = "255.255.0.0"; - string broadcast = "172.0.255.255"; - string firstUsable = "172.0.0.1"; - string lastUsable = "172.0.255.254"; - byte cidr = 16; - uint usable = 65534; - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestMethod] - public void TestParseIPAddressNoNetmask3() - { - string ipaddress = "192.0.0.0"; - - string network = "192.0.0.0"; - string netmask = "255.255.255.0"; - string broadcast = "192.0.0.255"; - string firstUsable = "192.0.0.1"; - string lastUsable = "192.0.0.254"; - byte cidr = 24; - uint usable = 254; - - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestMethod] - public void TestParseIPAddressNoNetmask1_ClassFull() - { - string ipaddress = "10.0.0.0"; - ICidrGuess guessCidr = CidrGuess.ClassFull; - - var ipnetwork = IPNetwork2.Parse(ipaddress, guessCidr); - - string network = "10.0.0.0"; - string netmask = "255.0.0.0"; - string broadcast = "10.255.255.255"; - string firstUsable = "10.0.0.1"; - string lastUsable = "10.255.255.254"; - byte cidr = 8; - uint usable = 16777214; - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestMethod] - public void TestParseIPAddressNoNetmask2_ClassFull() - { - string ipaddress = "172.0.0.0"; - ICidrGuess guessCidr = CidrGuess.ClassFull; - - var ipnetwork = IPNetwork2.Parse(ipaddress, guessCidr); - - string network = "172.0.0.0"; - string netmask = "255.255.0.0"; - string broadcast = "172.0.255.255"; - string firstUsable = "172.0.0.1"; - string lastUsable = "172.0.255.254"; - byte cidr = 16; - uint usable = 65534; - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestMethod] - public void TestParseIPAddressNoNetmask3_ClassFull() - { - string ipaddress = "192.0.0.0"; - ICidrGuess guessCidr = CidrGuess.ClassFull; - - var ipnetwork = IPNetwork2.Parse(ipaddress, guessCidr); - - string network = "192.0.0.0"; - string netmask = "255.255.255.0"; - string broadcast = "192.0.0.255"; - string firstUsable = "192.0.0.1"; - string lastUsable = "192.0.0.254"; - byte cidr = 24; - uint usable = 254; - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestMethod] - public void TestParseIPAddressNoNetmask1_ClassLess() - { - string ipaddress = "10.0.0.0"; - ICidrGuess guessCidr = CidrGuess.ClassLess; - - var ipnetwork = IPNetwork2.Parse(ipaddress, guessCidr); - - string network = "10.0.0.0"; - string netmask = "255.255.255.255"; - string broadcast = "10.0.0.0"; - string firstUsable = "10.0.0.0"; - string lastUsable = "10.0.0.0"; - byte cidr = 32; - uint usable = 0; - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestMethod] - public void TestParseIPAddressNoNetmask2_ClassLess() - { - string ipaddress = "172.0.0.0"; - ICidrGuess guessCidr = CidrGuess.ClassLess; - - var ipnetwork = IPNetwork2.Parse(ipaddress, guessCidr); - - string network = "172.0.0.0"; - string netmask = "255.255.255.255"; - string broadcast = "172.0.0.0"; - string firstUsable = "172.0.0.0"; - string lastUsable = "172.0.0.0"; - byte cidr = 32; - uint usable = 0; - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestMethod] - public void TestParseIPAddressNoNetmask3_ClassLess() - { - string ipaddress = "192.0.0.0"; - ICidrGuess guessCidr = CidrGuess.ClassLess; - - var ipnetwork = IPNetwork2.Parse(ipaddress, guessCidr); - - string network = "192.0.0.0"; - string netmask = "255.255.255.255"; - string broadcast = "192.0.0.0"; - string firstUsable = "192.0.0.0"; - string lastUsable = "192.0.0.0"; - byte cidr = 32; - uint usable = 0; - - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestMethod] - public void TestParseIPAddressNoNetmask4() - { - string ipaddress = "224.0.0.0"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - - Assert.AreEqual("224.0.0.0/24", ipnetwork.ToString(), "Network"); - } - - [TestMethod] - public void TestParseIPAddressNoNetmask5() - { - string ipaddress = "240.0.0.0"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - Assert.AreEqual("240.0.0.0/24", ipnetwork.ToString(), "Network"); - } - - [TestMethod] - public void TestParseIPAddressNoNetmask127001() - { - string ipaddress = "127.0.0.1"; - IPNetwork2 result = null; - IPNetwork2.TryParse(ipaddress, out result); - Assert.AreEqual(result.Cidr, 8); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestParseStringAE1() - { - string ipaddress = "garbage"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestParseStringAE2() - { - string ipaddress = "0.0.0.0 0.0.1.0"; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestParseStringANE1() - { - string ipaddress = null; - var ipnetwork = IPNetwork2.Parse(ipaddress); - } - - #endregion - - #region TryParse - - [TestMethod] - public void TestTryParseIPAddressNetmaskANE2() - { - IPNetwork2 ipnet = null; - IPAddress ip = null; - bool parsed = IPNetwork2.TryParse(ip, ip, out ipnet); - - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } - - [TestMethod] - public void TestTryParseIPAddressNetmaskANE3() - { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse(string.Empty, 0, out ipnet); - - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } - - [TestMethod] - public void TestTryParseIPAddressNetmaskANE4() - { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse(null, 0, out ipnet); - - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } - - [TestMethod] - public void TestTryParseIPAddressNetmaskANE5() - { - string n = null; - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse(n, n, out ipnet); - - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } - - [TestMethod] - public void TestTryParseIPAddressNetmaskANE6() - { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse(IPAddress.Parse("10.10.10.10"), null, out ipnet); - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } - - [TestMethod] - public void TestTryParseIPAddressNetmaskANE7() - { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse("0.0.0.0", netmask: null, out ipnet); - - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } - - [TestMethod] - public void TestTryParseIPAddressNetmaskANE8() - { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse("x.x.x.x", "x.x.x.x", out ipnet); - - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } - - [TestMethod] - public void TestTryParseIPAddressNetmaskANE9() - { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse("0.0.0.0", "x.x.x.x", out ipnet); - - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } - - [TestMethod] - public void TestTryParseIPAddressNetmaskANE10() - { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse("x.x.x.x", 0, out ipnet); - - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } - - [TestMethod] - public void TestTryParseIPAddressNetmaskANE11() - { - IPNetwork2 ipnet = null; - bool parsed = IPNetwork2.TryParse("0.0.0.0", 33, out ipnet); - - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(null, ipnet, "ipnet"); - } - - [TestMethod] - public void TestTryParseIPAddressNetmask() - { - IPNetwork2 ipnetwork = null; - string ipaddress = "192.168.168.100"; - string netmask = "255.255.255.0"; - - string network = "192.168.168.0"; - string broadcast = "192.168.168.255"; - string firstUsable = "192.168.168.1"; - string lastUsable = "192.168.168.254"; - byte cidr = 24; - uint usable = 254; - - bool parsed = IPNetwork2.TryParse(ipaddress, netmask, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestMethod] - public void TestTryParseString1() - { - IPNetwork2 ipnetwork = null; - string ipaddress = "192.168.168.100 255.255.255.0"; - - string network = "192.168.168.0"; - string netmask = "255.255.255.0"; - string broadcast = "192.168.168.255"; - string firstUsable = "192.168.168.1"; - string lastUsable = "192.168.168.254"; - byte cidr = 24; - uint usable = 254; - - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestMethod] - public void TestTryParseString2() - { - IPNetwork2 ipnetwork = null; - string ipaddress = "192.168.168.100/24"; - - string network = "192.168.168.0"; - string netmask = "255.255.255.0"; - string broadcast = "192.168.168.255"; - string firstUsable = "192.168.168.1"; - string lastUsable = "192.168.168.254"; - byte cidr = 24; - uint usable = 254; - - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestMethod] - public void TestTryParseString3() - { - IPNetwork2 ipnetwork = null; - string ipaddress = "0.0.0.0/0"; - - string network = "0.0.0.0"; - string netmask = "0.0.0.0"; - string broadcast = "255.255.255.255"; - string firstUsable = "0.0.0.1"; - string lastUsable = "255.255.255.254"; - byte cidr = 0; - uint usable = 4294967294; - - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestMethod] - public void TestTryParseString4() - { - IPNetwork2 ipnetwork = null; - string ipaddress = "0.0.0.0/32"; - - string network = "0.0.0.0"; - string netmask = "255.255.255.255"; - string broadcast = "0.0.0.0"; - string firstUsable = "0.0.0.0"; - string lastUsable = "0.0.0.0"; - byte cidr = 32; - uint usable = 0; - - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestMethod] - public void TestTryParseString5() - { - IPNetwork2 ipnetwork = null; - string ipaddress = "255.255.255.255/32"; - - string network = "255.255.255.255"; - string netmask = "255.255.255.255"; - string broadcast = "255.255.255.255"; - string firstUsable = "255.255.255.255"; - string lastUsable = "255.255.255.255"; - byte cidr = 32; - uint usable = 0; - - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); - Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); - Assert.AreEqual(broadcast, ipnetwork.Broadcast.ToString(), "Broadcast"); - Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); - Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); - Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestMethod] - public void TestTryParseStringAE1() - { - string ipaddress = "garbage"; - IPNetwork2 ipnetwork = null; - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(false, parsed, "parsed"); - } - - [TestMethod] - public void TestTryParseStringAE2() - { - string ipaddress = "0.0.0.0 0.0.1.0"; - IPNetwork2 ipnetwork = null; - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(false, parsed, "parsed"); - } - - [TestMethod] - public void TestTryParseStringANE1() - { - string ipaddress = null; - IPNetwork2 ipnetwork = null; - bool parsed = IPNetwork2.TryParse(ipaddress, out ipnetwork); - Assert.AreEqual(false, parsed, "parsed"); - } - - #endregion - - #region ParseStringString - - [TestMethod] - public void TestParseStringString1() - { - string ipaddress = "192.168.168.100"; - string netmask = "255.255.255.0"; - - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); - Assert.AreEqual("192.168.168.0/24", ipnetwork.ToString(), "network"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestParseStringString2() - { - string ipaddress = null; - string netmask = null; - - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestParseStringString3() - { - string ipaddress = "192.168.168.100"; - string netmask = null; - - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestParseStringString4() - { - string ipaddress = string.Empty; - string netmask = string.Empty; - - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestParseStringString5() - { - string ipaddress = "192.168.168.100"; - string netmask = string.Empty; - - var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); - } - - #endregion - - #region ParseIpIp - - [TestMethod] - public void ParseIpIp1() - { - string ipaddress = "192.168.168.100"; - string netmask = "255.255.255.0"; - var ip = IPAddress.Parse(ipaddress); - var netm = IPAddress.Parse(netmask); - var ipnetwork = IPNetwork2.Parse(ip, netm); - Assert.AreEqual("192.168.168.0/24", ipnetwork.ToString(), "network"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void ParseIpIp2() - { - IPAddress ip = null; - IPAddress netm = null; - var ipnetwork = IPNetwork2.Parse(ip, netm); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void ParseIpIp3() - { - string ipaddress = "192.168.168.100"; - var ip = IPAddress.Parse(ipaddress); - IPAddress netm = null; - var ipnetwork = IPNetwork2.Parse(ip, netm); - } - - #endregion - - #region CtorWithIpAndCidr - - [TestMethod] - public void CtorWithIpAndCidr1() - { - string ipaddress = "192.168.168.100"; - var ip = IPAddress.Parse(ipaddress); - var ipnetwork = new IPNetwork2(ip, 24); - Assert.AreEqual("192.168.168.0/24", ipnetwork.ToString(), "network"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void CtorWithIpAndCidr2() - { - IPAddress ip = null; - var ipnetwork = new IPNetwork2(ip, 24); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void CtorWithIpAndCidr3() - { - string ipaddress = "192.168.168.100"; - var ip = IPAddress.Parse(ipaddress); - var ipnetwork = new IPNetwork2(ip, 33); - } - - #endregion - - #region ToCidr - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestToCidrANE() - { - IPNetwork2.ToCidr(null); - } - - [TestMethod] - public void TestToCidrAE() - { - byte cidr = IPNetwork2.ToCidr(IPAddress.IPv6Any); - Assert.AreEqual(0, cidr, "cidr"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestToCidrAE2() - { - IPNetwork2.ToCidr(IPAddress.Parse("6.6.6.6")); - } - - [TestMethod] - public void TestToCidr32() - { - var mask = IPAddress.Parse("255.255.255.255"); - byte cidr = 32; - int result = IPNetwork2.ToCidr(mask); - - Assert.AreEqual(cidr, result, "cidr"); - } - - [TestMethod] - public void TestToCidr24() - { - var mask = IPAddress.Parse("255.255.255.0"); - byte cidr = 24; - int result = IPNetwork2.ToCidr(mask); - - Assert.AreEqual(cidr, result, "cidr"); - } - - [TestMethod] - public void TestToCidr16() - { - var mask = IPAddress.Parse("255.255.0.0"); - byte cidr = 16; - int result = IPNetwork2.ToCidr(mask); - - Assert.AreEqual(cidr, result, "cidr"); - } - - [TestMethod] - public void TestToCidr8() - { - var mask = IPAddress.Parse("255.0.0.0"); - byte cidr = 8; - int result = IPNetwork2.ToCidr(mask); - - Assert.AreEqual(cidr, result, "cidr"); - } - - [TestMethod] - public void TestToCidr0() - { - var mask = IPAddress.Parse("0.0.0.0"); - byte cidr = 0; - int result = IPNetwork2.ToCidr(mask); - - Assert.AreEqual(cidr, result, "cidr"); - } - - #endregion - - #region TryToCidr - - [TestMethod] - public void TestTryToCidrANE() - { - byte? cidr = null; - bool parsed = IPNetwork2.TryToCidr(null, out cidr); - Assert.AreEqual(false, parsed, "parsed"); - } - - [TestMethod] - public void TestTryToCidrAE() - { - byte? cidr = null; - bool parsed = IPNetwork2.TryToCidr(IPAddress.IPv6Any, out cidr); - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual((byte)0, cidr, "cidr"); - } - - [TestMethod] - public void TestTryToCidrAE2() - { - byte? cidr = null; - bool parsed = IPNetwork2.TryToCidr(IPAddress.Parse("6.6.6.6"), out cidr); - Assert.AreEqual(false, parsed, "parsed"); - } - - [TestMethod] - public void TestTryToCidr32() - { - byte? cidr = null; - var mask = IPAddress.Parse("255.255.255.255"); - byte result = 32; - bool parsed = IPNetwork2.TryToCidr(mask, out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } - - [TestMethod] - public void TestTryToCidr24() - { - byte? cidr = null; - var mask = IPAddress.Parse("255.255.255.0"); - byte result = 24; - bool parsed = IPNetwork2.TryToCidr(mask, out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } - - [TestMethod] - public void TestTryToCidr16() - { - byte? cidr = null; - var mask = IPAddress.Parse("255.255.0.0"); - byte result = 16; - bool parsed = IPNetwork2.TryToCidr(mask, out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } - - [TestMethod] - public void TestTryToCidr8() - { - byte? cidr = null; - var mask = IPAddress.Parse("255.0.0.0"); - byte result = 8; - bool parsed = IPNetwork2.TryToCidr(mask, out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } - - [TestMethod] - public void TestTryToCidr0() - { - byte? cidr = null; - var mask = IPAddress.Parse("0.0.0.0"); - byte result = 0; - bool parsed = IPNetwork2.TryToCidr(mask, out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(cidr, result, "cidr"); - } - - #endregion - - #region ToBigInteger - - [TestMethod] - public void TestToBigInteger32() - { - var mask = IPAddress.Parse("255.255.255.255"); - uint uintMask = 0xffffffff; - var result = IPNetwork2.ToBigInteger(mask); - - Assert.AreEqual(uintMask, result, "uint"); - } - - [TestMethod] - public void TestToBigInteger24() - { - var mask = IPAddress.Parse("255.255.255.0"); - uint uintMask = 0xffffff00; - BigInteger? result = IPNetwork2.ToBigInteger(mask); - - Assert.AreEqual(uintMask, result, "uint"); - } - - [TestMethod] - public void TestToBigInteger16() - { - var mask = IPAddress.Parse("255.255.0.0"); - uint uintMask = 0xffff0000; - BigInteger? result = IPNetwork2.ToBigInteger(mask); - - Assert.AreEqual(uintMask, result, "uint"); - } - - [TestMethod] - public void TestToBigInteger8() - { - var mask = IPAddress.Parse("255.0.0.0"); - uint uintMask = 0xff000000; - BigInteger? result = IPNetwork2.ToBigInteger(mask); - - Assert.AreEqual(uintMask, result, "uint"); - } - - [TestMethod] - public void TestToBigInteger0() - { - var mask = IPAddress.Parse("0.0.0.0"); - uint uintMask = 0x00000000; - BigInteger? result = IPNetwork2.ToBigInteger(mask); - - Assert.AreEqual(uintMask, result, "uint"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestToBigIntegerANE() - { - BigInteger? result = IPNetwork2.ToBigInteger(null); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestToBigIntegerANE3() - { - IPAddress ip = null; - BigInteger? result = IPNetwork2.ToBigInteger(ip); - } - - [TestMethod] - public void TestToBigIntegerANE2() - { - BigInteger? result = IPNetwork2.ToBigInteger(IPAddress.IPv6Any); - uint expected = 0; - Assert.AreEqual(expected, result, "result"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void TestToBigIntegerByte() - { - BigInteger result = IPNetwork2.ToUint(33, Sockets.AddressFamily.InterNetwork); - } - - [TestMethod] - public void TestToBigIntegerByte2() - { - BigInteger result = IPNetwork2.ToUint(32, Sockets.AddressFamily.InterNetwork); - uint expected = 4294967295; - Assert.AreEqual(expected, result, "result"); - } - - [TestMethod] - public void TestToBigIntegerByte3() - { - BigInteger result = IPNetwork2.ToUint(0, Sockets.AddressFamily.InterNetwork); - uint expected = 0; - Assert.AreEqual(expected, result, "result"); - } - - [TestMethod] - public void TestToBigIntegerInternal1() - { - BigInteger? result = null; - IPNetwork2.InternalToBigInteger(true, 33, Sockets.AddressFamily.InterNetwork, out result); - Assert.AreEqual(null, result, "result"); - } - - [TestMethod] - public void TestToBigIntegerInternal2() - { - BigInteger? result = null; - IPNetwork2.InternalToBigInteger(true, 129, Sockets.AddressFamily.InterNetworkV6, out result); - Assert.AreEqual(null, result, "result"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void TestToBigIntegerInternal3() - { - BigInteger? result = null; - IPNetwork2.InternalToBigInteger(false, 129, Sockets.AddressFamily.InterNetworkV6, out result); - } - - [TestMethod] - [ExpectedException(typeof(NotSupportedException))] - public void TestToBigIntegerInternal4() - { - BigInteger? result = null; - IPNetwork2.InternalToBigInteger(false, 32, Sockets.AddressFamily.AppleTalk, out result); - } - - [TestMethod] - public void TestToBigIntegerInternal5() - { - BigInteger? result = null; - IPNetwork2.InternalToBigInteger(true, 32, Sockets.AddressFamily.AppleTalk, out result); - Assert.AreEqual(null, result, "result"); - } - - #endregion - - #region TryToUint - - [TestMethod] - public void TestTryToUint1() - { - BigInteger? result = null; - bool parsed = IPNetwork2.TryToUint(32, Sockets.AddressFamily.InterNetwork, out result); - - Assert.IsNotNull(result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } - - #endregion - - #region TryToBigInteger - - [TestMethod] - public void TestTryToBigInteger32() - { - var mask = IPAddress.Parse("255.255.255.255"); - uint uintMask = 0xffffffff; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } - - [TestMethod] - public void TestTryToBigInteger24() - { - var mask = IPAddress.Parse("255.255.255.0"); - uint uintMask = 0xffffff00; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } - - [TestMethod] - public void TestTryToBigInteger16() - { - var mask = IPAddress.Parse("255.255.0.0"); - uint uintMask = 0xffff0000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } - - [TestMethod] - public void TestTryToBigInteger8() - { - var mask = IPAddress.Parse("255.0.0.0"); - uint uintMask = 0xff000000; - - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } - - [TestMethod] - public void TestTryToBigInteger0() - { - var mask = IPAddress.Parse("0.0.0.0"); - uint uintMask = 0x00000000; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(mask, out result); - - Assert.AreEqual(uintMask, result, "uint"); - Assert.AreEqual(true, parsed, "parsed"); - } - - [TestMethod] - public void TestTryToBigIntegerANE() - { - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(null, out result); - - Assert.AreEqual(null, result, "uint"); - Assert.AreEqual(false, parsed, "parsed"); - } - - [TestMethod] - public void TestTryToBigIntegerANE3() - { - IPAddress ip = null; - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(ip, out result); - - Assert.AreEqual(null, result, "uint"); - Assert.AreEqual(false, parsed, "parsed"); - } - - [TestMethod] - public void TestTryToBigIntegerANE2() - { - BigInteger? result = null; - bool parsed = IPNetwork2.TryToBigInteger(IPAddress.IPv6Any, out result); - - Assert.AreEqual(0, result, "result"); - Assert.AreEqual(true, parsed, "parsed"); - } - - #endregion - - #region TryToNetmask - [TestMethod] - public void TryToNetmask1() - { - IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(0, Sockets.AddressFamily.InterNetwork, out result); - var expected = IPAddress.Parse("0.0.0.0"); - - Assert.AreEqual(expected, result, "Netmask"); - Assert.AreEqual(true, parsed, "parsed"); - } - - [TestMethod] - public void TryToNetmask2() - { - IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(33, Sockets.AddressFamily.InterNetwork, out result); - IPAddress expected = null; - - Assert.AreEqual(expected, result, "Netmask"); - Assert.AreEqual(false, parsed, "parsed"); - } - - #endregion - - #region ToNetmask - - [TestMethod] - public void ToNetmask32() - { - byte cidr = 32; - string netmask = "255.255.255.255"; - string result = IPNetwork2.ToNetmask(cidr, Sockets.AddressFamily.InterNetwork).ToString(); - - Assert.AreEqual(netmask, result, "netmask"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void ToNetmaskNonInet() - { - byte cidr = 0; - string result = IPNetwork2.ToNetmask(cidr, Sockets.AddressFamily.AppleTalk).ToString(); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void ToNetmaskNegative() - { - byte cidr = 0; - cidr--; - string result = IPNetwork2.ToNetmask(cidr, Sockets.AddressFamily.InterNetwork).ToString(); - } - - [TestMethod] - public void ToNetmaskInternal1() - { - IPAddress result; - IPNetwork2.InternalToNetmask(true, 0, Sockets.AddressFamily.AppleTalk, out result); - Assert.AreEqual(null, result); - } - - [TestMethod] - public void ToNetmask31() - { - byte cidr = 31; - string netmask = "255.255.255.254"; - string result = IPNetwork2.ToNetmask(cidr, Sockets.AddressFamily.InterNetwork).ToString(); - - Assert.AreEqual(netmask, result, "netmask"); - } - - [TestMethod] - public void ToNetmask30() - { - byte cidr = 30; - string netmask = "255.255.255.252"; - string result = IPNetwork2.ToNetmask(cidr, Sockets.AddressFamily.InterNetwork).ToString(); - - Assert.AreEqual(netmask, result, "netmask"); - } - - [TestMethod] - public void ToNetmask29() - { - byte cidr = 29; - string netmask = "255.255.255.248"; - string result = IPNetwork2.ToNetmask(cidr, Sockets.AddressFamily.InterNetwork).ToString(); - - Assert.AreEqual(netmask, result, "netmask"); - } - - [TestMethod] - public void ToNetmask1() - { - byte cidr = 1; - string netmask = "128.0.0.0"; - string result = IPNetwork2.ToNetmask(cidr, Sockets.AddressFamily.InterNetwork).ToString(); - - Assert.AreEqual(netmask, result, "netmask"); - } - - [TestMethod] - public void ToNetmask0() - { - byte cidr = 0; - string netmask = "0.0.0.0"; - string result = IPNetwork2.ToNetmask(cidr, Sockets.AddressFamily.InterNetwork).ToString(); - - Assert.AreEqual(netmask, result, "netmask"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void ToNetmaskOORE1() - { - byte cidr = 33; - string result = IPNetwork2.ToNetmask(cidr, Sockets.AddressFamily.InterNetwork).ToString(); - } - - #endregion - - #region ToIPAddress - - [TestMethod] - public void TestToIPAddress() - { - var ip = new BigInteger(0); - var result = IPNetwork2.ToIPAddress(ip, Sockets.AddressFamily.InterNetwork); - Assert.AreEqual(IPAddress.Any, result, "ToIPAddress"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestToIPAddress2() - { - var ip = new BigInteger(0); - var result = IPNetwork2.ToIPAddress(ip, Sockets.AddressFamily.AppleTalk); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestToIPAddress3() - { - var ip = new BigInteger(new byte[] - { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - }); - var result = IPNetwork2.ToIPAddress(ip, Sockets.AddressFamily.AppleTalk); - } - #endregion - - #region ValidNetmask - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestValidNetmaskInvalid1() - { - bool resut = IPNetwork2.InternalValidNetmask(BigInteger.Zero, Sockets.AddressFamily.AppleTalk); - } - - [TestMethod] - public void TestValidNetmask0() - { - var mask = IPAddress.Parse("255.255.255.255"); - bool expected = true; - bool result = IPNetwork2.ValidNetmask(mask); - - Assert.AreEqual(expected, result, "ValidNetmask"); - } - - [TestMethod] - public void TestValidNetmask1() - { - var mask = IPAddress.Parse("255.255.255.0"); - bool expected = true; - bool result = IPNetwork2.ValidNetmask(mask); - - Assert.AreEqual(expected, result, "ValidNetmask"); - } - - [TestMethod] - public void TestValidNetmask2() - { - var mask = IPAddress.Parse("255.255.0.0"); - bool expected = true; - bool result = IPNetwork2.ValidNetmask(mask); - - Assert.AreEqual(expected, result, "ValidNetmask"); - } - - [TestMethod] - public void TestValidNetmaskEAE1() - { - var mask = IPAddress.Parse("0.255.0.0"); - bool expected = false; - bool result = IPNetwork2.ValidNetmask(mask); - - Assert.AreEqual(expected, result, "ValidNetmask"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestValidNetmaskEAE2() - { - IPAddress mask = null; - bool expected = true; - bool result = IPNetwork2.ValidNetmask(mask); - - Assert.AreEqual(expected, result, "ValidNetmask"); - } - - [TestMethod] - public void TestValidNetmaskEAE3() - { - var mask = IPAddress.Parse("255.255.0.1"); - bool expected = false; - bool result = IPNetwork2.ValidNetmask(mask); - - Assert.AreEqual(expected, result, "ValidNetmask"); - } - - #endregion - - #region BitsSet - - [TestMethod] - public void TestBitsSet32() - { - var ip = IPAddress.Parse("255.255.255.255"); - uint bits = 32; - uint result = IPNetwork2.BitsSet(ip); - - Assert.AreEqual(bits, result, "BitsSet"); - } - - [TestMethod] - public void TestBitsSet24() - { - var ip = IPAddress.Parse("255.255.255.0"); - uint bits = 24; - uint result = IPNetwork2.BitsSet(ip); - - Assert.AreEqual(bits, result, "BitsSet"); - } - - [TestMethod] - public void TestBitsSet16() - { - var ip = IPAddress.Parse("255.255.0.0"); - uint bits = 16; - uint result = IPNetwork2.BitsSet(ip); - - Assert.AreEqual(bits, result, "BitsSet"); - } - - [TestMethod] - public void TestBitsSet4() - { - var ip = IPAddress.Parse("128.128.128.128"); - uint bits = 4; - uint result = IPNetwork2.BitsSet(ip); - - Assert.AreEqual(bits, result, "BitsSet"); - } - - #endregion - - #region Overlap - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestOverlap1() - { - IPNetwork2 network1 = null; - IPNetwork2 network2 = null; - -#pragma warning disable 0618 - bool result = IPNetwork2.Overlap(network1, network2); -#pragma warning restore 0618 - } - - [TestMethod] - public void TestOverlapStatic2() - { - IPNetwork2 network1 = IPNetwork2.IANA_ABLK_RESERVED1; - IPNetwork2 network2 = IPNetwork2.IANA_ABLK_RESERVED1; - -#pragma warning disable 0618 - bool result = IPNetwork2.Overlap(network1, network2); -#pragma warning restore 0618 - - Assert.IsTrue(result, "result"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestOverlap2() - { - var network1 = IPNetwork2.Parse("10.0.0.0/0"); - IPNetwork2 network2 = null; - network1.Overlap(network2); - } - - [TestMethod] - public void TestOverlap3() - { - var network1 = IPNetwork2.Parse("10.0.0.0/0"); - var network2 = IPNetwork2.Parse("10.0.0.0/0"); - bool result = network1.Overlap(network2); - bool expected = true; - - Assert.AreEqual(expected, result, "overlap"); - } - - [TestMethod] - public void TestOverlap4() - { - var network1 = IPNetwork2.Parse("10.10.0.0/16"); - var network2 = IPNetwork2.Parse("10.10.1.0/24"); - bool result = network1.Overlap(network2); - bool expected = true; - - Assert.AreEqual(expected, result, "overlap"); - } - - [TestMethod] - public void TestOverlap5() - { - var network1 = IPNetwork2.Parse("10.10.0.0/24"); - var network2 = IPNetwork2.Parse("10.10.1.0/24"); - bool result = network1.Overlap(network2); - bool expected = false; - - Assert.AreEqual(expected, result, "overlap"); - } - - [TestMethod] - public void TestOverlap6() - { - var network1 = IPNetwork2.Parse("10.10.1.0/24"); - var network2 = IPNetwork2.Parse("10.10.0.0/16"); - bool result = network1.Overlap(network2); - bool expected = true; - - Assert.AreEqual(expected, result, "overlap"); - } - - #endregion - - #region Examples - - [TestMethod] - public void Example1() - { - var ipnetwork = IPNetwork2.Parse("192.168.168.100/24"); - - Console.WriteLine("Network : {0}", ipnetwork.Network); - Console.WriteLine("Netmask : {0}", ipnetwork.Netmask); - Console.WriteLine("Broadcast : {0}", ipnetwork.Broadcast); - Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable); - Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable); - Console.WriteLine("Usable : {0}", ipnetwork.Usable); - Console.WriteLine("Cidr : {0}", ipnetwork.Cidr); - } - - [TestMethod] - public void Example2() - { - var ipnetwork = IPNetwork2.Parse("192.168.0.0/24"); - var ipaddress = IPAddress.Parse("192.168.0.100"); - var ipaddress2 = IPAddress.Parse("192.168.1.100"); - - var ipnetwork2 = IPNetwork2.Parse("192.168.0.128/25"); - var ipnetwork3 = IPNetwork2.Parse("192.168.1.1/24"); - - bool contains1 = ipnetwork.Contains(ipaddress); - bool contains2 = ipnetwork.Contains(ipaddress2); - bool contains3 = ipnetwork.Contains(ipnetwork2); - bool contains4 = ipnetwork.Contains(ipnetwork3); - - bool overlap1 = ipnetwork.Overlap(ipnetwork2); - bool overlap2 = ipnetwork.Overlap(ipnetwork3); - - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress, contains1); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork2, contains3); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork3, contains4); - - Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork2, overlap1); - Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork3, overlap2); - } - - [TestMethod] - public void Example2b() - { - var ipnetwork1 = IPNetwork2.Parse("10.1.0.0/16"); - var ipnetwork2 = IPNetwork2.Parse("192.168.1.0/24"); - - var ipaddress1 = IPAddress.Parse("192.168.1.1"); - var ipaddress2 = IPAddress.Parse("192.168.2.100"); - var ipaddress3 = IPAddress.Parse("10.1.2.3"); - var ipaddress4 = IPAddress.Parse("10.4.5.6"); - - bool contains1 = ipnetwork2.Contains(ipaddress1); - bool contains2 = ipnetwork2.Contains(ipaddress2); - bool contains3 = ipnetwork1.Contains(ipaddress3); - bool contains4 = ipnetwork1.Contains(ipaddress4); - - Console.WriteLine("{0} contains {1} : {2}", ipnetwork1, ipaddress1, contains1); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork1, ipaddress2, contains2); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork2, ipaddress3, contains3); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork2, ipaddress4, contains4); - } - - [TestMethod] - public void Example3() - { - IPNetwork2 iana_a_block = IPNetwork2.IANA_ABLK_RESERVED1; - IPNetwork2 iana_b_block = IPNetwork2.IANA_BBLK_RESERVED1; - IPNetwork2 iana_c_block = IPNetwork2.IANA_CBLK_RESERVED1; - - Console.WriteLine("IANA_ABLK_RESERVED1 is {0}", iana_a_block); - Console.WriteLine("IANA_BBLK_RESERVED1 is {0}", iana_b_block); - Console.WriteLine("IANA_CBLK_RESERVED1 is {0}", iana_c_block); - } - - [TestMethod] - public void Example4() - { - var wholeInternet = IPNetwork2.Parse("0.0.0.0/0"); - byte newCidr = 2; - IPNetworkCollection subneted = wholeInternet.Subnet(newCidr); - - Console.WriteLine("{0} was subnetted into {1} subnets", wholeInternet, subneted.Count); - Console.WriteLine("First: {0}", subneted[0]); - Console.WriteLine("Last : {0}", subneted[subneted.Count - 1]); - Console.WriteLine("All :"); - - foreach (IPNetwork2 ipnetwork in subneted) - { - Console.WriteLine("{0}", ipnetwork); - } - } - - [TestMethod] - public void Example5() - { - var ipnetwork1 = IPNetwork2.Parse("192.168.0.0/24"); - var ipnetwork2 = IPNetwork2.Parse("192.168.1.0/24"); - IPNetwork2[] ipnetwork3 = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2 }); - - Console.WriteLine("{0} + {1} = {2}", ipnetwork1, ipnetwork2, ipnetwork3[0]); - } - - [TestMethod] - public void Example7() - { - var ipnetwork = IPNetwork2.Parse("192.168.168.100/24"); - - var ipaddress = IPAddress.Parse("192.168.168.200"); - var ipaddress2 = IPAddress.Parse("192.168.0.200"); - - bool contains1 = ipnetwork.Contains(ipaddress); - bool contains2 = ipnetwork.Contains(ipaddress2); - - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress, contains1); - Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); - } - - [TestMethod] - public void Example9() - { - var network = IPNetwork2.Parse("192.168.0.1"); - var network2 = IPNetwork2.Parse("192.168.0.254"); - - IPNetwork2 ipnetwork = network.Supernet(network2); - - Console.WriteLine("Network : {0}", ipnetwork.Network); - Console.WriteLine("Netmask : {0}", ipnetwork.Netmask); - Console.WriteLine("Broadcast : {0}", ipnetwork.Broadcast); - Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable); - Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable); - Console.WriteLine("Usable : {0}", ipnetwork.Usable); - Console.WriteLine("Cidr : {0}", ipnetwork.Cidr); - } - - [TestMethod] - public void When_TrySupernet_192_168_0_0_cidr24_add_192_168_10_0_cidr24_Then_Should_Invalid() - { - var network = IPNetwork2.Parse("192.168.0.0/24"); - var network2 = IPNetwork2.Parse("192.168.10.0/24"); - - bool supernetted = network.TrySupernet(network2, out IPNetwork2 ipnetwork); - Assert.AreEqual(false, supernetted); - } - - [TestMethod] - public void When_TryWideSubnet_192_168_0_0_cidr24_add_192_168_10_0_cidr24_Then_Should_Invalid() - { - var network = IPNetwork2.Parse("192.168.0.0/24"); - var network2 = IPNetwork2.Parse("192.168.10.0/24"); - - bool wideSubnetted = IPNetwork2.TryWideSubnet(new[] { network, network2 }, out IPNetwork2 ipnetwork); - Assert.AreEqual(true, wideSubnetted); - Assert.AreEqual("192.168.0.0/20", ipnetwork.ToString()); - - Console.WriteLine("Network : {0}", ipnetwork.Network); - Console.WriteLine("Netmask : {0}", ipnetwork.Netmask); - Console.WriteLine("Broadcast : {0}", ipnetwork.Broadcast); - Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable); - Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable); - Console.WriteLine("Usable : {0}", ipnetwork.Usable); - Console.WriteLine("Cidr : {0}", ipnetwork.Cidr); - } - - [TestMethod] - public void Example10() - { - var ipnetwork = IPNetwork2.Parse("192.168.0.1/25"); - - Console.WriteLine("Network : {0}", ipnetwork.Network); - Console.WriteLine("Netmask : {0}", ipnetwork.Netmask); - Console.WriteLine("Broadcast : {0}", ipnetwork.Broadcast); - Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable); - Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable); - Console.WriteLine("Usable : {0}", ipnetwork.Usable); - Console.WriteLine("Cidr : {0}", ipnetwork.Cidr); - } - - [TestMethod] - public void Example11() - { - var defaultParse = IPNetwork2.Parse("192.168.0.0"); // default to ClassFull - var classFullParse = IPNetwork2.Parse("192.168.0.0", CidrGuess.ClassFull); - var classLessParse = IPNetwork2.Parse("192.168.0.0", CidrGuess.ClassLess); - - Console.WriteLine("IPV4 Default Parse : {0}", defaultParse); - Console.WriteLine("IPV4 ClassFull Parse : {0}", classFullParse); - Console.WriteLine("IPV4 ClassLess Parse : {0}", classLessParse); - } - - #endregion - - #region IANA blocks - [TestMethod] - public void TestIANA1() - { - var ipaddress = IPAddress.Parse("192.168.66.66"); - bool expected = true; - bool result = IPNetwork2.IsIANAReserved(ipaddress); - - Assert.AreEqual(expected, result, "IANA"); - } - - [TestMethod] - public void TestIANA2() - { - var ipaddress = IPAddress.Parse("10.0.0.0"); - bool expected = true; - bool result = IPNetwork2.IsIANAReserved(ipaddress); - - Assert.AreEqual(expected, result, "IANA"); - } - - [TestMethod] - public void TestIANA3() - { - var ipaddress = IPAddress.Parse("172.17.10.10"); - bool expected = true; - bool result = IPNetwork2.IsIANAReserved(ipaddress); - - Assert.AreEqual(expected, result, "IANA"); - } - - [TestMethod] - public void TestIANA4() - { - var ipnetwork = IPNetwork2.Parse("192.168.66.66/24"); - bool expected = true; - bool result = ipnetwork.IsIANAReserved(); - - Assert.AreEqual(expected, result, "IANA"); - } - - [TestMethod] - public void TestIANA5() - { - var ipnetwork = IPNetwork2.Parse("10.10.10/18"); - bool expected = true; - bool result = ipnetwork.IsIANAReserved(); - - Assert.AreEqual(expected, result, "IANA"); - } - - [TestMethod] - public void TestIANA6() - { - var ipnetwork = IPNetwork2.Parse("172.31.10.10/24"); - bool expected = true; - bool result = ipnetwork.IsIANAReserved(); - - Assert.AreEqual(expected, result, "IANA"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestIANA7() - { - IPAddress ipaddress = null; - IPNetwork2.IsIANAReserved(ipaddress); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestIANA8() - { - IPNetwork2 ipnetwork = null; -#pragma warning disable 0618 - bool result = IPNetwork2.IsIANAReserved(ipnetwork); -#pragma warning restore 0618 - } - - [TestMethod] - public void TestIANABlk1() - { - IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; -#pragma warning disable 0618 - bool result = IPNetwork2.IsIANAReserved(ipnetwork); -#pragma warning restore 0618 - Assert.IsTrue(result, "result"); - } - - [TestMethod] - public void TestIANA9() - { - var ipaddress = IPAddress.Parse("1.2.3.4"); - bool expected = false; - bool result = IPNetwork2.IsIANAReserved(ipaddress); - - Assert.AreEqual(expected, result, "IANA"); - } - - [TestMethod] - public void TestIANA10() - { - var ipnetwork = IPNetwork2.Parse("172.16.0.0/8"); - bool expected = false; - bool result = ipnetwork.IsIANAReserved(); - - Assert.AreEqual(expected, result, "IANA"); - } - - [TestMethod] - public void TestIANA11() - { - var ipnetwork = IPNetwork2.Parse("192.168.15.1/8"); - bool expected = false; - bool result = ipnetwork.IsIANAReserved(); - - Assert.AreEqual(expected, result, "IANA"); - } - #endregion - - #region ToString - - [TestMethod] - public void TestToString() - { - var ipnetwork = IPNetwork2.Parse("192.168.15.1/8"); - string expected = "192.0.0.0/8"; - string result = ipnetwork.ToString(); - - Assert.AreEqual(expected, result, "ToString"); - } - - [TestMethod] - public void TestToString1() - { - var ipnetwork = IPNetwork2.Parse("192.168.15.1/9"); - string expected = "192.128.0.0/9"; - string result = ipnetwork.ToString(); - - Assert.AreEqual(expected, result, "ToString"); - } - - [TestMethod] - public void TestToString2() - { - var ipnetwork = IPNetwork2.Parse("192.168.15.1/10"); - string expected = "192.128.0.0/10"; - string result = ipnetwork.ToString(); - - Assert.AreEqual(expected, result, "ToString"); - } - - [TestMethod] - public void TestToString3() - { - var ipnetwork = IPNetwork2.Parse("192.168.15.1/11"); - string expected = "192.160.0.0/11"; - string result = ipnetwork.ToString(); - - Assert.AreEqual(expected, result, "ToString"); - } - - [TestMethod] - public void TestToString4() - { - var ipnetwork = IPNetwork2.Parse("192.168.15.1/12"); - string expected = "192.160.0.0/12"; - string result = ipnetwork.ToString(); - - Assert.AreEqual(expected, result, "ToString"); - } - - [TestMethod] - public void TestToString5() - { - var ipnetwork = IPNetwork2.Parse("192.168.15.1/13"); - string expected = "192.168.0.0/13"; - string result = ipnetwork.ToString(); - - Assert.AreEqual(expected, result, "ToString"); - } - - [TestMethod] - public void TestToString6() - { - var ipnetwork = IPNetwork2.Parse("192.168.15.1/14"); - string expected = "192.168.0.0/14"; - string result = ipnetwork.ToString(); - - Assert.AreEqual(expected, result, "ToString"); - } - - [TestMethod] - public void TestToString7() - { - var ipnetwork = IPNetwork2.Parse("192.168.15.1/15"); - string expected = "192.168.0.0/15"; - string result = ipnetwork.ToString(); - - Assert.AreEqual(expected, result, "ToString"); - } - - [TestMethod] - public void TestToString8() - { - var ipnetwork = IPNetwork2.Parse("192.168.15.1/16"); - string expected = "192.168.0.0/16"; - string result = ipnetwork.ToString(); - - Assert.AreEqual(expected, result, "ToString"); - } - - #endregion - - #region Subnet - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestSubnet1() - { - IPNetwork2 ipnetwork = null; - byte cidr = 9; - -#pragma warning disable 0618 - IPNetworkCollection result = IPNetwork2.Subnet(ipnetwork, cidr); -#pragma warning restore 0618 - } - - [TestMethod] - public void TestSubnetStatic1() - { - IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; - byte cidr = 9; - -#pragma warning disable 0618 - IPNetworkCollection result = IPNetwork2.Subnet(ipnetwork, cidr); -#pragma warning restore 0618 - } - - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void TestSubnet3() - { - IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; - byte cidr = 55; - - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestSubnet4() - { - IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; - byte cidr = 1; - - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - } - - [TestMethod] - public void TestSubnet5() - { - IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; - byte cidr = 9; - - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(2, subnets.Count, "count"); - Assert.AreEqual("10.0.0.0/9", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("10.128.0.0/9", subnets[1].ToString(), "subnet2"); - } - - [TestMethod] - public void TestSubnet6() - { - IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; - byte cidr = 20; - - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(16, subnets.Count, "count"); - Assert.AreEqual("192.168.0.0/20", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("192.168.16.0/20", subnets[1].ToString(), "subnet2"); - Assert.AreEqual("192.168.32.0/20", subnets[2].ToString(), "subnet3"); - Assert.AreEqual("192.168.48.0/20", subnets[3].ToString(), "subnet4"); - Assert.AreEqual("192.168.64.0/20", subnets[4].ToString(), "subnet5"); - Assert.AreEqual("192.168.80.0/20", subnets[5].ToString(), "subnet6"); - Assert.AreEqual("192.168.96.0/20", subnets[6].ToString(), "subnet7"); - Assert.AreEqual("192.168.112.0/20", subnets[7].ToString(), "subnet8"); - Assert.AreEqual("192.168.128.0/20", subnets[8].ToString(), "subnet9"); - Assert.AreEqual("192.168.144.0/20", subnets[9].ToString(), "subnet10"); - Assert.AreEqual("192.168.160.0/20", subnets[10].ToString(), "subnet11"); - Assert.AreEqual("192.168.176.0/20", subnets[11].ToString(), "subnet12"); - Assert.AreEqual("192.168.192.0/20", subnets[12].ToString(), "subnet13"); - Assert.AreEqual("192.168.208.0/20", subnets[13].ToString(), "subnet14"); - Assert.AreEqual("192.168.224.0/20", subnets[14].ToString(), "subnet15"); - Assert.AreEqual("192.168.240.0/20", subnets[15].ToString(), "subnet16"); - } - - [TestMethod] - public void TestSubnet7() - { - IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; - byte cidr = 24; - - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(256, subnets.Count, "count"); - Assert.AreEqual("192.168.0.0/24", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("192.168.255.0/24", subnets[255].ToString(), "subnet16"); - } - - [TestMethod] - public void TestSubnet8() - { - IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; - byte cidr = 24; - - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(256, subnets.Count, "count"); - Assert.AreEqual("192.168.0.0/24", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("192.168.255.0/24", subnets[255].ToString(), "subnet256"); - } - - [TestMethod] - public void TestSubnet9() - { - var ipnetwork = IPNetwork2.Parse("192.168.0.0/24"); - byte cidr = 32; - - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(256, subnets.Count, "count"); - Assert.AreEqual("192.168.0.0/32", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("192.168.0.255/32", subnets[255].ToString(), "subnet256"); - } - - [TestMethod] - public void TestSubnet_Example8() - { - var wholeInternet = IPNetwork2.Parse("0.0.0.0/0"); - byte newCidr = 2; - IPNetworkCollection subneted = wholeInternet.Subnet(newCidr); - - Console.WriteLine("{0} was subnetted into {1} subnets", wholeInternet, subneted.Count); - Console.WriteLine("First: {0}", subneted[0]); - Console.WriteLine("Last : {0}", subneted[subneted.Count - 1]); - Console.WriteLine("All :"); - - foreach (IPNetwork2 ipnetwork in subneted) - { - Console.WriteLine("{0}", ipnetwork); - } - } - - [TestMethod] - public void TestSubnet10() - { - var ipnetwork = IPNetwork2.Parse("0.0.0.0/0"); - byte cidr = 32; - - // Here I spawm a OOM dragon ! beware of the beast ! - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - Assert.AreEqual(4294967296, subnets.Count, "count"); - Assert.AreEqual("0.0.0.0/32", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("255.255.255.255/32", subnets[4294967295].ToString(), "subnet256"); - } - - [TestMethod] - public void TestSubnet12() - { - IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; - byte cidr = 20; - int i = -1; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - foreach (IPNetwork2 ipn in subnets) - { - i++; - Assert.AreEqual(subnets[i], ipn, "subnet"); - } - } - - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void TestSubnet13() - { - IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; - byte cidr = 20; - IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - IPNetwork2 error = subnets[1000]; - } - - #endregion - - #region TrySubnet - - [TestMethod] - public void TestInternalSubnet1() - { - IPNetworkCollection subnets = null; - IPNetwork2.InternalSubnet(true, null, 0, out subnets); - Assert.AreEqual(null, subnets, "subnets"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestInternalSubnet2() - { - IPNetworkCollection subnets = null; - IPNetwork2.InternalSubnet(false, null, 0, out subnets); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestTrySubnet1() - { - IPNetwork2 ipnetwork = null; - byte cidr = 9; - - IPNetworkCollection subnets = null; -#pragma warning disable 0618 - bool subnetted = IPNetwork2.TrySubnet(ipnetwork, cidr, out subnets); -#pragma warning restore 0618 - } - - [TestMethod] - public void TestTrySubnetStatic1() - { - IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; - byte cidr = 9; - - IPNetworkCollection subnets = null; -#pragma warning disable 0618 - bool subnetted = IPNetwork2.TrySubnet(ipnetwork, cidr, out subnets); -#pragma warning restore 0618 - } - - [TestMethod] - public void TestTrySubnet3() - { - IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; - byte cidr = 55; - - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - - Assert.AreEqual(false, subnetted, "subnetted"); - } - - [TestMethod] - public void TestTrySubnet4() - { - IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; - byte cidr = 1; - - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - - Assert.AreEqual(false, subnetted, "subnetted"); - } - - [TestMethod] - public void TestTrySubnet5() - { - IPNetwork2 ipnetwork = IPNetwork2.IANA_ABLK_RESERVED1; - byte cidr = 9; - - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - - Assert.AreEqual(true, subnetted, "subnetted"); - Assert.AreEqual(2, subnets.Count, "count"); - Assert.AreEqual("10.0.0.0/9", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("10.128.0.0/9", subnets[1].ToString(), "subnet2"); - } - - [TestMethod] - public void TestTrySubnet6() - { - IPNetwork2 ipnetwork = IPNetwork2.IANA_CBLK_RESERVED1; - byte cidr = 20; - - IPNetworkCollection subnets = null; - bool subnetted = ipnetwork.TrySubnet(cidr, out subnets); - - Assert.AreEqual(true, subnetted, "subnetted"); - Assert.AreEqual(16, subnets.Count, "count"); - Assert.AreEqual("192.168.0.0/20", subnets[0].ToString(), "subnet1"); - Assert.AreEqual("192.168.16.0/20", subnets[1].ToString(), "subnet2"); - Assert.AreEqual("192.168.32.0/20", subnets[2].ToString(), "subnet3"); - Assert.AreEqual("192.168.48.0/20", subnets[3].ToString(), "subnet4"); - Assert.AreEqual("192.168.64.0/20", subnets[4].ToString(), "subnet5"); - Assert.AreEqual("192.168.80.0/20", subnets[5].ToString(), "subnet6"); - Assert.AreEqual("192.168.96.0/20", subnets[6].ToString(), "subnet7"); - Assert.AreEqual("192.168.112.0/20", subnets[7].ToString(), "subnet8"); - Assert.AreEqual("192.168.128.0/20", subnets[8].ToString(), "subnet9"); - Assert.AreEqual("192.168.144.0/20", subnets[9].ToString(), "subnet10"); - Assert.AreEqual("192.168.160.0/20", subnets[10].ToString(), "subnet11"); - Assert.AreEqual("192.168.176.0/20", subnets[11].ToString(), "subnet12"); - Assert.AreEqual("192.168.192.0/20", subnets[12].ToString(), "subnet13"); - Assert.AreEqual("192.168.208.0/20", subnets[13].ToString(), "subnet14"); - Assert.AreEqual("192.168.224.0/20", subnets[14].ToString(), "subnet15"); - Assert.AreEqual("192.168.240.0/20", subnets[15].ToString(), "subnet16"); - } - - #endregion - - #region Supernet - - [TestMethod] - public void TestSupernetInternal1() - { - IPNetwork2 result; - IPNetwork2.InternalSupernet(true, null, null, out result); - - Assert.AreEqual(null, result, "supernet"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestSupernetInternal2() - { - IPNetwork2 result; - IPNetwork2.InternalSupernet(false, null, null, out result); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - - public void Issue33__TestSupernet__Bug_or_default_behavior() - { - var network1 = IPNetwork2.Parse("192.168.0.0/24"); - var network2 = IPNetwork2.Parse("192.168.2.0/24"); - var expected = IPNetwork2.Parse("192.168.0.0/23"); - IPNetwork2 supernet = network1.Supernet(network2); - - Assert.AreEqual(expected, supernet, "supernet"); - } - - [TestMethod] - public void Issue33__TestWideSubnet__Bug_or_default_behavior() - { - var network1 = IPNetwork2.Parse("192.168.0.0/24"); - var network2 = IPNetwork2.Parse("192.168.2.0/24"); - var expected = IPNetwork2.Parse("192.168.0.0/22"); - var widenetwork = IPNetwork2.WideSubnet(new[] { network1, network2 }); - - Assert.AreEqual(expected, widenetwork, "widesubnet"); - } - - [TestMethod] - public void Issue162__Test_IPrangeToCIDRnotation() - { - string network1 = "172.64.0.0"; - string network2 = "172.71.255.255"; - - var final = IPNetwork2.WideSubnet(network1, network2); - string result = final.ToString(); - - string expected = "172.64.0.0/13"; - Assert.AreEqual(expected, result, "Supernet"); - } - - [TestMethod] - public void TestSupernet1() - { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.1.1/24"); - var expected = IPNetwork2.Parse("192.168.0.0/23"); - IPNetwork2 supernet = network1.Supernet(network2); - - Assert.AreEqual(expected, supernet, "supernet"); - } - - [TestMethod] - [ExpectedException(typeof(NullReferenceException))] - public void TestSupernet2() - { - IPNetwork2 network1 = null; - var network2 = IPNetwork2.Parse("192.168.1.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestSupernet3() - { - var network1 = IPNetwork2.Parse("192.168.1.1/24"); - IPNetwork2 network2 = null; - IPNetwork2 supernet = network1.Supernet(network2); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestSupernet4() - { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.1.1/25"); - IPNetwork2 supernet = network1.Supernet(network2); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void TestSupernet5() - { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.5.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); - } - - [TestMethod] - public void TestSupernet6() - { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.0.1/25"); - var expected = IPNetwork2.Parse("192.168.0.0/24"); - IPNetwork2 supernet = network1.Supernet(network2); - - Assert.AreEqual(expected, supernet, "supernet"); - } - - [TestMethod] - public void TestSupernet7() - { - var network1 = IPNetwork2.Parse("192.168.0.1/25"); - var network2 = IPNetwork2.Parse("192.168.0.1/24"); - var expected = IPNetwork2.Parse("192.168.0.0/24"); - IPNetwork2 supernet = network1.Supernet(network2); - - Assert.AreEqual(expected, supernet, "supernet"); - } - - [TestMethod] - public void TestSupernetStatic1() - { - var network1 = IPNetwork2.Parse("192.168.0.1/25"); - var network2 = IPNetwork2.Parse("192.168.0.1/24"); - var expected = IPNetwork2.Parse("192.168.0.0/24"); -#pragma warning disable CS0618 // Type or member is obsolete - var supernet = IPNetwork2.Supernet(network1, network2); -#pragma warning restore CS0618 // Type or member is obsolete - - Assert.AreEqual(expected, supernet, "supernet"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestSupernet8() - { - var network1 = IPNetwork2.Parse("192.168.1.1/24"); - var network2 = IPNetwork2.Parse("192.168.2.1/24"); - IPNetwork2 supernet = network1.Supernet(network2); - } - - [TestMethod] - public void TestSupernet9() - { - var ipnetwork1 = IPNetwork2.Parse("200.16.0.0/24"); - var ipnetwork2 = IPNetwork2.Parse("200.16.1.0/24"); - var ipnetwork3 = IPNetwork2.Parse("200.16.2.0/24"); - var ipnetwork4 = IPNetwork2.Parse("200.16.3.0/24"); - - IPNetwork2 result = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2, ipnetwork3, ipnetwork4 })[0]; - var expected = IPNetwork2.Parse("200.16.0.0/22"); - - Assert.AreEqual(expected, result, "supernet"); - } - - [TestMethod] - public void TestSupernet10() - { - var ipnetwork1 = IPNetwork2.Parse("1.1.0.0/24"); - var ipnetwork2 = IPNetwork2.Parse("1.2.1.0/24"); - - IPNetwork2 result = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2 })[0]; - var expected = IPNetwork2.Parse("1.1.0.0/24"); - - Assert.AreEqual(expected, result, "supernet"); - } - - #endregion - - #region TrySupernet - - [TestMethod] - public void TestTrySupernet1() - { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.1.1/24"); - var supernetExpected = IPNetwork2.Parse("192.168.0.0/23"); - IPNetwork2 supernet; - bool parsed = true; - bool result = network1.TrySupernet(network2, out supernet); - - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestTrySupernet2() - { - IPNetwork2 network1 = null; - var network2 = IPNetwork2.Parse("192.168.1.1/24"); - IPNetwork2 supernet; - -#pragma warning disable 0618 - bool result = IPNetwork2.TrySupernet(network1, network2, out supernet); -#pragma warning restore 0618 - } - - [TestMethod] - public void TestTrySupernetStatic2() - { - IPNetwork2 network1 = IPNetwork2.IANA_ABLK_RESERVED1; - var network2 = IPNetwork2.Parse("192.168.1.1/24"); - IPNetwork2 supernet; - -#pragma warning disable 0618 - bool result = IPNetwork2.TrySupernet(network1, network2, out supernet); -#pragma warning restore 0618 - } - - [TestMethod] - public void TestTrySupernet3() - { - var network1 = IPNetwork2.Parse("192.168.1.1/24"); - IPNetwork2 network2 = null; - IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; - bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); - - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } - - [TestMethod] - public void TestTrySupernet4() - { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.1.1/25"); - IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; - bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); - - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } - - [TestMethod] - public void TestTrySupernet5() - { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.5.1/24"); - IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; - bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); - - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } - - [TestMethod] - public void TestTrySupernet6() - { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.0.1/25"); - var supernetExpected = IPNetwork2.Parse("192.168.0.0/24"); - IPNetwork2 supernet; - bool parsed = true; - bool result = network1.TrySupernet(network2, out supernet); - - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } - - [TestMethod] - public void TestTrySupernet7() - { - var network1 = IPNetwork2.Parse("192.168.0.1/25"); - var network2 = IPNetwork2.Parse("192.168.0.1/24"); - var supernetExpected = IPNetwork2.Parse("192.168.0.0/24"); - IPNetwork2 supernet; - bool parsed = true; - bool result = network1.TrySupernet(network2, out supernet); - - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } - - [TestMethod] - public void TestTrySupernet8() - { - var network1 = IPNetwork2.Parse("192.168.1.1/24"); - var network2 = IPNetwork2.Parse("192.168.2.1/24"); - IPNetwork2 supernetExpected = null; - IPNetwork2 supernet; - bool parsed = false; - bool result = network1.TrySupernet(network2, out supernet); - - Assert.AreEqual(supernetExpected, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } - - [TestMethod] - public void TestTrySupernet9() - { - var network1 = IPNetwork2.Parse("192.168.1.1/24"); - var network2 = IPNetwork2.Parse("192.168.2.1/24"); - IPNetwork2[] network3 = new[] { network1, network2 }; - IPNetwork2[] supernetExpected = new[] { network1, network2 }; - IPNetwork2[] supernet; - bool parsed = true; - bool result = IPNetwork2.TrySupernet(network3, out supernet); - - Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); - Assert.AreEqual(supernetExpected[1], supernet[1], "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } - - [TestMethod] - public void TestTrySupernet10() - { - var network1 = IPNetwork2.Parse("192.168.0.1/24"); - var network2 = IPNetwork2.Parse("192.168.1.1/24"); - IPNetwork2[] network3 = new[] { network1, network2 }; - IPNetwork2[] supernetExpected = new[] { IPNetwork2.Parse("192.168.0.0/23") }; - IPNetwork2[] supernet; - bool parsed = true; - bool result = IPNetwork2.TrySupernet(network3, out supernet); - - Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } - - [TestMethod] - public void TestTrySupernet11() - { - IPNetwork2[] network3 = null; - IPNetwork2[] supernetExpected = new[] { IPNetwork2.Parse("192.168.0.0/23") }; - IPNetwork2[] supernet; - bool parsed = false; - bool result = IPNetwork2.TrySupernet(network3, out supernet); - - Assert.AreEqual(null, supernet, "supernet"); - Assert.AreEqual(parsed, result, "parsed"); - } - - #endregion - - #region SupernetArray - - [TestMethod] - public void TestTrySupernetArray() - { - var ipnetwork1 = IPNetwork2.Parse("192.168.0.0/24"); - var ipnetwork2 = IPNetwork2.Parse("192.168.1.0/24"); - var ipnetwork3 = IPNetwork2.Parse("192.168.2.0/24"); - var ipnetwork4 = IPNetwork2.Parse("192.168.3.0/24"); - - IPNetwork2[] ipnetworks = { ipnetwork1, ipnetwork2, ipnetwork3, ipnetwork4 }; - IPNetwork2[] expected = { IPNetwork2.Parse("192.168.0.0/22") }; - - IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); - - Assert.AreEqual(expected.Length, result.Length, "supernetarray"); - Assert.AreEqual(expected[0], expected[0], "suppernet"); - } - - [TestMethod] - public void TestTrySupernetArray1() - { - IPNetwork2[] ipnetworks = { }; - IPNetwork2[] expected = { }; - - IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); - - Assert.AreEqual(expected.Length, result.Length, "supernetarray"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestTrySupernetArray2() - { - IPNetwork2[] ipnetworks = null; - IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); - } - - [TestMethod] - public void TestTrySupernetArray3() - { - IPNetwork2 ipnetwork1 = null; - IPNetwork2 ipnetwork2 = null; - IPNetwork2 ipnetwork3 = null; - IPNetwork2 ipnetwork4 = null; - - IPNetwork2[] ipnetworks = { ipnetwork1, ipnetwork2, ipnetwork3, ipnetwork4 }; - IPNetwork2[] expected = { }; - - IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); - - Assert.AreEqual(expected.Length, result.Length, "supernetarray"); - } - - [TestMethod] - public void TestTrySupernetArray4() - { - var ipnetwork1 = IPNetwork2.Parse("192.168.0.0/24"); - IPNetworkCollection subnetted = ipnetwork1.Subnet(32); - IPNetwork2[] ipnetworks = subnetted.ToArray(); - Assert.AreEqual(256, ipnetworks.Length, "subnet"); - - IPNetwork2[] expected = { IPNetwork2.Parse("192.168.0.0/24") }; - - IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); - - Assert.AreEqual(expected.Length, result.Length, "supernetarray"); - Assert.AreEqual(expected[0], ipnetwork1, "suppernet"); - } - - [TestMethod] - public void TestTrySupernetArray5() - { - var ipnetwork1 = IPNetwork2.Parse("192.168.0.0/16"); - IPNetworkCollection subnetted = ipnetwork1.Subnet(24); - IPNetwork2[] ipnetworks = subnetted.ToArray(); - Assert.AreEqual(256, ipnetworks.Length, "subnet"); - - IPNetwork2[] expected = { IPNetwork2.Parse("192.168.0.0/16") }; - - IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); - - Assert.AreEqual(expected.Length, result.Length, "supernetarray"); - Assert.AreEqual(expected[0], ipnetwork1, "suppernet"); - } - - [TestMethod] - public void TestTrySupernetArray6() - { - var ipnetwork1 = IPNetwork2.Parse("192.168.0.0/8"); - IPNetworkCollection subnetted = ipnetwork1.Subnet(24); - IPNetwork2[] ipnetworks = subnetted.ToArray(); - Assert.AreEqual(65536, ipnetworks.Length, "subnet"); - - IPNetwork2[] expected = { IPNetwork2.Parse("192.0.0.0/8") }; - - IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); - - Assert.AreEqual(expected.Length, result.Length, "supernetarray"); - Assert.AreEqual(expected[0], ipnetwork1, "suppernet"); - } - - [TestMethod] - public void TestTrySupernetArray7() - { - IPNetwork2[] ipnetworks = - { - IPNetwork2.Parse("10.0.2.2/24"), - IPNetwork2.Parse("192.168.0.0/24"), - IPNetwork2.Parse("192.168.1.0/24"), - IPNetwork2.Parse("192.168.2.0/24"), - IPNetwork2.Parse("10.0.1.1/24"), - IPNetwork2.Parse("192.168.3.0/24"), - }; - - IPNetwork2[] expected = - { - IPNetwork2.Parse("10.0.1.0/24"), - IPNetwork2.Parse("10.0.2.0/24"), - IPNetwork2.Parse("192.168.0/22"), - }; - - IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); - - Assert.AreEqual(expected.Length, result.Length, "supernetarray"); - Assert.AreEqual(expected[0], result[0], "suppernet"); - Assert.AreEqual(expected[1], result[1], "suppernet1"); - Assert.AreEqual(expected[2], result[2], "suppernet2"); - } - - [TestMethod] - public void TestTrySupernetArray8() - { - IPNetwork2[] ipnetworks = - { - IPNetwork2.Parse("10.0.2.2/24"), - IPNetwork2.Parse("192.168.0.0/24"), - IPNetwork2.Parse("192.168.1.0/24"), - IPNetwork2.Parse("192.168.2.0/24"), - IPNetwork2.Parse("10.0.1.1/24"), - IPNetwork2.Parse("192.168.3.0/24"), - IPNetwork2.Parse("10.6.6.6/8"), - }; - - IPNetwork2[] expected = - { - IPNetwork2.Parse("10.0.0.0/8"), - IPNetwork2.Parse("192.168.0/22"), - }; - - IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); - - Assert.AreEqual(expected.Length, result.Length, "supernetarray"); - Assert.AreEqual(expected[0], result[0], "suppernet"); - Assert.AreEqual(expected[1], result[1], "suppernet1"); - } - - [TestMethod] - public void TestTrySupernetArray9() - { - IPNetwork2[] ipnetworks = - { - IPNetwork2.Parse("10.0.2.2/24"), - IPNetwork2.Parse("192.168.0.0/24"), - IPNetwork2.Parse("192.168.1.0/24"), - IPNetwork2.Parse("192.168.2.0/24"), - IPNetwork2.Parse("10.0.1.1/24"), - IPNetwork2.Parse("192.168.3.0/24"), - IPNetwork2.Parse("10.6.6.6/8"), - IPNetwork2.Parse("11.6.6.6/8"), - IPNetwork2.Parse("12.6.6.6/8"), - }; - - IPNetwork2[] expected = - { - IPNetwork2.Parse("10.0.0.0/7"), - IPNetwork2.Parse("12.0.0.0/8"), - IPNetwork2.Parse("192.168.0/22"), - }; - - IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); - - Assert.AreEqual(expected.Length, result.Length, "supernetarray"); - Assert.AreEqual(expected[0], result[0], "suppernet"); - Assert.AreEqual(expected[1], result[1], "suppernet1"); - Assert.AreEqual(expected[2], result[2], "suppernet2"); - } - - [TestMethod] - public void TestTrySupernetArray10() - { - IPNetwork2[] ipnetworks = - { - IPNetwork2.Parse("10.0.2.2/24"), - IPNetwork2.Parse("10.0.2.2/23"), - }; - - IPNetwork2[] expected = - { - IPNetwork2.Parse("10.0.2.2/23"), - }; - - IPNetwork2[] result = IPNetwork2.Supernet(ipnetworks); - - Assert.AreEqual(expected.Length, result.Length, "supernetarray"); - Assert.AreEqual(expected[0], result[0], "suppernet"); - } - - #endregion - - #region WideSubnet - - [TestMethod] - public void TestWideSubnet1() - { - string start = "192.168.168.0"; - string end = "192.168.168.255"; - var expected = IPNetwork2.Parse("192.168.168.0/24"); - - var wideSubnet = IPNetwork2.WideSubnet(start, end); - Assert.AreEqual(expected, wideSubnet, "wideSubnet"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestWideSubnet2() - { - string start = null; - string end = "192.168.168.255"; - - var wideSubnet = IPNetwork2.WideSubnet(start, end); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestWideSubnet3() - { - string start = "192.168.168.255"; - string end = null; - - var wideSubnet = IPNetwork2.WideSubnet(start, end); - } - - [TestMethod] - public void TestWideSubnet4() - { - string start = "192.168.168.255"; - string end = "192.168.168.0"; - - var expected = IPNetwork2.Parse("192.168.168.0/24"); - - var wideSubnet = IPNetwork2.WideSubnet(start, end); - Assert.AreEqual(expected, wideSubnet, "wideSubnet"); - } - - [TestMethod] - public void TestWideSubnet7() - { - string start = "0.0.0.0"; - string end = "0.255.255.255"; - - var expected = IPNetwork2.Parse("0.0.0.0/8"); - - var wideSubnet = IPNetwork2.WideSubnet(start, end); - Assert.AreEqual(expected, wideSubnet, "wideSubnet"); - } - - [TestMethod] - public void TestWideSubnet8() - { - string start = "1.2.3.4"; - string end = "5.6.7.8"; - - var expected = IPNetwork2.Parse("0.0.0.0/5"); - - var wideSubnet = IPNetwork2.WideSubnet(start, end); - Assert.AreEqual(expected, wideSubnet, "wideSubnet"); - } - - [TestMethod] - public void TestWideSubnet9() - { - string start = "200.16.0.0/24"; - string end = "200.16.3.0/24"; - string firt = IPNetwork2.Parse(start).FirstUsable.ToString(); - string last = IPNetwork2.Parse(end).LastUsable.ToString(); - - var expected = IPNetwork2.Parse("200.16.0.0/22"); - - var wideSubnet = IPNetwork2.WideSubnet(firt, last); - Assert.AreEqual(expected, wideSubnet, "wideSubnet"); - } - - [TestMethod] - public void TestWideSubnet10() - { - string start = "200.16.0.0"; - string end = "200.16.3.255"; - - var expected = IPNetwork2.Parse("200.16.0.0/22"); - - var wideSubnet = IPNetwork2.WideSubnet(start, end); - Assert.AreEqual(expected, wideSubnet, "wideSubnet"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestWideSubnetInvalid1() - { - string start = "invalid"; - string end = "5.6.7.8"; - - var wideSubnet = IPNetwork2.WideSubnet(start, end); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestWideSubnetInvalid2() - { - string start = "1.2.3.4"; - string end = "invalid"; - - var wideSubnet = IPNetwork2.WideSubnet(start, end); - } - - [TestMethod] - [ExpectedException(typeof(NotSupportedException))] - public void TestWideSubnetMixed1() - { - string start = "1.2.3.4"; - string end = "2001:0db8::"; - - var wideSubnet = IPNetwork2.WideSubnet(start, end); - } - - #endregion - - #region TryGuessCidr - - [TestMethod] - public void TestTryGuessCidrNull() - { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr(null, out cidr); - - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(0, cidr, "cidr"); - } - - [TestMethod] - public void TestTryGuessCidrA() - { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("10.0.0.0", out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(8, cidr, "cidr"); - } - - [TestMethod] - public void TestTryGuessCidrB() - { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("172.0.0.0", out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(16, cidr, "cidr"); - } - - [TestMethod] - public void TestTryGuessCidrC() - { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("192.0.0.0", out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(24, cidr, "cidr"); - } - - [TestMethod] - public void TestTryGuessCidrD() - { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("224.0.0.0", out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(24, cidr, "cidr"); - } - - [TestMethod] - public void TestTryGuessCidrE() - { - byte cidr; - bool parsed = IPNetwork2.TryGuessCidr("240.0.0.0", out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(24, cidr, "cidr"); - } - - #endregion - - #region Print - - [TestMethod] - public void Print() - { - var ipn = IPNetwork2.Parse("0.0.0.0/0"); - string print = ipn.Print().Replace("\r", string.Empty); - string expected = @"IPNetwork : 0.0.0.0/0 -Network : 0.0.0.0 -Netmask : 0.0.0.0 -Cidr : 0 -Broadcast : 255.255.255.255 -FirstUsable : 0.0.0.1 -LastUsable : 255.255.255.254 -Usable : 4294967294 -".Replace("\r", string.Empty); - - Assert.AreEqual(expected, print, "Print"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void PrintNull() - { - IPNetwork2 ipn = null; -#pragma warning disable 0618 - string print = IPNetwork2.Print(ipn); -#pragma warning restore 0618 - } - - [TestMethod] - public void PrintStatic() - { - IPNetwork2 ipn = IPNetwork2.IANA_ABLK_RESERVED1; -#pragma warning disable 0618 - string print = IPNetwork2.Print(ipn); -#pragma warning restore 0618 - } - - #endregion - - #region Sort - - [TestMethod] - public void TestSort1() - { - string[] ips = new[] { "1.1.1.1", "255.255.255.255", "2.2.2.2", "0.0.0.0" }; - var ipns = new List(); - foreach (string ip in ips) - { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) - { - ipns.Add(ipn); - } - } - - ipns.Sort(); - Assert.AreEqual("0.0.0.0/32", ipns[0].ToString(), "0"); - Assert.AreEqual("1.1.1.1/32", ipns[1].ToString(), "1"); - Assert.AreEqual("2.2.2.2/32", ipns[2].ToString(), "2"); - Assert.AreEqual("255.255.255.255/32", ipns[3].ToString(), "3"); - } - - [TestMethod] - public void TestSort2() - { - string[] ips = new[] { "0.0.0.100/32", "0.0.0.0/24" }; - var ipns = new List(); - foreach (string ip in ips) - { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, out ipn)) - { - ipns.Add(ipn); - } - } - - ipns.Sort(); - Assert.AreEqual("0.0.0.0/24", ipns[0].ToString(), "0"); - Assert.AreEqual("0.0.0.100/32", ipns[1].ToString(), "1"); - } - - #endregion - - #region TryWideSubnet - - [TestMethod] - public void TryWideSubnet1() - { - string[] ips = new[] { "1.1.1.1", "255.255.255.255", "2.2.2.2", "0.0.0.0" }; - var ipns = new List(); - foreach (string ip in ips) - { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) - { - ipns.Add(ipn); - } - } - - IPNetwork2 ipnetwork = null; - bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out ipnetwork); - Assert.AreEqual(true, wide, "wide"); - Assert.AreEqual("0.0.0.0/0", ipnetwork.ToString(), "ipnetwork"); - } - - [TestMethod] - public void TryWideSubnet2() - { - string[] ips = new[] { "1.1.1.1", "10.0.0.0", "2.2.2.2", "0.0.0.0" }; - var ipns = new List(); - foreach (string ip in ips) - { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) - { - ipns.Add(ipn); - } - } - - IPNetwork2 ipnetwork = null; - bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out ipnetwork); - Assert.AreEqual(true, wide, "wide"); - Assert.AreEqual("0.0.0.0/4", ipnetwork.ToString(), "ipnetwork"); - } - - [TestMethod] - public void TryWideSubnet3() - { - string[] ips = new[] { "a", "b", "c", "d" }; - var ipns = new List(); - foreach (string ip in ips) - { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) - { - ipns.Add(ipn); - } - } - - IPNetwork2 ipnetwork = null; - bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out ipnetwork); - Assert.AreEqual(false, wide, "wide"); - } - - [TestMethod] - public void TryWideSubnet4() - { - string[] ips = new[] { "a", "b", "1.1.1.1", "d" }; - var ipns = new List(); - foreach (string ip in ips) - { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) - { - ipns.Add(ipn); - } - } - - IPNetwork2 ipnetwork = null; - bool wide = IPNetwork2.TryWideSubnet(ipns.ToArray(), out ipnetwork); - Assert.AreEqual(true, wide, "wide"); - Assert.AreEqual("1.1.1.1/32", ipnetwork.ToString(), "ipnetwork"); - } - - [TestMethod] - public void TryWideSubnetNull() - { - IPNetwork2 ipnetwork = null; - bool wide = IPNetwork2.TryWideSubnet(null, out ipnetwork); - Assert.AreEqual(false, wide, "wide"); - } - - #endregion - - #region WideSubnet - - [TestMethod] - public void WideSubnet1() - { - string[] ips = new[] { "1.1.1.1", "255.255.255.255", "2.2.2.2", "0.0.0.0" }; - var ipns = new List(); - foreach (string ip in ips) - { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) - { - ipns.Add(ipn); - } - } - - var ipnetwork = IPNetwork2.WideSubnet(ipns.ToArray()); - Assert.AreEqual("0.0.0.0/0", ipnetwork.ToString(), "ipnetwork"); - } - - [TestMethod] - public void WideSubnet2() - { - string[] ips = new[] { "1.1.1.1", "10.0.0.0", "2.2.2.2", "0.0.0.0" }; - var ipns = new List(); - foreach (string ip in ips) - { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) - { - ipns.Add(ipn); - } - } - - var ipnetwork = IPNetwork2.WideSubnet(ipns.ToArray()); - Assert.AreEqual("0.0.0.0/4", ipnetwork.ToString(), "ipnetwork"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void WideSubnetNull() - { - var ipnetwork = IPNetwork2.WideSubnet(null); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void WideSubnetNull2() - { - string[] ips = new[] { "a", "b", "e", "d" }; - var ipns = new List(); - foreach (string ip in ips) - { - IPNetwork2 ipn; - if (IPNetwork2.TryParse(ip, 32, out ipn)) - { - ipns.Add(ipn); - } - } - - var ipnetwork = IPNetwork2.WideSubnet(ipns.ToArray()); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void WideSubnetMixed() - { - var ipns = new List - { - IPNetwork2.IANA_ABLK_RESERVED1, - IPNetwork2.Parse("2001:0db8::/64"), - }; - var ipnetwork = IPNetwork2.WideSubnet(ipns.ToArray()); - } - - #endregion - - #region resize - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestResize1() - { - byte[] resut = IPNetwork2.Resize(new byte[33], Sockets.AddressFamily.InterNetwork); - } - - #endregion - - #region Count - [TestMethod] - public void TestTotal32() - { - var network = IPNetwork2.Parse("0.0.0.0/32"); - int total = 1; - Assert.AreEqual(total, network.Total, "Total"); - } - - [TestMethod] - public void TestTotal31() - { - var network = IPNetwork2.Parse("0.0.0.0/31"); - int total = 2; - Assert.AreEqual(total, network.Total, "Total"); - } - - [TestMethod] - public void TestTotal30() - { - var network = IPNetwork2.Parse("0.0.0.0/30"); - int total = 4; - Assert.AreEqual(total, network.Total, "Total"); - } - - [TestMethod] - public void TestTotal24() - { - var network = IPNetwork2.Parse("0.0.0.0/24"); - int total = 256; - Assert.AreEqual(total, network.Total, "Total"); - } - - [TestMethod] - public void TestTotal16() - { - var network = IPNetwork2.Parse("0.0.0.0/16"); - int total = 65536; - Assert.AreEqual(total, network.Total, "Total"); - } - - [TestMethod] - public void TestTotal8() - { - var network = IPNetwork2.Parse("0.0.0.0/8"); - int total = 16777216; - Assert.AreEqual(total, network.Total, "Total"); - } - - [TestMethod] - public void TestTotal0() - { - var network = IPNetwork2.Parse("0.0.0.0/0"); - long total = 4294967296; - Assert.AreEqual(total, network.Total, "Total"); - } - - #endregion - - #region Usable - - [TestMethod] - public void Usable32() - { - var network = IPNetwork2.Parse("0.0.0.0/32"); - uint usable = 0; - Assert.AreEqual(usable, network.Usable, "Usable"); - } - - [TestMethod] - public void Usable31() - { - var network = IPNetwork2.Parse("0.0.0.0/31"); - uint usable = 0; - Assert.AreEqual(usable, network.Usable, "Usable"); - } - - [TestMethod] - public void Usable30() - { - var network = IPNetwork2.Parse("0.0.0.0/30"); - uint usable = 2; - Assert.AreEqual(usable, network.Usable, "Usable"); - } - - [TestMethod] - public void Usable24() - { - var network = IPNetwork2.Parse("0.0.0.0/24"); - uint usable = 254; - Assert.AreEqual(usable, network.Usable, "Usable"); - } - - [TestMethod] - public void Usable16() - { - var network = IPNetwork2.Parse("0.0.0.0/16"); - uint usable = 65534; - Assert.AreEqual(usable, network.Usable, "Usable"); - } - - [TestMethod] - public void Usable8() - { - var network = IPNetwork2.Parse("0.0.0.0/8"); - uint usable = 16777214; - Assert.AreEqual(usable, network.Usable, "Usable"); - } - - [TestMethod] - public void Usable0() - { - var network = IPNetwork2.Parse("0.0.0.0/0"); - uint usable = 4294967294; - Assert.AreEqual(usable, network.Usable, "Usable"); - } - - #endregion - - #region TryParseCidr - - [TestMethod] - public void TryParseCidr1() - { - string sidr = "0"; - byte? cidr; - byte? result = 0; - bool parsed = IPNetwork2.TryParseCidr(sidr, Sockets.AddressFamily.InterNetwork, out cidr); - - Assert.AreEqual(true, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } - - [TestMethod] - public void TryParseCidr2() - { - string sidr = "sadsd"; - byte? cidr; - byte? result = null; - - bool parsed = IPNetwork2.TryParseCidr(sidr, Sockets.AddressFamily.InterNetwork, out cidr); - - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } - - [TestMethod] - public void TryParseCidr3() - { - string sidr = "33"; - byte? cidr; - byte? result = null; - - bool parsed = IPNetwork2.TryParseCidr(sidr, Sockets.AddressFamily.InterNetwork, out cidr); - - Assert.AreEqual(false, parsed, "parsed"); - Assert.AreEqual(result, cidr, "cidr"); - } - - #endregion - - #region Compare - - [TestMethod] - public void TestCompareTo1() - { - var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); - var ipn2 = IPNetwork2.Parse("10.0.0.2/16"); - - int comparison = ipn1.CompareTo(ipn2); - - Assert.AreEqual(0, comparison, "compare"); - } - - [TestMethod] - public void TestCompareTo2() - { - var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); - object ipn2 = (object)IPNetwork2.Parse("10.0.0.2/16"); - - int comparison = ipn1.CompareTo(ipn2); - - Assert.AreEqual(0, comparison, "compare"); - } - - [TestMethod] - public void TestCompareTo3() - { - var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); - object ipn2 = null; - - int comparison = ipn1.CompareTo(ipn2); - - Assert.AreEqual(1, comparison, "compare"); - } - - [TestMethod] - public void TestCompareTo4() - { - var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); - IPNetwork2 ipn2 = null; - - int comparison = ipn1.CompareTo(ipn2); - - Assert.AreEqual(1, comparison, "compare"); - } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestCompareTo5() - { - var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); - string ipn2 = string.Empty; - - int comparison = ipn1.CompareTo(ipn2); - } - - [TestMethod] - public void TestCompareTo6() - { - var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); - int comparison = ipn1.CompareTo(ipn1); - - Assert.AreEqual(0, comparison, "compare"); - } - - [TestMethod] - public void TestCompare1() - { - var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); - int comparison = IPNetwork2.Compare(null, ipn1); - - Assert.AreEqual(-1, comparison, "compare"); - } - - [TestMethod] - public void TestCompare2() - { - var ipn1 = IPNetwork2.Parse("10.0.0.1/16"); - var ipn2 = IPNetwork2.Parse("20.0.0.1/16"); - int comparison = IPNetwork2.Compare(ipn1, ipn2); - - Assert.AreEqual(-1, comparison, "compare"); - } - - #endregion - - #region Operator - - [TestMethod] - public void TestOperatorGreater1() - { - var ipn1 = IPNetwork2.Parse("10.0.0.1/32"); - var ipn2 = IPNetwork2.Parse("10.0.0.2/32"); - - bool greater = ipn1 > ipn2; - - Assert.AreEqual(false, greater, "greater"); - } - - [TestMethod] - public void TestOperatorGreater2() - { - var ipn1 = IPNetwork2.Parse("10.0.0.100/32"); - var ipn2 = IPNetwork2.Parse("10.0.0.2/32"); - - bool greater = ipn1 > ipn2; - - Assert.AreEqual(true, greater, "greater"); - } - - [TestMethod] - public void TestOperatorLower1() - { - var ipn1 = IPNetwork2.Parse("10.0.0.1/32"); - var ipn2 = IPNetwork2.Parse("10.0.0.2/32"); - - bool lower = ipn1 < ipn2; - - Assert.AreEqual(true, lower, "lower"); - } - - [TestMethod] - public void TestOperatorLower2() - { - var ipn1 = IPNetwork2.Parse("10.0.0.100/32"); - var ipn2 = IPNetwork2.Parse("10.0.0.2/32"); - - bool lower = ipn1 < ipn2; - - Assert.AreEqual(false, lower, "lower"); - } - - [TestMethod] - public void TestOperatorDifferent1() - { - var ipn1 = IPNetwork2.Parse("10.0.0.100/32"); - var ipn2 = IPNetwork2.Parse("10.0.0.2/32"); - - bool different = ipn1 != ipn2; - - Assert.AreEqual(true, different, "different"); - } - - [TestMethod] - public void TestOperatorDifferent2() - { - var ipn1 = IPNetwork2.Parse("10.0.0.1/32"); - var ipn2 = IPNetwork2.Parse("10.0.0.1/32"); - - bool different = ipn1 != ipn2; - - Assert.AreEqual(false, different, "different"); - } - - [TestMethod] - public void TestOperatorEqual1() - { - var ipn1 = IPNetwork2.Parse("10.0.0.100/32"); - var ipn2 = IPNetwork2.Parse("10.0.0.2/32"); - - bool eq = ipn1 == ipn2; - - Assert.AreEqual(false, eq, "eq"); - } - - [TestMethod] - public void TestOperatorEqual2() - { - var ipn1 = IPNetwork2.Parse("10.0.0.1/32"); - var ipn2 = IPNetwork2.Parse("10.0.0.1/32"); - - bool eq = ipn1 == ipn2; - - Assert.AreEqual(true, eq, "eq"); - } - - #endregion - } -} diff --git a/src/TestProject/IPNetworkV6UnitTest.cs b/src/TestProject/IPNetworkV6UnitTest.cs index 6df57cd7..8663b532 100644 --- a/src/TestProject/IPNetworkV6UnitTest.cs +++ b/src/TestProject/IPNetworkV6UnitTest.cs @@ -1,55 +1,52 @@ -// -// Copyright (c) IPNetwork. All rights reserved. -// - -namespace System.Net.TestProject +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject; + +[TestClass] +public class IPNetworkV6UnitTest { - using System.Numerics; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class IPNetworkV6UnitTest - { - #region Parse - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestParseIPAddressNetmaskANE8() - { + #region Parse + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestParseIPAddressNetmaskAne8() + { var ipnet = IPNetwork2.Parse("xxxx::", "xxxx::"); } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestParseIPAddressNetmaskANE9() - { + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestParseIPAddressNetmaskAne9() + { var ipnet = IPNetwork2.Parse("::", "xxxx::"); } - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestParseIPAddressNetmaskANE10() - { + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestParseIPAddressNetmaskAne10() + { var ipnet = IPNetwork2.Parse("xxxx::", 0); } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestParseIPAddressNetmaskANE11() - { + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestParseIPAddressNetmaskAne11() + { var ipnet = IPNetwork2.Parse("::", 129); } - [TestMethod] - public void TestParsev6_128() - { + [TestMethod] + public void TestParsev6_128() + { IPNetwork2 ipnetwork = null; string ipaddress = "2001:db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; string network = "2001:db8::"; string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - + // string broadcast = "2001:db8::"; string firstUsable = "2001:db8::"; string lastUsable = "2001:db8::"; @@ -65,18 +62,18 @@ public void TestParsev6_128() Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); - } - - [TestMethod] - public void TestParsev6_127() - { + } + + [TestMethod] + public void TestParsev6_127() + { IPNetwork2 ipnetwork = null; string ipaddress = "2001:db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; string network = "2001:db8::"; string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; - + // string broadcast = "2001:db8::1"; string firstUsable = "2001:db8::"; string lastUsable = "2001:db8::1"; @@ -94,16 +91,16 @@ public void TestParsev6_127() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - public void TestParsev6_126() - { + [TestMethod] + public void TestParsev6_126() + { IPNetwork2 ipnetwork = null; string ipaddress = "2001:db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; string network = "2001:db8::"; string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; - + // string broadcast = "2001:db8::3"; string firstUsable = "2001:db8::"; string lastUsable = "2001:db8::3"; @@ -121,16 +118,16 @@ public void TestParsev6_126() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - public void TestParsev6_125() - { + [TestMethod] + public void TestParsev6_125() + { IPNetwork2 ipnetwork = null; string ipaddress = "2001:db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"; string network = "2001:db8::"; string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"; - + // string broadcast = "2001:db8::7"; string firstUsable = "2001:db8::"; string lastUsable = "2001:db8::7"; @@ -148,16 +145,16 @@ public void TestParsev6_125() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - public void TestParsev6_124() - { + [TestMethod] + public void TestParsev6_124() + { IPNetwork2 ipnetwork = null; string ipaddress = "2001:db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; string network = "2001:db8::"; string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; - + // string broadcast = "2001:db8::f"; string firstUsable = "2001:db8::"; string lastUsable = "2001:db8::f"; @@ -174,17 +171,17 @@ public void TestParsev6_124() Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - - [TestMethod] - public void TestParsev6_123() - { + + [TestMethod] + public void TestParsev6_123() + { IPNetwork2 ipnetwork = null; string ipaddress = "2001:0db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"; string network = "2001:db8::"; string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"; - + // string broadcast = "2001:db8::1f"; string firstUsable = "2001:db8::"; string lastUsable = "2001:db8::1f"; @@ -201,17 +198,17 @@ public void TestParsev6_123() Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - - [TestMethod] - public void TestParsev6_112() - { + + [TestMethod] + public void TestParsev6_112() + { IPNetwork2 ipnetwork = null; string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"; string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; string netmask2 = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; - + // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; string firstUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:0"; string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; @@ -229,16 +226,16 @@ public void TestParsev6_112() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - public void TestParsev6_64() - { + [TestMethod] + public void TestParsev6_64() + { IPNetwork2 ipnetwork = null; string ipaddress = "ffff:ffff:ffff:ffff:1234:1234:1234:1234"; string netmask = "ffff:ffff:ffff:ffff:0000:0000:0000:0000"; string network = "ffff:ffff:ffff:ffff::"; string netmask2 = "ffff:ffff:ffff:ffff::"; - + // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; string firstUsable = "ffff:ffff:ffff:ffff::"; string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; @@ -256,16 +253,16 @@ public void TestParsev6_64() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - public void TestParsev6_16() - { + [TestMethod] + public void TestParsev6_16() + { IPNetwork2 ipnetwork = null; string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; string netmask = "ffff:0000:0000:0000:0000:0000:0000:0000"; string network = "ffff::"; string netmask2 = "ffff::"; - + // string broadcast = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; string firstUsable = "ffff::"; string lastUsable = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; @@ -282,10 +279,10 @@ public void TestParsev6_16() Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - - [TestMethod] - public void TestParsev6_EDGE() - { + + [TestMethod] + public void TestParsev6_EDGE() + { IPNetwork2 ipnetwork = null; string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; @@ -308,13 +305,13 @@ public void TestParsev6_EDGE() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - #endregion + #endregion - #region ParseString + #region ParseString - [TestMethod] - public void TestParseString1() - { + [TestMethod] + public void TestParseString1() + { string ipaddress = "2001:0db8:: ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; string network = "2001:db8::"; @@ -334,9 +331,9 @@ public void TestParseString1() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - public void TestParseString3() - { + [TestMethod] + public void TestParseString3() + { string ipaddress = ":: ::"; string network = "::"; @@ -356,9 +353,9 @@ public void TestParseString3() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - public void TestParseString4() - { + [TestMethod] + public void TestParseString4() + { string ipaddress = "::/0"; string network = "::"; @@ -377,10 +374,10 @@ public void TestParseString4() Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - - [TestMethod] - public void TestParseString5() - { + + [TestMethod] + public void TestParseString5() + { string ipaddress = "::/32"; string network = "::"; @@ -399,10 +396,10 @@ public void TestParseString5() Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - - [TestMethod] - public void TestParseString6() - { + + [TestMethod] + public void TestParseString6() + { string ipaddress = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128"; string network = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; @@ -421,10 +418,10 @@ public void TestParseString6() Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - - [TestMethod] - public void TestParseString7_Uppercase_ipv6_must_parse() - { + + [TestMethod] + public void TestParseString7_Uppercase_ipv6_must_parse() + { string ipaddress = "2FFF:FFFF:123::/60"; string network = "2fff:ffff:123::"; @@ -432,22 +429,22 @@ public void TestParseString7_Uppercase_ipv6_must_parse() string firstUsable = "2fff:ffff:123::"; string lastUsable = "2fff:ffff:123:f:ffff:ffff:ffff:ffff"; byte cidr = 60; - + // BigInteger usable = 295147905179352825856; var ipnetwork = IPNetwork2.Parse(ipaddress); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - public void TestParseString8_Uppercase_ipv6_must_parse() - { + [TestMethod] + public void TestParseString8_Uppercase_ipv6_must_parse() + { string ipaddress = "2FFF:FFFE:123::/60"; string network = "2fff:fffe:123::"; @@ -455,22 +452,22 @@ public void TestParseString8_Uppercase_ipv6_must_parse() string firstUsable = "2fff:fffe:123::"; string lastUsable = "2fff:fffe:123:f:ffff:ffff:ffff:ffff"; byte cidr = 60; - + // BigInteger usable = 295147905179352825856; var ipnetwork = IPNetwork2.Parse(ipaddress); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - public void TestParseString9_Uppercase_ipv6_must_parse() - { + [TestMethod] + public void TestParseString9_Uppercase_ipv6_must_parse() + { string ipaddress = "2FFF:FFFC:123::/60"; string network = "2fff:fffc:123::"; @@ -478,22 +475,22 @@ public void TestParseString9_Uppercase_ipv6_must_parse() string firstUsable = "2fff:fffc:123::"; string lastUsable = "2fff:fffc:123:f:ffff:ffff:ffff:ffff"; byte cidr = 60; - + // BigInteger usable = 295147905179352825856; var ipnetwork = IPNetwork2.Parse(ipaddress); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - - [TestMethod] - public void TestParseString10_Uppercase_ipv6_must_parse() - { + + [TestMethod] + public void TestParseString10_Uppercase_ipv6_must_parse() + { string ipaddress = "2FFF:FFFA:123::/60"; string network = "2fff:fffa:123::"; @@ -501,22 +498,22 @@ public void TestParseString10_Uppercase_ipv6_must_parse() string firstUsable = "2fff:fffa:123::"; string lastUsable = "2fff:fffa:123:f:ffff:ffff:ffff:ffff"; byte cidr = 60; - + // BigInteger usable = 295147905179352825856; var ipnetwork = IPNetwork2.Parse(ipaddress); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - - [TestMethod] - public void TestParseString11_Uppercase_ipv6_must_parse() - { + + [TestMethod] + public void TestParseString11_Uppercase_ipv6_must_parse() + { string ipaddress = "FFFF:FFF1:123::/60"; string network = "ffff:fff1:123::"; @@ -524,25 +521,25 @@ public void TestParseString11_Uppercase_ipv6_must_parse() string firstUsable = "ffff:fff1:123::"; string lastUsable = "ffff:fff1:123:f:ffff:ffff:ffff:ffff"; byte cidr = 60; - + // BigInteger usable = 295147905179352825856; var ipnetwork = IPNetwork2.Parse(ipaddress); Assert.AreEqual(network, ipnetwork.Network.ToString(), "Network"); Assert.AreEqual(netmask, ipnetwork.Netmask.ToString(), "Netmask"); Assert.AreEqual(null, ipnetwork.Broadcast, "Broadcast"); Assert.AreEqual(cidr, ipnetwork.Cidr, "Cidr"); - + // Assert.AreEqual(usable, ipnetwork.Usable, "Usable"); Assert.AreEqual(firstUsable, ipnetwork.FirstUsable.ToString(), "FirstUsable"); Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - - [TestMethod] - public void TestParseIPAddressNoNetmask1() - { + + [TestMethod] + public void TestParseIPAddressNoNetmask1() + { string ipaddress = "2001:0db8::"; var ipnetwork = IPNetwork2.Parse(ipaddress); - + string network = "2001:db8::"; string netmask = "ffff:ffff:ffff:ffff::"; string firstUsable = "2001:db8::"; @@ -559,12 +556,12 @@ public void TestParseIPAddressNoNetmask1() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - public void TestParseIPAddressNoNetmask4() - { + [TestMethod] + public void TestParseIPAddressNoNetmask4() + { string ipaddress = "::"; var ipnetwork = IPNetwork2.Parse(ipaddress); - + string network = "::"; string netmask = "ffff:ffff:ffff:ffff::"; string firstUsable = "::"; @@ -581,9 +578,9 @@ public void TestParseIPAddressNoNetmask4() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - public void TestParseIPAddressNoNetmask5() - { + [TestMethod] + public void TestParseIPAddressNoNetmask5() + { string ipaddress = "2001:0db8::1"; var ipnetwork = IPNetwork2.Parse(ipaddress); @@ -603,14 +600,14 @@ public void TestParseIPAddressNoNetmask5() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - public void TestParseIPAddressNoNetmask1_ClassFull() - { + [TestMethod] + public void TestParseIPAddressNoNetmask1_ClassFull() + { string ipaddress = "2001:0db8::"; ICidrGuess cidrGess = CidrGuess.ClassFull; var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - + string network = "2001:db8::"; string netmask = "ffff:ffff:ffff:ffff::"; string firstUsable = "2001:db8::"; @@ -627,14 +624,14 @@ public void TestParseIPAddressNoNetmask1_ClassFull() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - public void TestParseIPAddressNoNetmask4_ClassFull() - { + [TestMethod] + public void TestParseIPAddressNoNetmask4_ClassFull() + { string ipaddress = "::"; - ICidrGuess cidrGess = CidrGuess.ClassFull; - + ICidrGuess cidrGess = CidrGuess.ClassFull; + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); - + string network = "::"; string netmask = "ffff:ffff:ffff:ffff::"; string firstUsable = "::"; @@ -651,12 +648,12 @@ public void TestParseIPAddressNoNetmask4_ClassFull() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - public void TestParseIPAddressNoNetmask5_ClassFull() - { + [TestMethod] + public void TestParseIPAddressNoNetmask5_ClassFull() + { string ipaddress = "2001:0db8::1"; - ICidrGuess cidrGess = CidrGuess.ClassFull; - + ICidrGuess cidrGess = CidrGuess.ClassFull; + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); string network = "2001:db8::"; @@ -675,9 +672,9 @@ public void TestParseIPAddressNoNetmask5_ClassFull() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - public void TestParseIPAddressNoNetmask1_ClassLess() - { + [TestMethod] + public void TestParseIPAddressNoNetmask1_ClassLess() + { string ipaddress = "2001:0db8::"; ICidrGuess cidrGess = CidrGuess.ClassLess; @@ -699,12 +696,12 @@ public void TestParseIPAddressNoNetmask1_ClassLess() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - public void TestParseIPAddressNoNetmask4_ClassLess() - { + [TestMethod] + public void TestParseIPAddressNoNetmask4_ClassLess() + { string ipaddress = "::"; - ICidrGuess cidrGess = CidrGuess.ClassLess; - + ICidrGuess cidrGess = CidrGuess.ClassLess; + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); string network = "::"; @@ -723,12 +720,12 @@ public void TestParseIPAddressNoNetmask4_ClassLess() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - public void TestParseIPAddressNoNetmask5_ClassLess() - { + [TestMethod] + public void TestParseIPAddressNoNetmask5_ClassLess() + { string ipaddress = "2001:0db8::1"; - ICidrGuess cidrGess = CidrGuess.ClassLess; - + ICidrGuess cidrGess = CidrGuess.ClassLess; + var ipnetwork = IPNetwork2.Parse(ipaddress, cidrGess); string network = "2001:db8::1"; @@ -747,37 +744,37 @@ public void TestParseIPAddressNoNetmask5_ClassLess() Assert.AreEqual(lastUsable, ipnetwork.LastUsable.ToString(), "LastUsable"); } - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestParseStringAE1() - { + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestParseStringAe1() + { string ipaddress = "garbage"; var ipnetwork = IPNetwork2.Parse(ipaddress); } - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestParseStringAE2() - { + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestParseStringAe2() + { string ipaddress = "0:0:0:0:0:0:1:0:0 0:1:2:3:4:5:6:7:8"; var ipnetwork = IPNetwork2.Parse(ipaddress); } - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestParseStringANE1() - { + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestParseStringAne1() + { string ipaddress = null; var ipnetwork = IPNetwork2.Parse(ipaddress); } - - #endregion - #region ParseStringString + #endregion + + #region ParseStringString - [TestMethod] - public void TestParseStringString1() - { + [TestMethod] + public void TestParseStringString1() + { string ipaddress = "2001:0db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; @@ -785,33 +782,33 @@ public void TestParseStringString1() Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); } - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestParseStringString3() - { + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestParseStringString3() + { string ipaddress = "2001:0db8::"; string netmask = null; var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); } - - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestParseStringString5() - { + + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestParseStringString5() + { string ipaddress = "2001:0db8::"; string netmask = string.Empty; var ipnetwork = IPNetwork2.Parse(ipaddress, netmask); } - #endregion + #endregion - #region ParseIpIp + #region ParseIpIp - [TestMethod] - public void ParseIpIp1() - { + [TestMethod] + public void ParseIpIp1() + { string ipaddress = "2001:0db8::"; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"; var ip = IPAddress.Parse(ipaddress); @@ -820,58 +817,59 @@ public void ParseIpIp1() Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); } - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void ParseIpIp3() - { + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void ParseIpIp3() + { string ipaddress = "2001:0db8::"; var ip = IPAddress.Parse(ipaddress); IPAddress netm = null; var ipnetwork = IPNetwork2.Parse(ip, netm); } - #endregion + #endregion - #region CtorWithIpAndCidr + #region CtorWithIpAndCidr - [TestMethod] - public void CtorWithIpAndCidr1() - { + [TestMethod] + public void CtorWithIpAndCidr1() + { string ipaddress = "2001:0db8::"; var ip = IPAddress.Parse(ipaddress); var ipnetwork = new IPNetwork2(ip, 124); Assert.AreEqual("2001:db8::/124", ipnetwork.ToString(), "network"); } - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void CtorWithIpAndCidr2() - { + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void CtorWithIpAndCidr2() + { string ipaddress = "2001:db8::"; var ip = IPAddress.Parse(ipaddress); var ipnetwork = new IPNetwork2(ip, 129); } - #endregion - - #region ToCidr - - [TestMethod] - public void TestToCidrAE() - { + + #endregion + + #region ToCidr + + [TestMethod] + public void TestToCidrAe() + { byte cidr = IPNetwork2.ToCidr(IPAddress.IPv6Any); Assert.AreEqual(0, cidr, "cidr"); } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestToCidrAE2() - { + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestToCidrAe2() + { IPNetwork2.ToCidr(IPAddress.Parse("2001:db8:3:4:5:6:7:8")); } - - [TestMethod] - public void TestToCidr128() - { + + [TestMethod] + public void TestToCidr128() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); byte cidr = 128; int result = IPNetwork2.ToCidr(mask); @@ -879,9 +877,9 @@ public void TestToCidr128() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestToCidr127() - { + [TestMethod] + public void TestToCidr127() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"); byte cidr = 127; int result = IPNetwork2.ToCidr(mask); @@ -889,9 +887,9 @@ public void TestToCidr127() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestToCidr126() - { + [TestMethod] + public void TestToCidr126() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"); byte cidr = 126; int result = IPNetwork2.ToCidr(mask); @@ -899,19 +897,19 @@ public void TestToCidr126() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestToCidr125() - { + [TestMethod] + public void TestToCidr125() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"); byte cidr = 125; int result = IPNetwork2.ToCidr(mask); Assert.AreEqual(cidr, result, "cidr"); } - - [TestMethod] - public void TestToCidr124() - { + + [TestMethod] + public void TestToCidr124() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); byte cidr = 124; int result = IPNetwork2.ToCidr(mask); @@ -919,9 +917,9 @@ public void TestToCidr124() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestToCidr123() - { + [TestMethod] + public void TestToCidr123() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"); byte cidr = 123; int result = IPNetwork2.ToCidr(mask); @@ -929,9 +927,9 @@ public void TestToCidr123() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestToCidr122() - { + [TestMethod] + public void TestToCidr122() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0"); byte cidr = 122; int result = IPNetwork2.ToCidr(mask); @@ -939,19 +937,19 @@ public void TestToCidr122() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestToCidr121() - { + [TestMethod] + public void TestToCidr121() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80"); byte cidr = 121; int result = IPNetwork2.ToCidr(mask); Assert.AreEqual(cidr, result, "cidr"); } - - [TestMethod] - public void TestToCidr120() - { + + [TestMethod] + public void TestToCidr120() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00"); byte cidr = 120; int result = IPNetwork2.ToCidr(mask); @@ -959,9 +957,9 @@ public void TestToCidr120() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestToCidr119() - { + [TestMethod] + public void TestToCidr119() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00"); byte cidr = 119; int result = IPNetwork2.ToCidr(mask); @@ -969,9 +967,9 @@ public void TestToCidr119() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestToCidr118() - { + [TestMethod] + public void TestToCidr118() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00"); byte cidr = 118; int result = IPNetwork2.ToCidr(mask); @@ -979,19 +977,19 @@ public void TestToCidr118() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestToCidr117() - { + [TestMethod] + public void TestToCidr117() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800"); byte cidr = 117; int result = IPNetwork2.ToCidr(mask); Assert.AreEqual(cidr, result, "cidr"); } - - [TestMethod] - public void TestToCidr116() - { + + [TestMethod] + public void TestToCidr116() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000"); byte cidr = 116; int result = IPNetwork2.ToCidr(mask); @@ -999,9 +997,9 @@ public void TestToCidr116() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestToCidr115() - { + [TestMethod] + public void TestToCidr115() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000"); byte cidr = 115; int result = IPNetwork2.ToCidr(mask); @@ -1009,9 +1007,9 @@ public void TestToCidr115() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestToCidr114() - { + [TestMethod] + public void TestToCidr114() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000"); byte cidr = 114; int result = IPNetwork2.ToCidr(mask); @@ -1019,29 +1017,29 @@ public void TestToCidr114() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestToCidr113() - { + [TestMethod] + public void TestToCidr113() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000"); byte cidr = 113; int result = IPNetwork2.ToCidr(mask); Assert.AreEqual(cidr, result, "cidr"); } - - [TestMethod] - public void TestToCidr112() - { + + [TestMethod] + public void TestToCidr112() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); byte cidr = 112; int result = IPNetwork2.ToCidr(mask); Assert.AreEqual(cidr, result, "cidr"); } - - [TestMethod] - public void TestToCidr111() - { + + [TestMethod] + public void TestToCidr111() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffe:0"); byte cidr = 111; int result = IPNetwork2.ToCidr(mask); @@ -1049,9 +1047,9 @@ public void TestToCidr111() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestToCidr110() - { + [TestMethod] + public void TestToCidr110() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffc:0"); byte cidr = 110; int result = IPNetwork2.ToCidr(mask); @@ -1059,53 +1057,53 @@ public void TestToCidr110() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestToCidr109() - { + [TestMethod] + public void TestToCidr109() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff8:0"); byte cidr = 109; int result = IPNetwork2.ToCidr(mask); Assert.AreEqual(cidr, result, "cidr"); } - - [TestMethod] - public void TestToCidr108() - { + + [TestMethod] + public void TestToCidr108() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff0:0"); byte cidr = 108; int result = IPNetwork2.ToCidr(mask); Assert.AreEqual(cidr, result, "cidr"); } - - [TestMethod] - public void TestToCidr001() - { + + [TestMethod] + public void TestToCidr001() + { var mask = IPAddress.Parse("8000::"); byte cidr = 1; int result = IPNetwork2.ToCidr(mask); Assert.AreEqual(cidr, result, "cidr"); } - - [TestMethod] - public void TestToCidr000() - { + + [TestMethod] + public void TestToCidr000() + { var mask = IPAddress.Parse("::"); byte cidr = 0; int result = IPNetwork2.ToCidr(mask); Assert.AreEqual(cidr, result, "cidr"); - } - - #endregion - - #region TryToCidr - - [TestMethod] - public void TestTryToCidr128() - { + } + + #endregion + + #region TryToCidr + + [TestMethod] + public void TestTryToCidr128() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); byte cidr = 128; byte? result = 0; @@ -1115,9 +1113,9 @@ public void TestTryToCidr128() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestTryToCidr127() - { + [TestMethod] + public void TestTryToCidr127() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"); byte cidr = 127; byte? result = 0; @@ -1127,9 +1125,9 @@ public void TestTryToCidr127() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestTryToCidr126() - { + [TestMethod] + public void TestTryToCidr126() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"); byte cidr = 126; byte? result = 0; @@ -1139,9 +1137,9 @@ public void TestTryToCidr126() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestTryToCidr125() - { + [TestMethod] + public void TestTryToCidr125() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff8"); byte cidr = 125; byte? result = 0; @@ -1150,10 +1148,10 @@ public void TestTryToCidr125() Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } - - [TestMethod] - public void TestTryToCidr124() - { + + [TestMethod] + public void TestTryToCidr124() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); byte cidr = 124; byte? result = 0; @@ -1163,9 +1161,9 @@ public void TestTryToCidr124() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestTryToCidr123() - { + [TestMethod] + public void TestTryToCidr123() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffe0"); byte cidr = 123; byte? result = 0; @@ -1175,9 +1173,9 @@ public void TestTryToCidr123() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestTryToCidr122() - { + [TestMethod] + public void TestTryToCidr122() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffc0"); byte cidr = 122; byte? result = 0; @@ -1187,9 +1185,9 @@ public void TestTryToCidr122() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestTryToCidr121() - { + [TestMethod] + public void TestTryToCidr121() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff80"); byte cidr = 121; byte? result = 0; @@ -1198,10 +1196,10 @@ public void TestTryToCidr121() Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } - - [TestMethod] - public void TestTryToCidr120() - { + + [TestMethod] + public void TestTryToCidr120() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00"); byte cidr = 120; byte? result = 0; @@ -1211,9 +1209,9 @@ public void TestTryToCidr120() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestTryToCidr119() - { + [TestMethod] + public void TestTryToCidr119() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fe00"); byte cidr = 119; byte? result = 0; @@ -1223,9 +1221,9 @@ public void TestTryToCidr119() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestTryToCidr118() - { + [TestMethod] + public void TestTryToCidr118() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fc00"); byte cidr = 118; byte? result = 0; @@ -1235,9 +1233,9 @@ public void TestTryToCidr118() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestTryToCidr117() - { + [TestMethod] + public void TestTryToCidr117() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f800"); byte cidr = 117; byte? result = 0; @@ -1246,10 +1244,10 @@ public void TestTryToCidr117() Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } - - [TestMethod] - public void TestTryToCidr116() - { + + [TestMethod] + public void TestTryToCidr116() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:f000"); byte cidr = 116; byte? result = 0; @@ -1259,9 +1257,9 @@ public void TestTryToCidr116() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestTryToCidr115() - { + [TestMethod] + public void TestTryToCidr115() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:e000"); byte cidr = 115; byte? result = 0; @@ -1271,9 +1269,9 @@ public void TestTryToCidr115() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestTryToCidr114() - { + [TestMethod] + public void TestTryToCidr114() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:c000"); byte cidr = 114; byte? result = 0; @@ -1283,9 +1281,9 @@ public void TestTryToCidr114() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestTryToCidr113() - { + [TestMethod] + public void TestTryToCidr113() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:8000"); byte cidr = 113; byte? result = 0; @@ -1294,10 +1292,10 @@ public void TestTryToCidr113() Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } - - [TestMethod] - public void TestTryToCidr112() - { + + [TestMethod] + public void TestTryToCidr112() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); byte cidr = 112; byte? result = 0; @@ -1306,10 +1304,10 @@ public void TestTryToCidr112() Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } - - [TestMethod] - public void TestTryToCidr111() - { + + [TestMethod] + public void TestTryToCidr111() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffe:0"); byte cidr = 111; byte? result = 0; @@ -1319,9 +1317,9 @@ public void TestTryToCidr111() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestTryToCidr110() - { + [TestMethod] + public void TestTryToCidr110() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fffc:0"); byte cidr = 110; byte? result = 0; @@ -1331,9 +1329,9 @@ public void TestTryToCidr110() Assert.AreEqual(cidr, result, "cidr"); } - [TestMethod] - public void TestTryToCidr109() - { + [TestMethod] + public void TestTryToCidr109() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff8:0"); byte cidr = 109; byte? result = 0; @@ -1342,10 +1340,10 @@ public void TestTryToCidr109() Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } - - [TestMethod] - public void TestTryToCidr108() - { + + [TestMethod] + public void TestTryToCidr108() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:fff0:0"); byte cidr = 108; byte? result = 0; @@ -1354,10 +1352,10 @@ public void TestTryToCidr108() Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } - - [TestMethod] - public void TestTryToCidr001() - { + + [TestMethod] + public void TestTryToCidr001() + { var mask = IPAddress.Parse("8000::"); byte cidr = 1; byte? result = 0; @@ -1366,10 +1364,10 @@ public void TestTryToCidr001() Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(cidr, result, "cidr"); } - - [TestMethod] - public void TestTryToCidr000() - { + + [TestMethod] + public void TestTryToCidr000() + { var mask = IPAddress.Parse("::"); byte cidr = 0; byte? result = 0; @@ -1379,67 +1377,67 @@ public void TestTryToCidr000() Assert.AreEqual(cidr, result, "cidr"); } - #endregion + #endregion - #region ToBigInteger + #region ToBigInteger - [TestMethod] - public void TestToBigInteger32() - { + [TestMethod] + public void TestToBigInteger32() + { var mask = IPAddress.Parse("::f"); uint uintMask = 0xf; var result = IPNetwork2.ToBigInteger(mask); Assert.AreEqual(uintMask, result, "uint"); } - - [TestMethod] - public void TestToBigInteger24() - { + + [TestMethod] + public void TestToBigInteger24() + { var mask = IPAddress.Parse("::fff"); uint uintMask = 0xfff; BigInteger? result = IPNetwork2.ToBigInteger(mask); Assert.AreEqual(uintMask, result, "uint"); } - - [TestMethod] - public void TestToBigInteger16() - { + + [TestMethod] + public void TestToBigInteger16() + { var mask = IPAddress.Parse("::ff"); uint uintMask = 0xff; BigInteger? result = IPNetwork2.ToBigInteger(mask); Assert.AreEqual(uintMask, result, "uint"); } - - [TestMethod] - public void TestToBigInteger8() - { + + [TestMethod] + public void TestToBigInteger8() + { var mask = IPAddress.Parse("::ff00:0"); uint uintMask = 0xff000000; BigInteger? result = IPNetwork2.ToBigInteger(mask); Assert.AreEqual(uintMask, result, "uint"); } - - [TestMethod] - public void TestToBigInteger0() - { + + [TestMethod] + public void TestToBigInteger0() + { var mask = IPAddress.Parse("::"); uint uintMask = 0x00000000; BigInteger? result = IPNetwork2.ToBigInteger(mask); Assert.AreEqual(uintMask, result, "uint"); - } - - #endregion - - #region TryToBigInteger - - [TestMethod] - public void TestTryToBigInteger32() - { + } + + #endregion + + #region TryToBigInteger + + [TestMethod] + public void TestTryToBigInteger32() + { var mask = IPAddress.Parse("::ffff:ffff"); uint uintMask = 0xffffffff; BigInteger? result = null; @@ -1448,10 +1446,10 @@ public void TestTryToBigInteger32() Assert.AreEqual(uintMask, result, "uint"); Assert.AreEqual(true, parsed, "parsed"); } - - [TestMethod] - public void TestTryToBigInteger24() - { + + [TestMethod] + public void TestTryToBigInteger24() + { var mask = IPAddress.Parse("::ffff:ff00"); uint uintMask = 0xffffff00; BigInteger? result = null; @@ -1460,10 +1458,10 @@ public void TestTryToBigInteger24() Assert.AreEqual(uintMask, result, "uint"); Assert.AreEqual(true, parsed, "parsed"); } - - [TestMethod] - public void TestTryToBigInteger16() - { + + [TestMethod] + public void TestTryToBigInteger16() + { var mask = IPAddress.Parse("::ffff:0"); uint uintMask = 0xffff0000; BigInteger? result = null; @@ -1472,10 +1470,10 @@ public void TestTryToBigInteger16() Assert.AreEqual(uintMask, result, "uint"); Assert.AreEqual(true, parsed, "parsed"); } - - [TestMethod] - public void TestTryToBigInteger8() - { + + [TestMethod] + public void TestTryToBigInteger8() + { var mask = IPAddress.Parse("::ff00:0"); uint uintMask = 0xff000000; @@ -1485,10 +1483,10 @@ public void TestTryToBigInteger8() Assert.AreEqual(uintMask, result, "uint"); Assert.AreEqual(true, parsed, "parsed"); } - - [TestMethod] - public void TestTryToBigInteger0() - { + + [TestMethod] + public void TestTryToBigInteger0() + { var mask = IPAddress.Parse("::"); uint uintMask = 0x00000000; BigInteger? result = null; @@ -1498,100 +1496,101 @@ public void TestTryToBigInteger0() Assert.AreEqual(true, parsed, "parsed"); } - #endregion + #endregion + + #region TryToNetmask - #region TryToNetmask - [TestMethod] - public void TryToNetmask1() - { + [TestMethod] + public void TryToNetmask1() + { IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(0, Sockets.AddressFamily.InterNetworkV6, out result); + bool parsed = IPNetwork2.TryToNetmask(0, AddressFamily.InterNetworkV6, out result); var expected = IPAddress.Parse("::"); Assert.AreEqual(expected, result, "Netmask"); Assert.AreEqual(true, parsed, "parsed"); } - [TestMethod] - public void TryToNetmask2() - { + [TestMethod] + public void TryToNetmask2() + { IPAddress result = null; - bool parsed = IPNetwork2.TryToNetmask(33, Sockets.AddressFamily.InterNetworkV6, out result); + bool parsed = IPNetwork2.TryToNetmask(33, AddressFamily.InterNetworkV6, out result); var expected = IPAddress.Parse("ffff:ffff:8000::"); Assert.AreEqual(expected, result, "Netmask"); Assert.AreEqual(true, parsed, "parsed"); } - #endregion + #endregion - #region ToNetmask + #region ToNetmask - [TestMethod] - public void ToNetmask128() - { + [TestMethod] + public void ToNetmask128() + { byte cidr = 128; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"; - string result = IPNetwork2.ToNetmask(cidr, Sockets.AddressFamily.InterNetworkV6).ToString(); + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); Assert.AreEqual(netmask, result, "netmask"); } - [TestMethod] - public void ToNetmask31() - { + [TestMethod] + public void ToNetmask31() + { byte cidr = 127; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffe"; - string result = IPNetwork2.ToNetmask(cidr, Sockets.AddressFamily.InterNetworkV6).ToString(); + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); Assert.AreEqual(netmask, result, "netmask"); } - [TestMethod] - public void ToNetmask30() - { + [TestMethod] + public void ToNetmask30() + { byte cidr = 126; string netmask = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:fffc"; - string result = IPNetwork2.ToNetmask(cidr, Sockets.AddressFamily.InterNetworkV6).ToString(); + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); Assert.AreEqual(netmask, result, "netmask"); } - [TestMethod] - public void ToNetmask1() - { + [TestMethod] + public void ToNetmask1() + { byte cidr = 1; string netmask = "8000::"; - string result = IPNetwork2.ToNetmask(cidr, Sockets.AddressFamily.InterNetworkV6).ToString(); + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); Assert.AreEqual(netmask, result, "netmask"); } - - [TestMethod] - public void ToNetmask0() - { + + [TestMethod] + public void ToNetmask0() + { byte cidr = 0; string netmask = "::"; - string result = IPNetwork2.ToNetmask(cidr, Sockets.AddressFamily.InterNetworkV6).ToString(); + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); Assert.AreEqual(netmask, result, "netmask"); } - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void ToNetmaskOORE1() - { + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void ToNetmaskOore1() + { byte cidr = 129; - string result = IPNetwork2.ToNetmask(cidr, Sockets.AddressFamily.InterNetworkV6).ToString(); + string result = IPNetwork2.ToNetmask(cidr, AddressFamily.InterNetworkV6).ToString(); } - #endregion + #endregion - #region ValidNetmask + #region ValidNetmask - [TestMethod] - public void TestValidNetmask0() - { + [TestMethod] + public void TestValidNetmask0() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); bool expected = true; bool result = IPNetwork2.ValidNetmask(mask); @@ -1599,9 +1598,9 @@ public void TestValidNetmask0() Assert.AreEqual(expected, result, "ValidNetmask"); } - [TestMethod] - public void TestValidNetmask1() - { + [TestMethod] + public void TestValidNetmask1() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); bool expected = true; bool result = IPNetwork2.ValidNetmask(mask); @@ -1609,19 +1608,19 @@ public void TestValidNetmask1() Assert.AreEqual(expected, result, "ValidNetmask"); } - [TestMethod] - public void TestValidNetmask2() - { + [TestMethod] + public void TestValidNetmask2() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); bool expected = true; bool result = IPNetwork2.ValidNetmask(mask); Assert.AreEqual(expected, result, "ValidNetmask"); } - - [TestMethod] - public void TestValidNetmaskEAE1() - { + + [TestMethod] + public void TestValidNetmaskEae1() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:ffff"); bool expected = false; bool result = IPNetwork2.ValidNetmask(mask); @@ -1629,9 +1628,9 @@ public void TestValidNetmaskEAE1() Assert.AreEqual(expected, result, "ValidNetmask"); } - [TestMethod] - public void TestValidNetmaskEAE3() - { + [TestMethod] + public void TestValidNetmaskEae3() + { var mask = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:0000:0001"); bool expected = false; bool result = IPNetwork2.ValidNetmask(mask); @@ -1639,43 +1638,43 @@ public void TestValidNetmaskEAE3() Assert.AreEqual(expected, result, "ValidNetmask"); } - #endregion + #endregion - #region BitsSet + #region BitsSet - [TestMethod] - public void TestBitsSet128() - { + [TestMethod] + public void TestBitsSet128() + { var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"); uint bits = 128; uint result = IPNetwork2.BitsSet(ip); Assert.AreEqual(bits, result, "BitsSet"); } - - [TestMethod] - public void TestBitsSet120() - { + + [TestMethod] + public void TestBitsSet120() + { var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:fff0"); uint bits = 124; uint result = IPNetwork2.BitsSet(ip); Assert.AreEqual(bits, result, "BitsSet"); } - - [TestMethod] - public void TestBitsSet16() - { + + [TestMethod] + public void TestBitsSet16() + { var ip = IPAddress.Parse("ffff:ffff:ffff:ffff:ffff:ffff:ffff:0000"); uint bits = 112; uint result = IPNetwork2.BitsSet(ip); Assert.AreEqual(bits, result, "BitsSet"); } - - [TestMethod] - public void TestBitsSet4() - { + + [TestMethod] + public void TestBitsSet4() + { var ip = IPAddress.Parse("f0f0:f0f0:f0f0:f0f0:f0f0:f0f0:f0f0:f0f0"); uint bits = 64; uint result = IPNetwork2.BitsSet(ip); @@ -1683,13 +1682,13 @@ public void TestBitsSet4() Assert.AreEqual(bits, result, "BitsSet"); } - #endregion + #endregion - #region Contains + #region Contains - [TestMethod] - public void TestContains1() - { + [TestMethod] + public void TestContains1() + { var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); var ipaddress = IPAddress.Parse("2001:0db8::1"); @@ -1699,9 +1698,9 @@ public void TestContains1() Assert.AreEqual(expected, result, "contains"); } - [TestMethod] - public void TestContains2() - { + [TestMethod] + public void TestContains2() + { var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); var ipaddress = IPAddress.Parse("2001:0db8:0:1::"); @@ -1711,9 +1710,9 @@ public void TestContains2() Assert.AreEqual(expected, result, "contains"); } - [TestMethod] - public void TestContains3() - { + [TestMethod] + public void TestContains3() + { var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/64"); @@ -1723,9 +1722,9 @@ public void TestContains3() Assert.AreEqual(expected, result, "contains"); } - [TestMethod] - public void TestContains4() - { + [TestMethod] + public void TestContains4() + { var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/65"); @@ -1735,9 +1734,9 @@ public void TestContains4() Assert.AreEqual(expected, result, "contains"); } - [TestMethod] - public void TestContains5() - { + [TestMethod] + public void TestContains5() + { var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); var ipnetwork2 = IPNetwork2.Parse("2001:0db8:1::/65"); @@ -1746,10 +1745,10 @@ public void TestContains5() Assert.AreEqual(expected, result, "contains"); } - - [TestMethod] - public void TestContains6() - { + + [TestMethod] + public void TestContains6() + { var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); var ipnetwork2 = IPNetwork2.Parse("2001:0db8::/63"); @@ -1759,19 +1758,19 @@ public void TestContains6() Assert.AreEqual(expected, result, "contains"); } - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestContains10() - { + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestContains10() + { var ipnetwork = IPNetwork2.Parse("::/0"); IPAddress ipaddress = null; bool result = ipnetwork.Contains(ipaddress); } - [TestMethod] - public void TestContains11_different_address_family_returns_false() - { + [TestMethod] + public void TestContains11_different_address_family_returns_false() + { var ipnetwork = IPNetwork2.Parse("::1"); // IPv6 var ipaddress = IPAddress.Parse("127.0.0.1"); // IPv4 @@ -1779,22 +1778,22 @@ public void TestContains11_different_address_family_returns_false() Assert.AreEqual(false, result, "contains"); } - #endregion + #endregion - #region Overlap + #region Overlap - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestOverlap2() - { + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestOverlap2() + { var network1 = IPNetwork2.Parse("2001:0db8::/0"); IPNetwork2 network2 = null; network1.Overlap(network2); } - [TestMethod] - public void TestOverlap3() - { + [TestMethod] + public void TestOverlap3() + { var network1 = IPNetwork2.Parse("2001:0db8::/64"); var network2 = IPNetwork2.Parse("2001:0db8::/64"); bool result = network1.Overlap(network2); @@ -1803,9 +1802,9 @@ public void TestOverlap3() Assert.AreEqual(expected, result, "overlap"); } - [TestMethod] - public void TestOverlap4() - { + [TestMethod] + public void TestOverlap4() + { var network1 = IPNetwork2.Parse("2001:0db8::/64"); var network2 = IPNetwork2.Parse("2001:0db8:0:0:1::/65"); bool result = network1.Overlap(network2); @@ -1814,9 +1813,9 @@ public void TestOverlap4() Assert.AreEqual(expected, result, "overlap"); } - [TestMethod] - public void TestOverlap5() - { + [TestMethod] + public void TestOverlap5() + { var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); var network2 = IPNetwork2.Parse("2001:0db8:0:2::/68"); bool result = network1.Overlap(network2); @@ -1825,9 +1824,9 @@ public void TestOverlap5() Assert.AreEqual(expected, result, "overlap"); } - [TestMethod] - public void TestOverlap6() - { + [TestMethod] + public void TestOverlap6() + { var network1 = IPNetwork2.Parse("2001:0db8:0:1::/68"); var network2 = IPNetwork2.Parse("2001:0db8:0:2::/62"); bool result = network1.Overlap(network2); @@ -1836,13 +1835,13 @@ public void TestOverlap6() Assert.AreEqual(expected, result, "overlap"); } - #endregion + #endregion - #region Examples + #region Examples - [TestMethod] - public void Example1() - { + [TestMethod] + public void Example1() + { var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); Console.WriteLine("Network : {0}", ipnetwork.Network); @@ -1854,9 +1853,9 @@ public void Example1() Console.WriteLine("Cidr : {0}", ipnetwork.Cidr); } - [TestMethod] - public void Example2() - { + [TestMethod] + public void Example2() + { var ipnetwork = IPNetwork2.Parse("2001:0db8::/64"); var ipaddress = IPAddress.Parse("2001:0db8::1"); @@ -1877,14 +1876,14 @@ public void Example2() Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork2, contains3); Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipnetwork3, contains4); - + Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork2, overlap1); Console.WriteLine("{0} overlap {1} : {2}", ipnetwork, ipnetwork3, overlap2); } - [TestMethod] - public void Example4() - { + [TestMethod] + public void Example4() + { var wholeInternet = IPNetwork2.Parse("::/0"); byte newCidr = 2; IPNetworkCollection subneted = wholeInternet.Subnet(newCidr); @@ -1894,15 +1893,15 @@ public void Example4() Console.WriteLine("Last : {0}", subneted[subneted.Count - 1]); Console.WriteLine("All :"); - foreach (IPNetwork2 ipnetwork in subneted) + foreach (IPNetwork2 ipnetwork in subneted) { Console.WriteLine("{0}", ipnetwork); } - } - - [TestMethod] - public void Example5() - { + } + + [TestMethod] + public void Example5() + { var ipnetwork1 = IPNetwork2.Parse("2001:0db8::/64"); var ipnetwork2 = IPNetwork2.Parse("2001:0db9::/64"); IPNetwork2[] ipnetwork3 = IPNetwork2.Supernet(new[] { ipnetwork1, ipnetwork2 }); @@ -1910,9 +1909,9 @@ public void Example5() Console.WriteLine("{0} + {1} = {2}", ipnetwork1, ipnetwork2, ipnetwork3[0]); } - [TestMethod] - public void Example6() - { + [TestMethod] + public void Example6() + { var ipnetwork = IPNetwork2.Parse("fe80::202:b3ff:fe1e:8329/24"); var ipaddress = IPAddress.Parse("2001:db8::"); @@ -1925,21 +1924,21 @@ public void Example6() Console.WriteLine("{0} contains {1} : {2}", ipnetwork, ipaddress2, contains2); } - [TestMethod] - public void Example8() - { + [TestMethod] + public void Example8() + { var network = IPNetwork2.Parse("::/124"); IPNetworkCollection ips = network.Subnet(128); - foreach (IPNetwork2 ip in ips) + foreach (IPNetwork2 ip in ips) { Console.WriteLine("{0}", ip); } } - [TestMethod] - public void Example11() - { + [TestMethod] + public void Example11() + { var defaultParse = IPNetwork2.Parse("::1"); var classFullParse = IPNetwork2.Parse("::1", CidrGuess.ClassFull); var classLessParse = IPNetwork2.Parse("::1", CidrGuess.ClassLess); @@ -1947,15 +1946,15 @@ public void Example11() Console.WriteLine("IPV6 Default Parse : {0}", defaultParse); Console.WriteLine("IPV6 ClassFull Parse : {0}", classFullParse); Console.WriteLine("IPV6 ClassLess Parse : {0}", classLessParse); - } - - #endregion - - #region ToString - - [TestMethod] - public void TestToString() - { + } + + #endregion + + #region ToString + + [TestMethod] + public void TestToString() + { var ipnetwork = IPNetwork2.Parse("2001:0db8:0000:0000:0000:0000:0000:0000/32"); string expected = "2001:db8::/32"; string result = ipnetwork.ToString(); @@ -1963,9 +1962,9 @@ public void TestToString() Assert.AreEqual(expected, result, "ToString"); } - [TestMethod] - public void TestToString1() - { + [TestMethod] + public void TestToString1() + { var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/32"); string expected = "2001:db8::/32"; string result = ipnetwork.ToString(); @@ -1973,9 +1972,9 @@ public void TestToString1() Assert.AreEqual(expected, result, "ToString"); } - [TestMethod] - public void TestToString2() - { + [TestMethod] + public void TestToString2() + { var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/64"); string expected = "2001:db8:1:2::/64"; string result = ipnetwork.ToString(); @@ -1983,9 +1982,9 @@ public void TestToString2() Assert.AreEqual(expected, result, "ToString"); } - [TestMethod] - public void TestToString3() - { + [TestMethod] + public void TestToString3() + { var ipnetwork = IPNetwork2.Parse("2001:0db8:1:2:3:4:5:6/100"); string expected = "2001:db8:1:2:3:4::/100"; string result = ipnetwork.ToString(); @@ -1993,33 +1992,33 @@ public void TestToString3() Assert.AreEqual(expected, result, "ToString"); } - #endregion - - #region Subnet - - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void TestSubnet3() - { + #endregion + + #region Subnet + + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void TestSubnet3() + { var ipnetwork = IPNetwork2.Parse("::"); byte cidr = 129; IPNetworkCollection subnets = ipnetwork.Subnet(cidr); } - - [TestMethod] - [ExpectedException(typeof(ArgumentException))] - public void TestSubnet4() - { + + [TestMethod] + [ExpectedException(typeof(ArgumentException))] + public void TestSubnet4() + { var ipnetwork = IPNetwork2.Parse("::"); byte cidr = 1; IPNetworkCollection subnets = ipnetwork.Subnet(cidr); } - - [TestMethod] - public void TestSubnet5() - { + + [TestMethod] + public void TestSubnet5() + { var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); byte cidr = 65; @@ -2028,10 +2027,10 @@ public void TestSubnet5() Assert.AreEqual("1:1:1:1::/65", subnets[0].ToString(), "subnet1"); Assert.AreEqual("1:1:1:1:8000::/65", subnets[1].ToString(), "subnet2"); } - - [TestMethod] - public void TestSubnet6() - { + + [TestMethod] + public void TestSubnet6() + { var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); byte cidr = 68; @@ -2054,10 +2053,10 @@ public void TestSubnet6() Assert.AreEqual("1:1:1:1:e000::/68", subnets[14].ToString(), "subnet15"); Assert.AreEqual("1:1:1:1:f000::/68", subnets[15].ToString(), "subnet16"); } - - [TestMethod] - public void TestSubnet7() - { + + [TestMethod] + public void TestSubnet7() + { var ipnetwork = IPNetwork2.Parse("1:1:1:1:1:1:1:1"); byte cidr = 72; @@ -2066,10 +2065,10 @@ public void TestSubnet7() Assert.AreEqual("1:1:1:1::/72", subnets[0].ToString(), "subnet1"); Assert.AreEqual("1:1:1:1:ff00::/72", subnets[255].ToString(), "subnet256"); } - - [TestMethod] - public void TestSubnet9() - { + + [TestMethod] + public void TestSubnet9() + { var ipnetwork = IPNetwork2.Parse("2001:db08:1:1:1:1:1:1"); byte cidr = 128; var count = BigInteger.Pow(2, ipnetwork.Cidr); @@ -2079,10 +2078,10 @@ public void TestSubnet9() Assert.AreEqual("2001:db08:1:1::ff/128", subnets[255].ToString(), "subnet256"); Assert.AreEqual("2001:db08:1:1:ffff:ffff:ffff:ffff/128", subnets[count - 1].ToString(), "last"); } - - [TestMethod] - public void TestSubnet10() - { + + [TestMethod] + public void TestSubnet10() + { var ipnetwork = IPNetwork2.Parse("2001:db08::/0"); byte cidr = 128; var count = BigInteger.Pow(2, 128 - ipnetwork.Cidr); @@ -2093,36 +2092,36 @@ public void TestSubnet10() Assert.AreEqual("::/128", subnets[0].ToString(), "subnet1"); Assert.AreEqual("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128", subnets[count - 1].ToString(), "last"); } - - [TestMethod] - public void TestSubnet12() - { + + [TestMethod] + public void TestSubnet12() + { var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); byte cidr = 70; int i = -1; IPNetworkCollection subnets = ipnetwork.Subnet(cidr); - foreach (IPNetwork2 ipn in subnets) + foreach (IPNetwork2 ipn in subnets) { i++; Assert.AreEqual(subnets[i], ipn, "subnet"); } } - [TestMethod] - [ExpectedException(typeof(ArgumentOutOfRangeException))] - public void TestSubnet13() - { + [TestMethod] + [ExpectedException(typeof(ArgumentOutOfRangeException))] + public void TestSubnet13() + { var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); byte cidr = 70; IPNetworkCollection subnets = ipnetwork.Subnet(cidr); IPNetwork2 error = subnets[1000]; } - - [TestMethod] - public void TestSubnet14() - { + + [TestMethod] + public void TestSubnet14() + { var network = IPNetwork2.Parse("15.0.0.0/8"); - IPNetworkCollection subnets = network.Subnet((byte)12); + IPNetworkCollection subnets = network.Subnet(12); Assert.AreEqual(subnets[0].ToString(), "15.0.0.0/12", "subnets[0]"); Assert.AreEqual(subnets[1].ToString(), "15.16.0.0/12", "subnets[1]"); Assert.AreEqual(subnets[2].ToString(), "15.32.0.0/12", "subnets[2]"); @@ -2133,14 +2132,14 @@ public void TestSubnet14() Console.WriteLine(ipn); } } - - #endregion - #region TrySubnet - - [TestMethod] - public void TestTrySubnet3() - { + #endregion + + #region TrySubnet + + [TestMethod] + public void TestTrySubnet3() + { var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); byte cidr = 255; @@ -2149,10 +2148,10 @@ public void TestTrySubnet3() Assert.AreEqual(false, subnetted, "subnetted"); } - - [TestMethod] - public void TestTrySubnet4() - { + + [TestMethod] + public void TestTrySubnet4() + { var ipnetwork = IPNetwork2.Parse("2001:db08::/64"); byte cidr = 63; @@ -2161,10 +2160,10 @@ public void TestTrySubnet4() Assert.AreEqual(false, subnetted, "subnetted"); } - - [TestMethod] - public void TestTrySubnet5() - { + + [TestMethod] + public void TestTrySubnet5() + { var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); byte cidr = 65; @@ -2176,10 +2175,10 @@ public void TestTrySubnet5() Assert.AreEqual("2001:db8::/65", subnets[0].ToString(), "subnet1"); Assert.AreEqual("2001:db8:0:0:8000::/65", subnets[1].ToString(), "subnet2"); } - - [TestMethod] - public void TestTrySubnet6() - { + + [TestMethod] + public void TestTrySubnet6() + { var ipnetwork = IPNetwork2.Parse("2001:db8::/64"); byte cidr = 68; @@ -2204,15 +2203,15 @@ public void TestTrySubnet6() Assert.AreEqual("2001:db8:0:0:d000::/68", subnets[13].ToString(), "subnet14"); Assert.AreEqual("2001:db8:0:0:e000::/68", subnets[14].ToString(), "subnet15"); Assert.AreEqual("2001:db8:0:0:f000::/68", subnets[15].ToString(), "subnet16"); - } - - #endregion - - #region TrySupernet - - [TestMethod] - public void TestTrySupernet1() - { + } + + #endregion + + #region TrySupernet + + [TestMethod] + public void TestTrySupernet1() + { var network1 = IPNetwork2.Parse("2001:db8::/65"); var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); @@ -2224,10 +2223,10 @@ public void TestTrySupernet1() Assert.AreEqual(supernetExpected, supernet, "supernet"); } - [TestMethod] - [ExpectedException(typeof(ArgumentNullException))] - public void TestTrySupernet2() - { + [TestMethod] + [ExpectedException(typeof(ArgumentNullException))] + public void TestTrySupernet2() + { IPNetwork2 network1 = null; var network2 = IPNetwork2.Parse("2001:db8::/64"); IPNetwork2 supernet; @@ -2236,9 +2235,9 @@ public void TestTrySupernet2() #pragma warning restore 0618 } - [TestMethod] - public void TestTrySupernet3() - { + [TestMethod] + public void TestTrySupernet3() + { var network1 = IPNetwork2.Parse("2001:db8::/64"); IPNetwork2 network2 = null; IPNetwork2 supernetExpected = null; @@ -2250,9 +2249,9 @@ public void TestTrySupernet3() Assert.AreEqual(parsed, result, "parsed"); } - [TestMethod] - public void TestTrySupernet4() - { + [TestMethod] + public void TestTrySupernet4() + { var network1 = IPNetwork2.Parse("2001:db8::/64"); var network2 = IPNetwork2.Parse("2001:db9::/65"); IPNetwork2 supernetExpected = null; @@ -2264,9 +2263,9 @@ public void TestTrySupernet4() Assert.AreEqual(parsed, result, "parsed"); } - [TestMethod] - public void TestTrySupernet5() - { + [TestMethod] + public void TestTrySupernet5() + { var network1 = IPNetwork2.Parse("2001:db8::/64"); var network2 = IPNetwork2.Parse("2001:dba::/64"); IPNetwork2 supernetExpected = null; @@ -2278,9 +2277,9 @@ public void TestTrySupernet5() Assert.AreEqual(parsed, result, "parsed"); } - [TestMethod] - public void TestTrySupernet6() - { + [TestMethod] + public void TestTrySupernet6() + { var network1 = IPNetwork2.Parse("2001:db8::/64"); var network2 = IPNetwork2.Parse("2001:db8::1/65"); var supernetExpected = IPNetwork2.Parse("2001:db8::/64"); @@ -2292,9 +2291,9 @@ public void TestTrySupernet6() Assert.AreEqual(parsed, result, "parsed"); } - [TestMethod] - public void TestTrySupernet8() - { + [TestMethod] + public void TestTrySupernet8() + { var network1 = IPNetwork2.Parse("2001:db0::/64"); var network2 = IPNetwork2.Parse("2001:dbf::/64"); IPNetwork2 supernetExpected = null; @@ -2306,13 +2305,13 @@ public void TestTrySupernet8() Assert.AreEqual(parsed, result, "parsed"); } - [TestMethod] - public void TestTrySupernet9() - { + [TestMethod] + public void TestTrySupernet9() + { var network1 = IPNetwork2.Parse("192.168.1.1/24"); var network2 = IPNetwork2.Parse("192.168.2.1/24"); - IPNetwork2[] network3 = new[] { network1, network2 }; - IPNetwork2[] supernetExpected = new[] { network1, network2 }; + IPNetwork2[] network3 = { network1, network2 }; + IPNetwork2[] supernetExpected = { network1, network2 }; IPNetwork2[] supernet; bool parsed = true; bool result = IPNetwork2.TrySupernet(network3, out supernet); @@ -2321,14 +2320,14 @@ public void TestTrySupernet9() Assert.AreEqual(supernetExpected[1], supernet[1], "supernet"); Assert.AreEqual(parsed, result, "parsed"); } - - [TestMethod] - public void TestTrySupernet10() - { + + [TestMethod] + public void TestTrySupernet10() + { var network1 = IPNetwork2.Parse("2001:db8:0000::/65"); var network2 = IPNetwork2.Parse("2001:db8:0:0:8000::/65"); - IPNetwork2[] network3 = new[] { network1, network2 }; - IPNetwork2[] supernetExpected = new[] { IPNetwork2.Parse("2001:db8::/64") }; + IPNetwork2[] network3 = { network1, network2 }; + IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; IPNetwork2[] supernet; bool parsed = true; bool result = IPNetwork2.TrySupernet(network3, out supernet); @@ -2336,12 +2335,12 @@ public void TestTrySupernet10() Assert.AreEqual(supernetExpected[0], supernet[0], "supernet"); Assert.AreEqual(parsed, result, "parsed"); } - - [TestMethod] - public void TestTrySupernet11() - { + + [TestMethod] + public void TestTrySupernet11() + { IPNetwork2[] network3 = null; - IPNetwork2[] supernetExpected = new[] { IPNetwork2.Parse("2001:db8::/64") }; + IPNetwork2[] supernetExpected = { IPNetwork2.Parse("2001:db8::/64") }; IPNetwork2[] supernet; bool parsed = false; bool result = IPNetwork2.TrySupernet(network3, out supernet); @@ -2349,14 +2348,14 @@ public void TestTrySupernet11() Assert.AreEqual(null, supernet, "supernet"); Assert.AreEqual(parsed, result, "parsed"); } - - #endregion - - #region TryGuessCidr - [TestMethod] - public void TestTryGuessCidrNull() - { + #endregion + + #region TryGuessCidr + + [TestMethod] + public void TestTryGuessCidrNull() + { byte cidr; bool parsed = IPNetwork2.TryGuessCidr(null, out cidr); @@ -2364,9 +2363,9 @@ public void TestTryGuessCidrNull() Assert.AreEqual(0, cidr, "cidr"); } - [TestMethod] - public void TestTryGuessCidr1() - { + [TestMethod] + public void TestTryGuessCidr1() + { byte cidr; bool parsed = IPNetwork2.TryGuessCidr("::", out cidr); @@ -2374,204 +2373,203 @@ public void TestTryGuessCidr1() Assert.AreEqual(64, cidr, "cidr"); } - [TestMethod] - public void TestTryGuessCidr2() - { + [TestMethod] + public void TestTryGuessCidr2() + { byte cidr; bool parsed = IPNetwork2.TryGuessCidr("2001:0db8::", out cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(64, cidr, "cidr"); } - - #endregion - - #region Count - [TestMethod] - public void Total32() - { + #endregion + + #region Count + + [TestMethod] + public void Total32() + { var network = IPNetwork2.Parse("::/128"); int total = 1; Assert.AreEqual(total, network.Total, "Total"); } - [TestMethod] - public void Total31() - { + [TestMethod] + public void Total31() + { var network = IPNetwork2.Parse("::/127"); int total = 2; Assert.AreEqual(total, network.Total, "Total"); } - [TestMethod] - public void Total30() - { + [TestMethod] + public void Total30() + { var network = IPNetwork2.Parse("::/126"); int total = 4; Assert.AreEqual(total, network.Total, "Total"); } - [TestMethod] - public void Total24() - { + [TestMethod] + public void Total24() + { var network = IPNetwork2.Parse("::/120"); int total = 256; Assert.AreEqual(total, network.Total, "Total"); } - [TestMethod] - public void Total16() - { + [TestMethod] + public void Total16() + { var network = IPNetwork2.Parse("::/112"); int total = 65536; Assert.AreEqual(total, network.Total, "Total"); } - [TestMethod] - public void Total8() - { + [TestMethod] + public void Total8() + { var network = IPNetwork2.Parse("::/104"); int total = 16777216; Assert.AreEqual(total, network.Total, "Total"); } - [TestMethod] - public void Total0() - { + [TestMethod] + public void Total0() + { var network = IPNetwork2.Parse("::/0"); var total = BigInteger.Pow(2, 128); Assert.AreEqual(total, network.Total, "Total"); } - #endregion + #endregion - #region Usable + #region Usable - [TestMethod] - public void Usable32() - { + [TestMethod] + public void Usable32() + { var network = IPNetwork2.Parse("::/128"); uint usable = 1; Assert.AreEqual(usable, network.Usable, "Usable"); } - [TestMethod] - public void Usable31() - { + [TestMethod] + public void Usable31() + { var network = IPNetwork2.Parse("::/127"); uint usable = 2; Assert.AreEqual(usable, network.Usable, "Usable"); } - [TestMethod] - public void Usable30() - { + [TestMethod] + public void Usable30() + { var network = IPNetwork2.Parse("::/126"); uint usable = 4; Assert.AreEqual(usable, network.Usable, "Usable"); } - [TestMethod] - public void Usable24() - { + [TestMethod] + public void Usable24() + { var network = IPNetwork2.Parse("::/120"); uint usable = 256; Assert.AreEqual(usable, network.Usable, "Usable"); } - [TestMethod] - public void Usable16() - { + [TestMethod] + public void Usable16() + { var network = IPNetwork2.Parse("::/112"); uint usable = 65536; Assert.AreEqual(usable, network.Usable, "Usable"); } - [TestMethod] - public void Usable8() - { + [TestMethod] + public void Usable8() + { var network = IPNetwork2.Parse("::/104"); uint usable = 16777216; Assert.AreEqual(usable, network.Usable, "Usable"); } - [TestMethod] - public void Usable0() - { + [TestMethod] + public void Usable0() + { var network = IPNetwork2.Parse("::/0"); var usable = BigInteger.Pow(2, 128); Assert.AreEqual(usable, network.Usable, "Usable"); } - #endregion + #endregion - #region TryParseCidr + #region TryParseCidr - [TestMethod] - public void TryParseCidr1() - { + [TestMethod] + public void TryParseCidr1() + { string sidr = "0"; byte? cidr; byte? result = 0; - bool parsed = IPNetwork2.TryParseCidr(sidr, Sockets.AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); } - [TestMethod] - public void TryParseCidr2() - { + [TestMethod] + public void TryParseCidr2() + { string sidr = "sadsd"; byte? cidr; byte? result = null; - bool parsed = IPNetwork2.TryParseCidr(sidr, Sockets.AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); } - [TestMethod] - public void TryParseCidr33() - { + [TestMethod] + public void TryParseCidr33() + { string sidr = "33"; byte? cidr; byte result = 33; - bool parsed = IPNetwork2.TryParseCidr(sidr, Sockets.AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); } - [TestMethod] - public void TryParseCidr128() - { + [TestMethod] + public void TryParseCidr128() + { string sidr = "128"; byte? cidr; byte result = 128; - bool parsed = IPNetwork2.TryParseCidr(sidr, Sockets.AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); Assert.AreEqual(true, parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); } - - [TestMethod] - public void TryParseCidr129() - { + + [TestMethod] + public void TryParseCidr129() + { string sidr = "129"; byte? cidr; byte? result = null; - bool parsed = IPNetwork2.TryParseCidr(sidr, Sockets.AddressFamily.InterNetworkV6, out cidr); + bool parsed = IPNetwork2.TryParseCidr(sidr, AddressFamily.InterNetworkV6, out cidr); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(result, cidr, "cidr"); } - #endregion - } -} + #endregion +} \ No newline at end of file diff --git a/src/TestProject/SerializeBinaryFormatterTest.cs b/src/TestProject/SerializeBinaryFormatterTest.cs index 48ccae3f..c41e61d1 100644 --- a/src/TestProject/SerializeBinaryFormatterTest.cs +++ b/src/TestProject/SerializeBinaryFormatterTest.cs @@ -2,21 +2,19 @@ // Copyright (c) IPNetwork. All rights reserved. // + #pragma warning disable SYSLIB0011 // Type or member is obsolete -namespace System.Net.TestSerialization -{ - using System.IO; - using System.Runtime.Serialization.Formatters.Binary; - using Microsoft.VisualStudio.TestTools.UnitTesting; +namespace TestProject; +using System.Runtime.Serialization.Formatters.Binary; - [TestClass] - public class SerializeBinaryFormatterTest +[TestClass] +public class SerializeBinaryFormatterTest +{ + [TestMethod] + [Ignore] // ("Assembly version is writen in binary serilaization.") + public void Test_Serialize_BinaryFormatter() { - [TestMethod] - [Ignore] // ("Assembly version is writen in binary serilaization.") - public void Test_Serialize_BinaryFormatter() - { var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); var serializer = new BinaryFormatter(); @@ -25,15 +23,17 @@ public void Test_Serialize_BinaryFormatter() serializer.Serialize(mem, ipnetwork); string result = Convert.ToBase64String(mem.ToArray()); - string expected = "AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uTmV0LklQTmV0d29yaywgVmVyc2lvbj0yLjUuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTcxNzM0M2NjMmMyNWVkY2YFAQAAABVTeXN0ZW0uTmV0LklQTmV0d29yazIBAAAACUlQTmV0d29yawECAAAABgMAAAAKMTAuMC4wLjAvOAs="; + string expected = + "AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uTmV0LklQTmV0d29yaywgVmVyc2lvbj0yLjUuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTcxNzM0M2NjMmMyNWVkY2YFAQAAABVTeXN0ZW0uTmV0LklQTmV0d29yazIBAAAACUlQTmV0d29yawECAAAABgMAAAAKMTAuMC4wLjAvOAs="; Assert.AreEqual(expected, result); } - [TestMethod] - public void Test_Deserialize_BinaryFormatter() - { - string base64 = "AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uTmV0LklQTmV0d29yaywgVmVyc2lvbj0yLjUuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTcxNzM0M2NjMmMyNWVkY2YFAQAAABVTeXN0ZW0uTmV0LklQTmV0d29yazIBAAAACUlQTmV0d29yawECAAAABgMAAAAKMTAuMC4wLjAvOAs="; + [TestMethod] + public void Test_Deserialize_BinaryFormatter() + { + string base64 = + "AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uTmV0LklQTmV0d29yaywgVmVyc2lvbj0yLjUuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTcxNzM0M2NjMmMyNWVkY2YFAQAAABVTeXN0ZW0uTmV0LklQTmV0d29yazIBAAAACUlQTmV0d29yawECAAAABgMAAAAKMTAuMC4wLjAvOAs="; byte[] bytes = Convert.FromBase64String(base64); var mem = new MemoryStream(bytes); @@ -44,9 +44,9 @@ public void Test_Deserialize_BinaryFormatter() Assert.AreEqual(expected, result); } - [TestMethod] - public void Test_Serialize_Deserialize_BinaryFormatter() - { + [TestMethod] + public void Test_Serialize_Deserialize_BinaryFormatter() + { var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); var serializer = new BinaryFormatter(); @@ -60,10 +60,10 @@ public void Test_Serialize_Deserialize_BinaryFormatter() Assert.AreEqual(ipnetwork, ipnetwork2); } - [TestMethod] - [TestCategory("LongRunning")] - public void Test_1_000_000_Serialize_BinaryFormatter() - { + [TestMethod] + [TestCategory("LongRunning")] + public void Test_1_000_000_Serialize_BinaryFormatter() + { var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); var serializer = new BinaryFormatter(); @@ -78,11 +78,12 @@ public void Test_1_000_000_Serialize_BinaryFormatter() // 5.13 seconds(Ad hoc). } - [TestMethod] - [TestCategory("LongRunning")] - public void Test_1_000_000_Deserialize_BinaryFormatter() - { - string base64 = "AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uTmV0LklQTmV0d29yaywgVmVyc2lvbj0yLjUuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTcxNzM0M2NjMmMyNWVkY2YFAQAAABVTeXN0ZW0uTmV0LklQTmV0d29yazIBAAAACUlQTmV0d29yawECAAAABgMAAAAKMTAuMC4wLjAvOAs="; + [TestMethod] + [TestCategory("LongRunning")] + public void Test_1_000_000_Deserialize_BinaryFormatter() + { + string base64 = + "AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uTmV0LklQTmV0d29yaywgVmVyc2lvbj0yLjUuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTcxNzM0M2NjMmMyNWVkY2YFAQAAABVTeXN0ZW0uTmV0LklQTmV0d29yazIBAAAACUlQTmV0d29yawECAAAABgMAAAAKMTAuMC4wLjAvOAs="; byte[] bytes = Convert.FromBase64String(base64); var mem = new MemoryStream(bytes); @@ -97,10 +98,10 @@ public void Test_1_000_000_Deserialize_BinaryFormatter() // 11.949 seconds(Ad hoc). } - [TestMethod] - [TestCategory("LongRunning")] - public void Test_1_000_000_Serialize_Deserialize_BinaryFormatter() - { + [TestMethod] + [TestCategory("LongRunning")] + public void Test_1_000_000_Serialize_Deserialize_BinaryFormatter() + { var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); var serializer = new BinaryFormatter(); @@ -118,6 +119,5 @@ public void Test_1_000_000_Serialize_Deserialize_BinaryFormatter() // 17.48 seconds(Ad hoc). } - } } -#pragma warning restore SYSLIB0011 // Type or member is obsolete +#pragma warning restore SYSLIB0011 // Type or member is obsolete \ No newline at end of file diff --git a/src/TestProject/SerializeDataContractTest.cs b/src/TestProject/SerializeDataContractTest.cs index 0dfa1cda..c68ec720 100644 --- a/src/TestProject/SerializeDataContractTest.cs +++ b/src/TestProject/SerializeDataContractTest.cs @@ -2,26 +2,25 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net.TestSerialization.NetFramework -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; +namespace TestProject; - [TestClass] - public class SerializeDataContractTest +[TestClass] +public class SerializeDataContractTest +{ + [TestMethod] + public void Test_Serialize_DataContract() { - [TestMethod] - public void Test_Serialize_DataContract() - { var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); string result = DataContractSerializeHelper.Serialize(ipnetwork); - string expected = $"{Environment.NewLine} 10.0.0.0/8{Environment.NewLine}"; + string expected = + $"{Environment.NewLine} 10.0.0.0/8{Environment.NewLine}"; Assert.AreEqual(expected, result); } - [TestMethod] - public void Test_Deserialize_DataContract() - { + [TestMethod] + public void Test_Deserialize_DataContract() + { var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); string serialized = DataContractSerializeHelper.Serialize(ipnetwork); @@ -30,11 +29,10 @@ public void Test_Deserialize_DataContract() Assert.AreEqual(ipnetwork, result); } - [TestMethod] - public void Test_Empty_Constructor() - { + [TestMethod] + public void Test_Empty_Constructor() + { var ipnetwork = new IPNetwork2(); Assert.AreEqual("0.0.0.0/0", ipnetwork.ToString()); } - } } \ No newline at end of file diff --git a/src/TestProject/SerializeJsonTest.cs b/src/TestProject/SerializeJsonTest.cs index 9122606c..613d5272 100644 --- a/src/TestProject/SerializeJsonTest.cs +++ b/src/TestProject/SerializeJsonTest.cs @@ -2,17 +2,15 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net.TestSerialization.NetFramework -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - using Newtonsoft.Json; - [TestClass] - public class SerializeJsonTest +namespace TestProject; + +[TestClass] +public class SerializeJsonTest +{ + [TestMethod] + public void Test_Serialize_Json() { - [TestMethod] - public void Test_Serialize_Json() - { var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); string result = JsonConvert.SerializeObject(ipnetwork); @@ -21,9 +19,9 @@ public void Test_Serialize_Json() Assert.AreEqual(expected, result); } - [TestMethod] - public void Test_Deserialize_Json() - { + [TestMethod] + public void Test_Deserialize_Json() + { string json = "{\"IPNetwork\":\"10.0.0.0/8\"}"; IPNetwork2 result = JsonConvert.DeserializeObject(json); @@ -32,9 +30,9 @@ public void Test_Deserialize_Json() Assert.AreEqual(expected, result); } - [TestMethod] - public void Test_Serialize_Deserialize_Json() - { + [TestMethod] + public void Test_Serialize_Deserialize_Json() + { var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); string json = JsonConvert.SerializeObject(ipnetwork); @@ -43,10 +41,10 @@ public void Test_Serialize_Deserialize_Json() Assert.AreEqual(ipnetwork, result); } - [TestMethod] - [TestCategory("LongRunning")] - public void Test_1_000_000_Serialize_Json() - { + [TestMethod] + [TestCategory("LongRunning")] + public void Test_1_000_000_Serialize_Json() + { var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); for (int i = 0; i < 1000000; i++) @@ -57,10 +55,10 @@ public void Test_1_000_000_Serialize_Json() // 3.06 seconds(Ad hoc). } - [TestMethod] - [TestCategory("LongRunning")] - public void Test_1_000_000_Deserialize_Json() - { + [TestMethod] + [TestCategory("LongRunning")] + public void Test_1_000_000_Deserialize_Json() + { string json = "{\"IPNetwork\":\"10.0.0.0/8\"}"; for (int i = 0; i < 1000000; i++) @@ -71,10 +69,10 @@ public void Test_1_000_000_Deserialize_Json() // 10.20 seconds(Ad hoc). } - [TestMethod] - [TestCategory("LongRunning")] - public void Test_1_000_000_Serialize_Deserialize_Json() - { + [TestMethod] + [TestCategory("LongRunning")] + public void Test_1_000_000_Serialize_Deserialize_Json() + { var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); for (int i = 0; i < 1000000; i++) @@ -85,5 +83,4 @@ public void Test_1_000_000_Serialize_Deserialize_Json() // 13.49 seconds(Ad hoc). } - } -} +} \ No newline at end of file diff --git a/src/TestProject/SerializeXmlTest.cs b/src/TestProject/SerializeXmlTest.cs index 7a64e899..5a3725f3 100644 --- a/src/TestProject/SerializeXmlTest.cs +++ b/src/TestProject/SerializeXmlTest.cs @@ -2,19 +2,14 @@ // Copyright (c) IPNetwork. All rights reserved. // -namespace System.Net.TestSerialization.NetFramework -{ - using System.IO; - using System.Text; - using System.Xml.Serialization; - using Microsoft.VisualStudio.TestTools.UnitTesting; +namespace TestProject; - [TestClass] - public class SerializeXmlTest +[TestClass] +public class SerializeXmlTest +{ + [TestMethod] + public void Test_Serialize_Xml() { - [TestMethod] - public void Test_Serialize_Xml() - { var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); var mem = new MemoryStream(); @@ -30,9 +25,9 @@ public void Test_Serialize_Xml() Assert.IsTrue(ok, result); } - [TestMethod] - public void Test_Deserialize_Xml() - { + [TestMethod] + public void Test_Deserialize_Xml() + { string xml = @" 10.0.0.0/8 @@ -47,9 +42,9 @@ public void Test_Deserialize_Xml() Assert.AreEqual(expected, result); } - [TestMethod] - public void Test_Serialize_Deserialize_Xml() - { + [TestMethod] + public void Test_Serialize_Deserialize_Xml() + { var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); var mem = new MemoryStream(); @@ -66,10 +61,10 @@ public void Test_Serialize_Deserialize_Xml() Assert.AreEqual(ipnetwork, ipnetwork2); } - [TestMethod] - [TestCategory("LongRunning")] - public void Test_1_000_000_Serialize_Xml() - { + [TestMethod] + [TestCategory("LongRunning")] + public void Test_1_000_000_Serialize_Xml() + { var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); var serializer = new XmlSerializer(typeof(IPNetwork2)); @@ -84,10 +79,10 @@ public void Test_1_000_000_Serialize_Xml() // 5.13 seconds(Ad hoc). } - [TestMethod] - [TestCategory("LongRunning")] - public void Test_1_000_000_Deserialize_Xml() - { + [TestMethod] + [TestCategory("LongRunning")] + public void Test_1_000_000_Deserialize_Xml() + { string xml = @" 10.0.0.0/8 @@ -106,10 +101,10 @@ public void Test_1_000_000_Deserialize_Xml() // 17.98 seconds(Ad hoc). } - [TestMethod] - [TestCategory("LongRunning")] - public void Test_1_000_000_Serialize_Deserialize_Xml() - { + [TestMethod] + [TestCategory("LongRunning")] + public void Test_1_000_000_Serialize_Deserialize_Xml() + { var ipnetwork = IPNetwork2.Parse("10.0.0.1/8"); var serializer = new XmlSerializer(typeof(IPNetwork2)); @@ -127,5 +122,4 @@ public void Test_1_000_000_Serialize_Deserialize_Xml() // 17.48 seconds(Ad hoc). } - } -} +} \ No newline at end of file diff --git a/src/TestProject/TestProject.csproj b/src/TestProject/TestProject.csproj index 3c999882..8777d93c 100644 --- a/src/TestProject/TestProject.csproj +++ b/src/TestProject/TestProject.csproj @@ -58,6 +58,7 @@ + @@ -96,4 +97,14 @@ + + + + + + + + + + diff --git a/src/TestProject/TryParseUnitTest.cs b/src/TestProject/TryParseUnitTest.cs index 59c0b80c..4777d6c8 100644 --- a/src/TestProject/TryParseUnitTest.cs +++ b/src/TestProject/TryParseUnitTest.cs @@ -65,7 +65,7 @@ public void TestTryParseIPAddressNetmaskANE6() [TestMethod] public void TestTryParseIPAddressNetmaskANE7() { - bool parsed = IPNetwork2.TryParse("0.0.0.0", netmask: null, out IPNetwork2 ipnet); + bool parsed = IPNetwork2.TryParse("0.0.0.0", null, out IPNetwork2 ipnet); Assert.AreEqual(false, parsed, "parsed"); Assert.AreEqual(null, ipnet, "ipnet"); diff --git a/src/TestProject/WildcardMaskIPv4UnitTest.cs b/src/TestProject/WildcardMaskIPv4UnitTest.cs new file mode 100644 index 00000000..54cf852a --- /dev/null +++ b/src/TestProject/WildcardMaskIPv4UnitTest.cs @@ -0,0 +1,113 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject; + +[TestClass] +public class WildcardMaskIPv4UnitTest +{ + [DataTestMethod] + [DataRow(0, "0.0.0.0", "255.255.255.255")] + [DataRow(32, "255.255.255.255", "0.0.0.0")] + public void Test_WildcardMask_ipv4_mask(int cidr, string thenNetmask, string andWildcardmask) + { + var ipnetwork = IPNetwork2.Parse($"1.1.1.1/{cidr}"); + + string netmask = ipnetwork.Netmask.ToString(); + string wildcardmask = ipnetwork.WildcardMask.ToString(); + + Assert.AreEqual(thenNetmask, netmask, "netmask"); + Assert.AreEqual(andWildcardmask, wildcardmask, "wildcardmask"); + } + + [DataTestMethod] + [DataRow("255.255.255.255", "0.0.0.0")] + [DataRow("255.255.255.254", "0.0.0.1")] + [DataRow("255.255.255.252", "0.0.0.3")] + [DataRow("255.255.255.248", "0.0.0.7")] + [DataRow("255.255.255.240", "0.0.0.15")] + [DataRow("255.255.255.224", "0.0.0.31")] + [DataRow("255.255.255.192", "0.0.0.63")] + [DataRow("255.255.255.128", "0.0.0.127")] + [DataRow("255.255.255.0", "0.0.0.255")] + [DataRow("255.255.254.0", "0.0.1.255")] + [DataRow("255.255.252.0", "0.0.3.255")] + [DataRow("255.255.248.0", "0.0.7.255")] + [DataRow("255.255.240.0", "0.0.15.255")] + [DataRow("255.255.224.0", "0.0.31.255")] + [DataRow("255.255.192.0", "0.0.63.255")] + [DataRow("255.255.128.0", "0.0.127.255")] + [DataRow("255.255.0.0", "0.0.255.255")] + [DataRow("255.254.0.0", "0.1.255.255")] + [DataRow("255.252.0.0", "0.3.255.255")] + [DataRow("255.248.0.0", "0.7.255.255")] + [DataRow("255.240.0.0", "0.15.255.255")] + [DataRow("255.224.0.0", "0.31.255.255")] + [DataRow("255.192.0.0", "0.63.255.255")] + [DataRow("255.128.0.0", "0.127.255.255")] + [DataRow("255.0.0.0", "0.255.255.255")] + [DataRow("254.0.0.0", "1.255.255.255")] + [DataRow("252.0.0.0", "3.255.255.255")] + [DataRow("248.0.0.0", "7.255.255.255")] + [DataRow("240.0.0.0", "15.255.255.255")] + [DataRow("224.0.0.0", "31.255.255.255")] + [DataRow("192.0.0.0", "63.255.255.255")] + [DataRow("128.0.0.0", "127.255.255.255")] + [DataRow("0.0.0.0", "255.255.255.255")] + public void Test_WildcardMask_ipv4(string netmask, string expected) + { + var ipnetwork = IPNetwork2.Parse($"1.1.1.1/{netmask}"); + + string netmask2 = ipnetwork.Netmask.ToString(); + string wildcardmask = ipnetwork.WildcardMask.ToString(); + + Assert.AreEqual(netmask, netmask2, "netmask"); + Assert.AreEqual(expected, wildcardmask, "wildcardmask"); + } + + [DataTestMethod] + [DataRow(32, "0.0.0.0")] + [DataRow(31, "0.0.0.1")] + [DataRow(30, "0.0.0.3")] + [DataRow(29, "0.0.0.7")] + [DataRow(28, "0.0.0.15")] + [DataRow(27, "0.0.0.31")] + [DataRow(26, "0.0.0.63")] + [DataRow(25, "0.0.0.127")] + [DataRow(24, "0.0.0.255")] + [DataRow(23, "0.0.1.255")] + [DataRow(22, "0.0.3.255")] + [DataRow(21, "0.0.7.255")] + [DataRow(20, "0.0.15.255")] + [DataRow(19, "0.0.31.255")] + [DataRow(18, "0.0.63.255")] + [DataRow(17, "0.0.127.255")] + [DataRow(16, "0.0.255.255")] + [DataRow(15, "0.1.255.255")] + [DataRow(14, "0.3.255.255")] + [DataRow(13, "0.7.255.255")] + [DataRow(12, "0.15.255.255")] + [DataRow(11, "0.31.255.255")] + [DataRow(10, "0.63.255.255")] + [DataRow(9, "0.127.255.255")] + [DataRow(8, "0.255.255.255")] + [DataRow(7, "1.255.255.255")] + [DataRow(6, "3.255.255.255")] + [DataRow(5, "7.255.255.255")] + [DataRow(4, "15.255.255.255")] + [DataRow(3, "31.255.255.255")] + [DataRow(2, "63.255.255.255")] + [DataRow(1, "127.255.255.255")] + [DataRow(0, "255.255.255.255")] + public void Test_WildcardMask_ipv4_cidr(int cidr, string expected) + { + var ipnetwork = IPNetwork2.Parse($"1.1.1.1/{cidr}"); + + int cidr2 = ipnetwork.Cidr; + string wildcardmask = ipnetwork.WildcardMask.ToString(); + + Assert.AreEqual(cidr, cidr2, "netmask"); + Assert.AreEqual(expected, wildcardmask, "wildcardmask"); + } +} \ No newline at end of file diff --git a/src/TestProject/WildcardMaskIPv6UnitTest.cs b/src/TestProject/WildcardMaskIPv6UnitTest.cs new file mode 100644 index 00000000..add194b6 --- /dev/null +++ b/src/TestProject/WildcardMaskIPv6UnitTest.cs @@ -0,0 +1,192 @@ +// +// Copyright (c) IPNetwork. All rights reserved. +// + +namespace TestProject; + +[TestClass] +public class WildcardMaskIPv6UnitTest +{ + [TestMethod] + public void Test_WildcardMask_ipv6_mask_0() + { + var ipnetwork = IPNetwork2.Parse("::/0"); + + string netmask = ipnetwork.Netmask.ToString(); + string wildcardmask = ipnetwork.WildcardMask.ToString(); + + Assert.AreEqual("::", netmask, "netmask"); + Assert.AreEqual("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", wildcardmask, "wildcardmask"); + } + + [TestMethod] + public void Test_WildcardMask_ipv6_mask_128() + { + var ipnetwork = IPNetwork2.Parse("::/128"); + + string netmask = ipnetwork.Netmask.ToString(); + string wildcardmask = ipnetwork.WildcardMask.ToString(); + + Assert.AreEqual("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", netmask, "netmask"); + Assert.AreEqual("::", wildcardmask, "wildcardmask"); + } + + [DataTestMethod] + [DataRow("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", "::")] + [DataRow("ffff:ffff:ffff:ffff::", "::ffff:ffff:ffff:ffff")] + [DataRow("::", "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + public void Test_WildcardMask_ipv6(string netmask, string expected) + { + var ipnetwork = IPNetwork2.Parse($"::/{netmask}"); + + string netmask2 = ipnetwork.Netmask.ToString(); + string wildcardmask = ipnetwork.WildcardMask.ToString(); + + Assert.AreEqual(netmask, netmask2, "netmask"); + Assert.AreEqual(expected, wildcardmask, "wildcardmask"); + } + + [DataTestMethod] + [DataRow(128, "::")] + [DataRow(127, "::1")] + [DataRow(126, "::3")] + [DataRow(125, "::7")] + [DataRow(124, "::f")] + [DataRow(123, "::1f")] + [DataRow(122, "::3f")] + [DataRow(121, "::7f")] + [DataRow(120, "::ff")] + [DataRow(119, "::1ff")] + [DataRow(118, "::3ff")] + [DataRow(117, "::7ff")] + [DataRow(116, "::fff")] + [DataRow(115, "::1fff")] + [DataRow(114, "::3fff")] + [DataRow(113, "::7fff")] + [DataRow(112, "::ffff")] + [DataRow(111, "::1:ffff")] + [DataRow(110, "::3:ffff")] + [DataRow(109, "::7:ffff")] + [DataRow(108, "::f:ffff")] + [DataRow(107, "::1f:ffff")] + [DataRow(106, "::3f:ffff")] + [DataRow(105, "::7f:ffff")] + [DataRow(104, "::ff:ffff")] + [DataRow(103, "::1ff:ffff")] + [DataRow(102, "::3ff:ffff")] + [DataRow(101, "::7ff:ffff")] + [DataRow(100, "::fff:ffff")] + [DataRow(99, "::1fff:ffff")] + [DataRow(98, "::3fff:ffff")] + [DataRow(97, "::7fff:ffff")] + [DataRow(96, "::ffff:ffff")] + [DataRow(95, "::1:ffff:ffff")] + [DataRow(94, "::3:ffff:ffff")] + [DataRow(93, "::7:ffff:ffff")] + [DataRow(92, "::f:ffff:ffff")] + [DataRow(91, "::1f:ffff:ffff")] + [DataRow(90, "::3f:ffff:ffff")] + [DataRow(89, "::7f:ffff:ffff")] + [DataRow(88, "::ff:ffff:ffff")] + [DataRow(87, "::1ff:ffff:ffff")] + [DataRow(86, "::3ff:ffff:ffff")] + [DataRow(85, "::7ff:ffff:ffff")] + [DataRow(84, "::fff:ffff:ffff")] + [DataRow(83, "::1fff:ffff:ffff")] + [DataRow(82, "::3fff:ffff:ffff")] + [DataRow(81, "::7fff:ffff:ffff")] + [DataRow(80, "::ffff:ffff:ffff")] + [DataRow(79, "::1:ffff:ffff:ffff")] + [DataRow(78, "::3:ffff:ffff:ffff")] + [DataRow(77, "::7:ffff:ffff:ffff")] + [DataRow(76, "::f:ffff:ffff:ffff")] + [DataRow(75, "::1f:ffff:ffff:ffff")] + [DataRow(74, "::3f:ffff:ffff:ffff")] + [DataRow(73, "::7f:ffff:ffff:ffff")] + [DataRow(72, "::ff:ffff:ffff:ffff")] + [DataRow(71, "::1ff:ffff:ffff:ffff")] + [DataRow(70, "::3ff:ffff:ffff:ffff")] + [DataRow(69, "::7ff:ffff:ffff:ffff")] + [DataRow(68, "::fff:ffff:ffff:ffff")] + [DataRow(67, "::1fff:ffff:ffff:ffff")] + [DataRow(66, "::3fff:ffff:ffff:ffff")] + [DataRow(65, "::7fff:ffff:ffff:ffff")] + [DataRow(64, "::ffff:ffff:ffff:ffff")] + [DataRow(63, "::1:ffff:ffff:ffff:ffff")] + [DataRow(62, "::3:ffff:ffff:ffff:ffff")] + [DataRow(61, "::7:ffff:ffff:ffff:ffff")] + [DataRow(60, "::f:ffff:ffff:ffff:ffff")] + [DataRow(59, "::1f:ffff:ffff:ffff:ffff")] + [DataRow(58, "::3f:ffff:ffff:ffff:ffff")] + [DataRow(57, "::7f:ffff:ffff:ffff:ffff")] + [DataRow(56, "::ff:ffff:ffff:ffff:ffff")] + [DataRow(55, "::1ff:ffff:ffff:ffff:ffff")] + [DataRow(54, "::3ff:ffff:ffff:ffff:ffff")] + [DataRow(53, "::7ff:ffff:ffff:ffff:ffff")] + [DataRow(52, "::fff:ffff:ffff:ffff:ffff")] + [DataRow(51, "::1fff:ffff:ffff:ffff:ffff")] + [DataRow(50, "::3fff:ffff:ffff:ffff:ffff")] + [DataRow(49, "::7fff:ffff:ffff:ffff:ffff")] + [DataRow(48, "::ffff:ffff:ffff:ffff:ffff")] + [DataRow(47, "::1:ffff:ffff:ffff:ffff:ffff")] + [DataRow(46, "::3:ffff:ffff:ffff:ffff:ffff")] + [DataRow(45, "::7:ffff:ffff:ffff:ffff:ffff")] + [DataRow(44, "::f:ffff:ffff:ffff:ffff:ffff")] + [DataRow(43, "::1f:ffff:ffff:ffff:ffff:ffff")] + [DataRow(42, "::3f:ffff:ffff:ffff:ffff:ffff")] + [DataRow(41, "::7f:ffff:ffff:ffff:ffff:ffff")] + [DataRow(40, "::ff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(39, "::1ff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(38, "::3ff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(37, "::7ff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(36, "::fff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(35, "::1fff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(34, "::3fff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(33, "::7fff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(32, "::ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(31, "0:1:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(30, "0:3:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(29, "0:7:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(28, "0:f:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(27, "0:1f:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(26, "0:3f:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(25, "0:7f:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(24, "0:ff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(23, "0:1ff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(22, "0:3ff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(21, "0:7ff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(20, "0:fff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(19, "0:1fff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(18, "0:3fff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(17, "0:7fff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(16, "0:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(15, "1:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(14, "3:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(13, "7:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(12, "f:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(11, "1f:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(10, "3f:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(9, "7f:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(8, "ff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(7, "1ff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(6, "3ff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(5, "7ff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(4, "fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(3, "1fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(2, "3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(1, "7fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + [DataRow(0, "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] + public void Test_WildcardMask_ipv6_cidr(int cidr, string expected) + { + var ipnetwork = IPNetwork2.Parse($"::/{cidr}"); + + int cidr2 = ipnetwork.Cidr; + var expectedipv6 = IPAddress.Parse(expected); + var expectedcidr = IPNetwork2.ToBigInteger(expectedipv6); + IPAddress wildcardmask = ipnetwork.WildcardMask; + var wildcardcidr = IPNetwork2.ToBigInteger(wildcardmask); + + Assert.AreEqual(cidr, cidr2, "netmask"); + Assert.AreEqual(expectedcidr, wildcardcidr, "wildcardcidr"); + } +} \ No newline at end of file diff --git a/src/TestProject/WildcardMaskUnitTest.cs b/src/TestProject/WildcardMaskUnitTest.cs deleted file mode 100644 index 6575aa9c..00000000 --- a/src/TestProject/WildcardMaskUnitTest.cs +++ /dev/null @@ -1,348 +0,0 @@ -// -// Copyright (c) IPNetwork. All rights reserved. -// - -namespace System.Net.TestProject -{ - using Microsoft.VisualStudio.TestTools.UnitTesting; - - [TestClass] - public class WildcardMaskUnitTest - { - #region ipv4 - [TestMethod] - public void Test_WildcardMask_ipv4_mask_0() - { - var ipnetwork = IPNetwork2.Parse("1.1.1.1/0"); - - string netmask = ipnetwork.Netmask.ToString(); - string wildcardmask = ipnetwork.WildcardMask.ToString(); - - Assert.AreEqual("0.0.0.0", netmask, "netmask"); - Assert.AreEqual("255.255.255.255", wildcardmask, "wildcardmask"); - } - - [TestMethod] - public void Test_WildcardMask_ipv4_mask_32() - { - var ipnetwork = IPNetwork2.Parse("1.1.1.1/32"); - - string netmask = ipnetwork.Netmask.ToString(); - string wildcardmask = ipnetwork.WildcardMask.ToString(); - - Assert.AreEqual("255.255.255.255", netmask, "netmask"); - Assert.AreEqual("0.0.0.0", wildcardmask, "wildcardmask"); - } - - [DataTestMethod] - [DataRow("255.255.255.255", "0.0.0.0")] - [DataRow("255.255.255.254", "0.0.0.1")] - [DataRow("255.255.255.252", "0.0.0.3")] - [DataRow("255.255.255.248", "0.0.0.7")] - [DataRow("255.255.255.240", "0.0.0.15")] - [DataRow("255.255.255.224", "0.0.0.31")] - [DataRow("255.255.255.192", "0.0.0.63")] - [DataRow("255.255.255.128", "0.0.0.127")] - [DataRow("255.255.255.0", "0.0.0.255")] - [DataRow("255.255.254.0", "0.0.1.255")] - [DataRow("255.255.252.0", "0.0.3.255")] - [DataRow("255.255.248.0", "0.0.7.255")] - [DataRow("255.255.240.0", "0.0.15.255")] - [DataRow("255.255.224.0", "0.0.31.255")] - [DataRow("255.255.192.0", "0.0.63.255")] - [DataRow("255.255.128.0", "0.0.127.255")] - [DataRow("255.255.0.0", "0.0.255.255")] - [DataRow("255.254.0.0", "0.1.255.255")] - [DataRow("255.252.0.0", "0.3.255.255")] - [DataRow("255.248.0.0", "0.7.255.255")] - [DataRow("255.240.0.0", "0.15.255.255")] - [DataRow("255.224.0.0", "0.31.255.255")] - [DataRow("255.192.0.0", "0.63.255.255")] - [DataRow("255.128.0.0", "0.127.255.255")] - [DataRow("255.0.0.0", "0.255.255.255")] - [DataRow("254.0.0.0", "1.255.255.255")] - [DataRow("252.0.0.0", "3.255.255.255")] - [DataRow("248.0.0.0", "7.255.255.255")] - [DataRow("240.0.0.0", "15.255.255.255")] - [DataRow("224.0.0.0", "31.255.255.255")] - [DataRow("192.0.0.0", "63.255.255.255")] - [DataRow("128.0.0.0", "127.255.255.255")] - [DataRow("0.0.0.0", "255.255.255.255")] - public void Test_WildcardMask_ipv4(string netmask, string expected) - { - var ipnetwork = IPNetwork2.Parse($"1.1.1.1/{netmask}"); - - string netmask2 = ipnetwork.Netmask.ToString(); - string wildcardmask = ipnetwork.WildcardMask.ToString(); - - Assert.AreEqual(netmask, netmask2, "netmask"); - Assert.AreEqual(expected, wildcardmask, "wildcardmask"); - } - - [DataTestMethod] - [DataRow(32, "0.0.0.0")] - [DataRow(31, "0.0.0.1")] - [DataRow(30, "0.0.0.3")] - [DataRow(29, "0.0.0.7")] - [DataRow(28, "0.0.0.15")] - [DataRow(27, "0.0.0.31")] - [DataRow(26, "0.0.0.63")] - [DataRow(25, "0.0.0.127")] - [DataRow(24, "0.0.0.255")] - [DataRow(23, "0.0.1.255")] - [DataRow(22, "0.0.3.255")] - [DataRow(21, "0.0.7.255")] - [DataRow(20, "0.0.15.255")] - [DataRow(19, "0.0.31.255")] - [DataRow(18, "0.0.63.255")] - [DataRow(17, "0.0.127.255")] - [DataRow(16, "0.0.255.255")] - [DataRow(15, "0.1.255.255")] - [DataRow(14, "0.3.255.255")] - [DataRow(13, "0.7.255.255")] - [DataRow(12, "0.15.255.255")] - [DataRow(11, "0.31.255.255")] - [DataRow(10, "0.63.255.255")] - [DataRow(9, "0.127.255.255")] - [DataRow(8, "0.255.255.255")] - [DataRow(7, "1.255.255.255")] - [DataRow(6, "3.255.255.255")] - [DataRow(5, "7.255.255.255")] - [DataRow(4, "15.255.255.255")] - [DataRow(3, "31.255.255.255")] - [DataRow(2, "63.255.255.255")] - [DataRow(1, "127.255.255.255")] - [DataRow(0, "255.255.255.255")] - public void Test_WildcardMask_ipv4_cidr(int cidr, string expected) - { - var ipnetwork = IPNetwork2.Parse($"1.1.1.1/{cidr}"); - - int cidr2 = (int)ipnetwork.Cidr; - string wildcardmask = ipnetwork.WildcardMask.ToString(); - - Assert.AreEqual(cidr, cidr2, "netmask"); - Assert.AreEqual(expected, wildcardmask, "wildcardmask"); - } - - #endregion - - #region ipv6 - - [TestMethod] - public void Test_WildcardMask_ipv6_mask_0() - { - var ipnetwork = IPNetwork2.Parse("::/0"); - - string netmask = ipnetwork.Netmask.ToString(); - string wildcardmask = ipnetwork.WildcardMask.ToString(); - - Assert.AreEqual("::", netmask, "netmask"); - Assert.AreEqual("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", wildcardmask, "wildcardmask"); - } - - [TestMethod] - public void Test_WildcardMask_ipv6_mask_128() - { - var ipnetwork = IPNetwork2.Parse("::/128"); - - string netmask = ipnetwork.Netmask.ToString(); - string wildcardmask = ipnetwork.WildcardMask.ToString(); - - Assert.AreEqual("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", netmask, "netmask"); - Assert.AreEqual("::", wildcardmask, "wildcardmask"); - } - - [DataTestMethod] - [DataRow("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", "::")] - [DataRow("ffff:ffff:ffff:ffff::", "::ffff:ffff:ffff:ffff")] - [DataRow("::", "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - public void Test_WildcardMask_ipv6(string netmask, string expected) - { - var ipnetwork = IPNetwork2.Parse($"::/{netmask}"); - - string netmask2 = ipnetwork.Netmask.ToString(); - string wildcardmask = ipnetwork.WildcardMask.ToString(); - - Assert.AreEqual(netmask, netmask2, "netmask"); - Assert.AreEqual(expected, wildcardmask, "wildcardmask"); - } - - [DataTestMethod] - [DataRow(128, "::")] - - [DataRow(127, "::1")] - [DataRow(126, "::3")] - [DataRow(125, "::7")] - [DataRow(124, "::f")] - - [DataRow(123, "::1f")] - [DataRow(122, "::3f")] - [DataRow(121, "::7f")] - [DataRow(120, "::ff")] - - [DataRow(119, "::1ff")] - [DataRow(118, "::3ff")] - [DataRow(117, "::7ff")] - [DataRow(116, "::fff")] - - [DataRow(115, "::1fff")] - [DataRow(114, "::3fff")] - [DataRow(113, "::7fff")] - [DataRow(112, "::ffff")] - - [DataRow(111, "::1:ffff")] - [DataRow(110, "::3:ffff")] - [DataRow(109, "::7:ffff")] - [DataRow(108, "::f:ffff")] - - [DataRow(107, "::1f:ffff")] - [DataRow(106, "::3f:ffff")] - [DataRow(105, "::7f:ffff")] - [DataRow(104, "::ff:ffff")] - - [DataRow(103, "::1ff:ffff")] - [DataRow(102, "::3ff:ffff")] - [DataRow(101, "::7ff:ffff")] - [DataRow(100, "::fff:ffff")] - - [DataRow(99, "::1fff:ffff")] - [DataRow(98, "::3fff:ffff")] - [DataRow(97, "::7fff:ffff")] - [DataRow(96, "::ffff:ffff")] - - [DataRow(95, "::1:ffff:ffff")] - [DataRow(94, "::3:ffff:ffff")] - [DataRow(93, "::7:ffff:ffff")] - [DataRow(92, "::f:ffff:ffff")] - - [DataRow(91, "::1f:ffff:ffff")] - [DataRow(90, "::3f:ffff:ffff")] - [DataRow(89, "::7f:ffff:ffff")] - [DataRow(88, "::ff:ffff:ffff")] - - [DataRow(87, "::1ff:ffff:ffff")] - [DataRow(86, "::3ff:ffff:ffff")] - [DataRow(85, "::7ff:ffff:ffff")] - [DataRow(84, "::fff:ffff:ffff")] - - [DataRow(83, "::1fff:ffff:ffff")] - [DataRow(82, "::3fff:ffff:ffff")] - [DataRow(81, "::7fff:ffff:ffff")] - [DataRow(80, "::ffff:ffff:ffff")] - - [DataRow(79, "::1:ffff:ffff:ffff")] - [DataRow(78, "::3:ffff:ffff:ffff")] - [DataRow(77, "::7:ffff:ffff:ffff")] - [DataRow(76, "::f:ffff:ffff:ffff")] - - [DataRow(75, "::1f:ffff:ffff:ffff")] - [DataRow(74, "::3f:ffff:ffff:ffff")] - [DataRow(73, "::7f:ffff:ffff:ffff")] - [DataRow(72, "::ff:ffff:ffff:ffff")] - - [DataRow(71, "::1ff:ffff:ffff:ffff")] - [DataRow(70, "::3ff:ffff:ffff:ffff")] - [DataRow(69, "::7ff:ffff:ffff:ffff")] - [DataRow(68, "::fff:ffff:ffff:ffff")] - - [DataRow(67, "::1fff:ffff:ffff:ffff")] - [DataRow(66, "::3fff:ffff:ffff:ffff")] - [DataRow(65, "::7fff:ffff:ffff:ffff")] - [DataRow(64, "::ffff:ffff:ffff:ffff")] - - [DataRow(63, "::1:ffff:ffff:ffff:ffff")] - [DataRow(62, "::3:ffff:ffff:ffff:ffff")] - [DataRow(61, "::7:ffff:ffff:ffff:ffff")] - [DataRow(60, "::f:ffff:ffff:ffff:ffff")] - - [DataRow(59, "::1f:ffff:ffff:ffff:ffff")] - [DataRow(58, "::3f:ffff:ffff:ffff:ffff")] - [DataRow(57, "::7f:ffff:ffff:ffff:ffff")] - [DataRow(56, "::ff:ffff:ffff:ffff:ffff")] - - [DataRow(55, "::1ff:ffff:ffff:ffff:ffff")] - [DataRow(54, "::3ff:ffff:ffff:ffff:ffff")] - [DataRow(53, "::7ff:ffff:ffff:ffff:ffff")] - [DataRow(52, "::fff:ffff:ffff:ffff:ffff")] - - [DataRow(51, "::1fff:ffff:ffff:ffff:ffff")] - [DataRow(50, "::3fff:ffff:ffff:ffff:ffff")] - [DataRow(49, "::7fff:ffff:ffff:ffff:ffff")] - [DataRow(48, "::ffff:ffff:ffff:ffff:ffff")] - - [DataRow(47, "::1:ffff:ffff:ffff:ffff:ffff")] - [DataRow(46, "::3:ffff:ffff:ffff:ffff:ffff")] - [DataRow(45, "::7:ffff:ffff:ffff:ffff:ffff")] - [DataRow(44, "::f:ffff:ffff:ffff:ffff:ffff")] - - [DataRow(43, "::1f:ffff:ffff:ffff:ffff:ffff")] - [DataRow(42, "::3f:ffff:ffff:ffff:ffff:ffff")] - [DataRow(41, "::7f:ffff:ffff:ffff:ffff:ffff")] - [DataRow(40, "::ff:ffff:ffff:ffff:ffff:ffff")] - - [DataRow(39, "::1ff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(38, "::3ff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(37, "::7ff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(36, "::fff:ffff:ffff:ffff:ffff:ffff")] - - [DataRow(35, "::1fff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(34, "::3fff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(33, "::7fff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(32, "::ffff:ffff:ffff:ffff:ffff:ffff")] - - [DataRow(31, "0:1:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(30, "0:3:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(29, "0:7:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(28, "0:f:ffff:ffff:ffff:ffff:ffff:ffff")] - - [DataRow(27, "0:1f:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(26, "0:3f:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(25, "0:7f:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(24, "0:ff:ffff:ffff:ffff:ffff:ffff:ffff")] - - [DataRow(23, "0:1ff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(22, "0:3ff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(21, "0:7ff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(20, "0:fff:ffff:ffff:ffff:ffff:ffff:ffff")] - - [DataRow(19, "0:1fff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(18, "0:3fff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(17, "0:7fff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(16, "0:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - - [DataRow(15, "1:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(14, "3:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(13, "7:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(12, "f:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - - [DataRow(11, "1f:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(10, "3f:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(9, "7f:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(8, "ff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - - [DataRow(7, "1ff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(6, "3ff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(5, "7ff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(4, "fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - - [DataRow(3, "1fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(2, "3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(1, "7fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - [DataRow(0, "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")] - public void Test_WildcardMask_ipv6_cidr(int cidr, string expected) - { - var ipnetwork = IPNetwork2.Parse($"::/{cidr}"); - - int cidr2 = (int)ipnetwork.Cidr; - var expectedipv6 = IPAddress.Parse(expected); - var expectedcidr = IPNetwork2.ToBigInteger(expectedipv6); - IPAddress wildcardmask = ipnetwork.WildcardMask; - var wildcardcidr = IPNetwork2.ToBigInteger(wildcardmask); - - Assert.AreEqual(cidr, cidr2, "netmask"); - Assert.AreEqual(expectedcidr, wildcardcidr, "wildcardcidr"); - } - - #endregion - } -} diff --git a/src/ipnetwork.sln.DotSettings b/src/ipnetwork.sln.DotSettings new file mode 100644 index 00000000..4f9ff323 --- /dev/null +++ b/src/ipnetwork.sln.DotSettings @@ -0,0 +1,2 @@ + + IP \ No newline at end of file