summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2010-02-16 22:08:35 +1300
committerLars Wirzenius <liw@liw.fi>2010-02-16 22:08:35 +1300
commitf9c6680941422aaa53439c08818ebe5361c18ac2 (patch)
treebef8a3b2dab6e24f479504c62cfb2aeca09d74b5
downloadlarch-f9c6680941422aaa53439c08818ebe5361c18ac2.tar.gz
Write rudimentary first outline of btree node implementation,
with tests.
-rw-r--r--Makefile8
-rw-r--r--btree.py36
-rw-r--r--btree_tests.py22
3 files changed, 66 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..1f5e024
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,8 @@
+all:
+
+check: all
+ python -m CoverageTestRunner
+ rm .coverage
+
+clean:
+ rm -f .coverage *.pyc *.pyo
diff --git a/btree.py b/btree.py
new file mode 100644
index 0000000..056f27b
--- /dev/null
+++ b/btree.py
@@ -0,0 +1,36 @@
+class Node(object):
+
+ '''A node in a Tree.'''
+
+ def __init__(self, nodeid, pairs):
+ pass
+
+ def __len__(self):
+ '''Return number of keys in this node.'''
+ return 0
+
+ def size(self):
+ '''Return number of bytes required to store this node.'''
+ return 0
+
+ def keys(self):
+ '''Return all keys in this node.'''
+ return []
+
+ def lookup(self, key):
+ '''Return value corresponding to a given key in this node.
+
+ If key is not in this node, raise KeyError.
+
+ '''
+
+ raise KeyError(key)
+
+
+#class Tree(object):
+# '''A B-tree variant.'''
+# def __init__(self, keysize, nodesize):
+# def insert(self, key, value):
+# def lookup(self, key):
+# def remove(self, key):
+
diff --git a/btree_tests.py b/btree_tests.py
new file mode 100644
index 0000000..17c6d6c
--- /dev/null
+++ b/btree_tests.py
@@ -0,0 +1,22 @@
+import unittest
+
+import btree
+
+
+class NodeTests(unittest.TestCase):
+
+ def setUp(self):
+ self.empty = btree.Node(0, [])
+
+ def test_has_zero_length(self):
+ self.assertEqual(len(self.empty), 0)
+
+ def test_has_zero_size(self):
+ self.assertEqual(self.empty.size(), 0)
+
+ def test_has_no_keys(self):
+ self.assertEqual(self.empty.keys(), [])
+
+ def test_lookup_raises_error_for_nonexistent_key(self):
+ self.assertRaises(KeyError, self.empty.lookup, '0')
+