Skip to content

Instantly share code, notes, and snippets.

@andrealaforgia
Created August 1, 2020 23:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andrealaforgia/bc61cd221a4f681adc163a35755aeb23 to your computer and use it in GitHub Desktop.
Save andrealaforgia/bc61cd221a4f681adc163a35755aeb23 to your computer and use it in GitHub Desktop.
package tdd.huffman;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.*;
class HuffmanTreeTraverserTest {
private HuffmanTree huffmanTree;
private HuffmanTreeTraverser huffmanTreeTraverser;
@Test
void shouldNavigateAHuffmanTree() {
givenAHuffmanTree();
whenTraversingTheHuffmanTree();
thenTheTreeShouldBeNavigatedAsExpected();
}
private void whenTraversingTheHuffmanTree() {
huffmanTreeTraverser = new HuffmanTreeTraverser(huffmanTree);
}
private void thenTheTreeShouldBeNavigatedAsExpected() {
assertThat(huffmanTreeTraverser.isCurrentNodeTerminal()).isFalse();
huffmanTreeTraverser.traverseLeftBranch();
assertThat(huffmanTreeTraverser.isCurrentNodeTerminal()).isTrue();
assertThat(huffmanTreeTraverser.getCurrentNodeValue()).isEqualTo((byte)'A');
huffmanTreeTraverser.reset();
huffmanTreeTraverser.traverseRightBranch();
assertThat(huffmanTreeTraverser.isCurrentNodeTerminal()).isFalse();
huffmanTreeTraverser.traverseLeftBranch();
assertThat(huffmanTreeTraverser.getCurrentNodeValue()).isEqualTo((byte)'B');
}
private void givenAHuffmanTree() {
huffmanTree = new HuffmanTree(
BinaryTree.newNonTerminalNode(
BinaryTree.newTerminalNode((byte)'A'),
BinaryTree.newNonTerminalNode(
BinaryTree.newTerminalNode((byte)'B'),
BinaryTree.newTerminalNode((byte)'C')
)
)
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment