예제 #1
0
    def test_save_blank(self):
        """ Test saving a new Database """

        db = NOSql.Database(DBPATH)
        db.save()
        self.assertTrue(DBPATH.exists())
        try:
            db = NOSql.Database(DBPATH)
        except Exception as e:
            self.fail(f"Failed to load blank database:\n{traceback.format_exc()}")
예제 #2
0
    def test_create(self):
        """ Tests that a new, blank database can be created """

        db = NOSql.Database(":memory:")
        self.assertIsInstance(db,NOSql.Database)

        if DBPATH.exists():
            try:
                DBPATH.unlink()
            except:
                RuntimeError("Could not create testfile path")

        try:
            db = NOSql.Database(DBPATH)
            self.assertIsInstance(db,NOSql.Database)
        except Exception as e:
            if DBPATH.exists():
                DBPATH.unlink()
            raise e
예제 #3
0
    def test_schema(self):
        """ Tests the Database._generateschema function """
        db = NOSql.Database(":memory:")
        
        schema = NOSql.Database._generateschema(db)
        ## Any encoding other than "unicode" is outputted as bytes by ElementTree.tostring
        self.assertEqual(ElementTree.tostring(schema.getroot(),encoding = "utf-8"),b"<database><caches /></database>")

        db.addCache("cache1")
        
        schema = NOSql.Database._generateschema(db)
        self.assertEqual(ElementTree.tostring(schema.getroot(),encoding = "utf-8"),b'<database><caches><cache type="keyvaluecache">cache1</cache></caches></database>')
예제 #4
0
    def test_serialize_deserialize(self):
        """ Tests that the SqliteCache can be serialized and then deserialized correctly """
        cache = self.db.addCache("db",cachetype = "sqlite3")
        cache.execute("""CREATE TABLE testtable(name);""")
        cache.execute("""INSERT INTO testtable (name) VALUES ("a"),("b");""")
        ## db.save => cache.serialize => cache.commit(); cache.close()
        self.db.save()

        db = NOSql.Database(DBPATH)
        cache2 = db.cache("db")

        self.assertIsInstance(cache2,NOSql.SqliteCache)
예제 #5
0
    def test_serialize_deserialize(self):
        """ Tests that a basic KeyValueCache can be serialized and reloaded """

        ## Original Cache
        cache1 = self.db.addCache("Names")
        ## Miscellaneous, Json-Serializable values
        for value in ["a",1,1.2,dict(a=1),[1,2]]:
            cache1.insert(value)

        self.db.save()
        db = NOSql.Database(DBPATH)
        cache2 = db.cache("Names")

        for attr in ["_counter","_container"]:
            with self.subTest(attr = attr, cache1 = cache1, cache2 = cache2):
                self.assertTrue(hasattr(cache1,attr))
                self.assertTrue(hasattr(cache2,attr))
                self.assertEqual(getattr(cache1,attr),getattr(cache2,attr))
예제 #6
0
 def setUp(self):
     self.db = NOSql.Database(":memory:")
예제 #7
0
 def setUp(self):
     if DBPATH.exists():
         DBPATH.unlink()
     self.db = NOSql.Database(DBPATH)
     return super().setUp()
예제 #8
0
 def setUp(self):
     self.db = NOSql.Database(":memory:")
     self.cache = self.db.addCache("sqlite","sqlite3")
     return super().setUp()