aboutsummaryrefslogtreecommitdiffstats
path: root/t/database_test.py
diff options
context:
space:
mode:
Diffstat (limited to 't/database_test.py')
-rw-r--r--t/database_test.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/t/database_test.py b/t/database_test.py
new file mode 100644
index 0000000..bd278c2
--- /dev/null
+++ b/t/database_test.py
@@ -0,0 +1,56 @@
+import unittest
+
+import mop
+
+from . import InMemoryDatabase
+
+class DatabaseTest(unittest.TestCase):
+ def test_database(self):
+ db = InMemoryDatabase()
+
+ db.insert("foo", {"a": 1, "b": 2})
+ assert db.lookup("foo") == {"a": 1, "b": 2}
+ assert db.store == {"foo": '{"data":{"a":1,"b":2},"type":"plain"}'}
+
+ db.insert("foo", {"a": 3, "c": 5})
+ assert db.lookup("foo") == {"a": 3, "c": 5}
+ assert db.store == {"foo": '{"data":{"a":3,"c":5},"type":"plain"}'}
+
+ db.insert("bar", [1, 2, "b"])
+ assert db.lookup("foo") == {"a": 3, "c": 5}
+ assert db.lookup("bar") == [1, 2, "b"]
+ assert db.store == {
+ "foo": '{"data":{"a":3,"c":5},"type":"plain"}',
+ "bar": '{"data":[1,2,"b"],"type":"plain"}',
+ }
+
+ Point = mop.Class.new(
+ name="Point",
+ superclass=mop.Class.base_object_class(),
+ )
+ Point.add_attribute(Point.attribute_class().new(name="x"))
+ Point.add_attribute(Point.attribute_class().new(name="y"))
+ Point.add_method(Point.method_class().new(
+ name="x",
+ body=lambda self: self.metaclass.get_all_attributes()["x"].get_value(self)
+ ))
+ Point.add_method(Point.method_class().new(
+ name="y",
+ body=lambda self: self.metaclass.get_all_attributes()["y"].get_value(self)
+ ))
+ Point.finalize()
+
+ point = Point.new(x=10, y=23)
+ assert point.x() == 10
+ assert point.y() == 23
+
+ db.insert("p", point)
+ point2 = db.lookup("p")
+ assert point2.x() == 10
+ assert point2.y() == 23
+ assert point is not point2
+ assert db.store == {
+ "foo": '{"data":{"a":3,"c":5},"type":"plain"}',
+ "bar": '{"data":[1,2,"b"],"type":"plain"}',
+ "p": '{"class":"Point","data":{"x":10,"y":23},"type":"object"}',
+ }