Here is an example of a search tree implementation in Python, along with some unit tests to verify its correctness:
```
import unittest
class Node:
def __init__(self, value, left=None, right=None):
self.value = value
self.left = left
self.right = right
def __repr__(self):
return f"Node({self.value}, {self.left}, {self.right})"
class SearchTree:
def __init__(self):
self.root = None
def insert(self, value):
if self.root is None:
self.root = Node(value)
else:
current = self.root
while current:
if value < current.value:
if current.left is None:
current.left = Node(value)
break
else:
current = current.left
else:
if current.right is None:
current.right = Node(value)
break
else:
current = current.right
def search(self, value):
current = self.root
while current:
if value == current.value:
return True
elif value < current.value:
current = current.left
else:
current = current.right
return False
def __repr__(self):
return f"SearchTree({self.root})"
class TestSearchTree(unittest.TestCase):
def test_insert(self):
tree = SearchTree()
tree.insert(1)
tree.insert(2)
tree.insert(3)
self.assertEqual(tree.root.value, 1)
self.assertEqual(tree.root.left.value, 2)
self.assertEqual(tree.root.right.value, 3)
def test_search(self):
tree = SearchTree()
tree.insert(1)
tree.insert(2)
tree.insert(3)
self.assertTrue(tree.search(1))
self.assertTrue(tree.search(2))
self.assertTrue(tree.search(3))
self.assertFalse(tree.search(4))
if __name__ == "__main__":
unittest.main()
```
This code defines a `Node` class that represents a node in the search tree, and a `SearchTree` class that implements the search tree data structure. The `insert` method inserts a new node into the tree, and the `search` method searches for a node with a given value. The `TestSearchTree` class defines some unit tests to verify the correctness of the `SearchTree` implementation.
To run the unit tests, you can use the `python -m unittest` command from the command line. This will run all the tests defined in the `TestSearchTree` class and print the results.
I hope this helps! Let me know if you have any questions.