import org.junit.Test;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class LockingBinaryTreeTest {
@Test
public void lockingBinaryTree() {
LockingBinaryTree lockingBinaryTree = new LockingBinaryTree(0);
lockingBinaryTree.left = new LockingBinaryTree(1);
lockingBinaryTree.right = new LockingBinaryTree(2);
lockingBinaryTree.left.left = new LockingBinaryTree(3);
assertFalse(((LockingBinaryTree)lockingBinaryTree.left).isLocked());
((LockingBinaryTree)lockingBinaryTree.left).lock();
assertTrue(((LockingBinaryTree)lockingBinaryTree.left).isLocked());
((LockingBinaryTree)lockingBinaryTree.left).unlock();
assertFalse(((LockingBinaryTree)lockingBinaryTree.left).isLocked());
lockingBinaryTree.lock();
assertTrue(((LockingBinaryTree)lockingBinaryTree.left).isLocked());
lockingBinaryTree.unlock();
assertFalse(((LockingBinaryTree)lockingBinaryTree.left).isLocked());
((LockingBinaryTree)lockingBinaryTree.left.left).lock();
assertTrue(((LockingBinaryTree)lockingBinaryTree.left).isLocked());
((LockingBinaryTree)lockingBinaryTree.left.left).unlock();
assertFalse(((LockingBinaryTree)lockingBinaryTree.left).isLocked());
((LockingBinaryTree)lockingBinaryTree.right).lock();
assertFalse(((LockingBinaryTree)lockingBinaryTree.left).isLocked());
((LockingBinaryTree)lockingBinaryTree.right).unlock();
}
}