diff --git a/src/Nager.PublicSuffix.UnitTest/DomainDataStructureExtensionsTests.cs b/src/Nager.PublicSuffix.UnitTest/DomainDataStructureExtensionsTests.cs new file mode 100644 index 0000000..e9004a4 --- /dev/null +++ b/src/Nager.PublicSuffix.UnitTest/DomainDataStructureExtensionsTests.cs @@ -0,0 +1,30 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Nager.PublicSuffix.Extensions; +using Nager.PublicSuffix.Models; +using System.Linq; + +namespace Nager.PublicSuffix.UnitTest; + +[TestClass] +public class DomainDataStructureExtensionsTests +{ + [TestMethod] + public void GetRulesTest() + { + var structure = new DomainDataStructure(""); + var rulesIn = new[] + { + new TldRule("foo", TldRuleDivision.Private), + new TldRule("bar", TldRuleDivision.Private ), + new TldRule("to.gov.br", TldRuleDivision.ICANN), + new TldRule("*.bd", TldRuleDivision.ICANN), + new TldRule("un.known", TldRuleDivision.Unknown) + }; + + structure.AddRules(rulesIn); + + var rulesOut = structure.GetRules().ToArray(); + + CollectionAssert.AreEqual(rulesIn, rulesOut); + } +} \ No newline at end of file diff --git a/src/Nager.PublicSuffix.UnitTest/TldRuleExtensionsTests.cs b/src/Nager.PublicSuffix.UnitTest/TldRuleExtensionsTests.cs index 04b1216..39fcc5b 100644 --- a/src/Nager.PublicSuffix.UnitTest/TldRuleExtensionsTests.cs +++ b/src/Nager.PublicSuffix.UnitTest/TldRuleExtensionsTests.cs @@ -1,8 +1,8 @@ -using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; using Nager.PublicSuffix.Extensions; using Nager.PublicSuffix.Models; using Nager.PublicSuffix.RuleParsers; +using System.Linq; namespace Nager.PublicSuffix.UnitTest; diff --git a/src/Nager.PublicSuffix/Extensions/DomainDataStructureExtensions.cs b/src/Nager.PublicSuffix/Extensions/DomainDataStructureExtensions.cs index 0ccf984..bb93c7d 100644 --- a/src/Nager.PublicSuffix/Extensions/DomainDataStructureExtensions.cs +++ b/src/Nager.PublicSuffix/Extensions/DomainDataStructureExtensions.cs @@ -25,7 +25,7 @@ public static void AddRules(this DomainDataStructure structure, IEnumerable /// Add to . /// - /// The structure to appened the rule. + /// The structure to append the rule. /// The rule to append. public static void AddRule(this DomainDataStructure structure, TldRule tldRule) { @@ -55,5 +55,26 @@ public static void AddRule(this DomainDataStructure structure, TldRule tldRule) structure.Nested.Add(domainPart, new DomainDataStructure(domainPart, tldRule)); } } + + /// + /// Get collection of rules from . + /// + /// The structure from which to obtain the rules + /// + public static IEnumerable GetRules(this DomainDataStructure structure) + { + foreach (var dataStructure in structure.Nested.Values) + { + if (dataStructure.TldRule != null) + { + yield return dataStructure.TldRule; + } + + foreach (var tldRule in dataStructure.GetRules()) + { + yield return tldRule; + } + } + } } }