Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions AAD.Tests/SetTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
namespace AAD.Tests;

public class SetTests
{
[Fact]
public void Add()
{
var s = new Set();
s.Add(10);
s.Add(5);
s.Add(20);
s.Add(4);

Assert.Equal(new[] { 4, 5, 10, 20},
s.ToArray());
}

[Fact]
public void Add_Duplicated()
{
var s = new Set();
s.Add(10);
s.Add(10);
s.Add(20);
s.Add(20);

Assert.Equal(new[] { 10, 20 },
s.ToArray());
}

[Fact]
public void Contains()
{
var s = new Set();
s.Add(5);
s.Add(8);
s.Add(3);

Assert.True(s.Contains(8));
}

[Fact]
public void Contains_NotFound()
{
var s = new Set();
s.Add(5);
s.Add(8);
s.Add(3);

Assert.False(s.Contains(10));
}
}
41 changes: 41 additions & 0 deletions AAD.Tests/TreeNodeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,47 @@ public void TraverseLevelOrder()

Assert.Equal(expected, result.ToArray());
}

[Fact]
public void Print_OneNode()
{
var a = new TreeNode<string>("A");

Assert.Equal("A", a.Print());
}

[Fact]
public void Print_NodeWithChildren()
{
var sm = new TreeNode<string>("Super Market");

var v = sm.Add("Vegetables");
var pc = sm.Add("Personal Care");

var expected = string.Join('\n',
"Super Market",
"|_Vegetables",
"|_Personal Care");

Assert.Equal(expected, sm.Print());
}

[Fact]
public void Print_Level2Tree()
{
var sm = BuildSuperMarketNode();

var expected = string.Join('\n',
"Super Market",
"|_Vegetables",
"|__Tomato",
"|__Lettuce",
"|_Personal Care",
"|__Shampoo",
"|__Tooth Paste");

Assert.Equal(expected, sm.Print());
}

private static TreeNode<string> BuildSuperMarketNode()
{
Expand Down
19 changes: 19 additions & 0 deletions AAD/Set.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
namespace AAD;

public class Set
{
public void Add(int value)
{
throw new NotImplementedException();
}

public int[] ToArray()
{
throw new NotImplementedException();
}

public bool Contains(int value)
{
throw new NotImplementedException();
}
}
22 changes: 22 additions & 0 deletions AAD/TreeNode.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,4 +78,26 @@ public void TraverseLevelOrder(Action<TreeNode<T>> action)
foreach (var node in levels[level])
action(node);
}

public IEnumerable<char> Print()
{
var result = "";
TraversePreOrder(node =>
{
if (node.Level > 0)
{
result += "\n|";
for (var i = node.Level; i > 0; i--)
{
result += "_";

}

};
result += node.Value;


});
return result;
}
}