public void GetLinesFromAndGroupBlockTest() { int patternLength = 4; var pattern = new string('\0', patternLength); LineBuilder builder = new LineBuilder(pattern, null); // (a|aa)(b|bb) TextBlock aBlock = new TextBlock("a"); TextBlock aaBlock = new TextBlock("aa"); TextBlock bBlock = new TextBlock("b"); TextBlock bbBlock = new TextBlock("bb"); OrGroupBlock orGroupBlock1 = new OrGroupBlock(new[] { aBlock, aaBlock }); OrGroupBlock orGroupBlock2 = new OrGroupBlock(new[] { bBlock, bbBlock }); AndGroupBlock andGroupBlock = new AndGroupBlock(new[] { orGroupBlock1, orGroupBlock2 }); List<string> lines = builder.GetLinesFromAndGroupBlock(0, andGroupBlock).ToList(); string[] expectedLines = new string[] { "ab", "abb", "aab", "aabb" }; CollectionAssert.AreEquivalent(expectedLines, lines); }