/Source/Webpack.Domain.Analytics.Tests/DocumentTypeAnalysis/MenuAnalysis/When_checking_if_tree_contains_line.cs

https://bitbucket.org/mchudo89/webpack-2.0
C# | 145 lines | 110 code | 21 blank | 14 comment | 0 complexity | 59f9ebc6a12cf8cfa47d634fbf156b57 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Webpack.Domain.Model.Logic;
  7. using Xunit;
  8. namespace Webpack.Domain.Analytics.Tests.DocumentTypeAnalysis.MenuAnalysis
  9. {
  10. public class When_checking_if_tree_contains_line
  11. {
  12. [Fact(Timeout=1000)]
  13. public void Should_throw_if_line_null()
  14. {
  15. // Arange
  16. var node = UrlNode.CreateRoot();
  17. // Act + Assert
  18. Assert.Throws<ArgumentNullException>(() => node.ContainsLine(null));
  19. }
  20. [Fact(Timeout=1000)]
  21. public void Should_allways_contain_empty_line()
  22. {
  23. // Arange
  24. var line = Enumerable.Empty<UrlNode>();
  25. var node1 = UrlNode.CreateRoot();
  26. var node2 = UrlNode.CreateRoot();
  27. node2.AppendChild("1").AppendChild("2");
  28. node2.AppendChild("3");
  29. // Act
  30. var result1 = node1.ContainsLine(line);
  31. var result2 = node2.ContainsLine(line);
  32. // Assert
  33. Assert.True(result1);
  34. Assert.True(result2);
  35. }
  36. [Fact(Timeout=1000)]
  37. public void Should_contain_single_node_line_with_path_which_is_in_tree()
  38. {
  39. // Arange
  40. var nodeFactory = UrlNode.CreateRoot();
  41. var line1 = new List<UrlNode>() { nodeFactory.AppendChild("2") };
  42. var line2 = new List<UrlNode>() { nodeFactory.AppendChild("5") };
  43. var line3 = new List<UrlNode>() { nodeFactory.AppendChild("3") };
  44. var node1 = UrlNode.CreateRoot();
  45. var node2 = UrlNode.CreateRoot();
  46. node2.AppendChild("1").AppendChild("2");
  47. node2.AppendChild("3");
  48. // Act
  49. var result1 = node1.ContainsLine(line1);
  50. var result2 = node1.ContainsLine(line2);
  51. var result3 = node1.ContainsLine(line3);
  52. var result4 = node2.ContainsLine(line1);
  53. var result5 = node2.ContainsLine(line2);
  54. var result6 = node2.ContainsLine(line3);
  55. // Assert
  56. Assert.False(result1);
  57. Assert.False(result2);
  58. Assert.False(result3);
  59. Assert.True(result4);
  60. Assert.False(result5);
  61. Assert.True(result6);
  62. }
  63. [Fact(Timeout=1000)]
  64. public void Should_contain_multi_node_line_with_paths_which_are_in_tree()
  65. {
  66. // Arange
  67. var nodeFactory = UrlNode.CreateRoot();
  68. var line1 = new List<UrlNode>() { nodeFactory, nodeFactory.AppendChild("1"), nodeFactory.AppendChild("2") };
  69. var line2 = new List<UrlNode>() { nodeFactory.AppendChild("1"), nodeFactory.AppendChild("2") };
  70. var node1 = UrlNode.CreateRoot();
  71. node1.AppendChild("1").AppendChild("9");
  72. var node2 = UrlNode.CreateRoot();
  73. node2.AppendChild("1").AppendChild("2");
  74. node2.AppendChild("3");
  75. var node3 = UrlNode.CreateRoot();
  76. node3.AppendChild("17").AppendChild("1").AppendChild("2").AppendChild("5");
  77. node3.AppendChild("3");
  78. // Act
  79. var result1 = node1.ContainsLine(line1);
  80. var result2 = node1.ContainsLine(line2);
  81. var result3 = node2.ContainsLine(line1);
  82. var result4 = node2.ContainsLine(line2);
  83. var result5 = node3.ContainsLine(line1);
  84. var result6 = node3.ContainsLine(line2);
  85. // Assert
  86. Assert.False(result1);
  87. Assert.False(result2);
  88. Assert.True(result3);
  89. Assert.True(result4);
  90. Assert.False(result5);
  91. Assert.True(result6);
  92. }
  93. [Fact(Timeout=1000)]
  94. public void Should_contain_multi_node_line_with_paths_which_exceed_the_tree()
  95. {
  96. // Arange
  97. var nodeFactory = UrlNode.CreateRoot();
  98. var line1 = new List<UrlNode>() { nodeFactory, nodeFactory.AppendChild("1"), nodeFactory.AppendChild("2"), nodeFactory.AppendChild("3") };
  99. var line2 = new List<UrlNode>() { nodeFactory.AppendChild("1"), nodeFactory.AppendChild("2") };
  100. var node1 = UrlNode.CreateRoot();
  101. node1.AppendChild("1").AppendChild("9");
  102. var node2 = UrlNode.CreateRoot();
  103. node2.AppendChild("1").AppendChild("2").AppendChild("3");
  104. node2.AppendChild("4").AppendChild("5");
  105. var node3 = UrlNode.CreateRoot();
  106. node3.AppendChild("17").AppendChild("5").AppendChild("1");
  107. node3.AppendChild("3");
  108. // Act
  109. var result1 = node1.ContainsLine(line1);
  110. var result2 = node1.ContainsLine(line2);
  111. var result3 = node2.ContainsLine(line1);
  112. var result4 = node2.ContainsLine(line2);
  113. var result5 = node3.ContainsLine(line1);
  114. var result6 = node3.ContainsLine(line2);
  115. // Assert
  116. Assert.False(result1);
  117. Assert.False(result2);
  118. Assert.True(result3);
  119. Assert.True(result4);
  120. Assert.False(result5);
  121. Assert.True(result6);
  122. }
  123. }
  124. }