From 6563353bbf4b934d2be963d8d2b9a6e14f9df356 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 1 Nov 2014 00:36:02 -0400 Subject: bunch more tests --- t/database_test.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 t/database_test.py (limited to 't/database_test.py') 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"}', + } -- cgit v1.2.3-54-g00ecf