diff options
author | Jesse Luehrs <doy@tozt.net> | 2014-11-01 00:36:02 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2014-11-01 00:36:02 -0400 |
commit | 6563353bbf4b934d2be963d8d2b9a6e14f9df356 (patch) | |
tree | 866d3a5643e62a1224ef7ea562a7c75673402f71 /t/database_test.py | |
parent | 6954fa2b819feebf8c0e862a165f53aa5ecc3839 (diff) | |
download | python-mop-6563353bbf4b934d2be963d8d2b9a6e14f9df356.tar.gz python-mop-6563353bbf4b934d2be963d8d2b9a6e14f9df356.zip |
bunch more tests
Diffstat (limited to 't/database_test.py')
-rw-r--r-- | t/database_test.py | 56 |
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"}', + } |