| #!/usr/bin/python | |
| # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | |
| # for details. All rights reserved. Use of this source code is governed by a | |
| # BSD-style license that can be found in the LICENSE file. | |
| """Tests for database module.""" | |
| import logging.config | |
| import os.path | |
| import shutil | |
| import tempfile | |
| import unittest | |
| import database | |
| import idlnode | |
| import idlparser | |
| class DatabaseTestCase(unittest.TestCase): | |
| def _ParseInterface(self, content): | |
| ast = self._idl_parser.parse(content) | |
| return idlnode.IDLFile(ast).interfaces[0] | |
| def _ListInterfaces(self, db): | |
| res = [] | |
| for interface in db.GetInterfaces(): | |
| name = interface.id | |
| res.append(name) | |
| return res | |
| def setUp(self): | |
| self._idl_parser = idlparser.IDLParser(idlparser.FREMONTCUT_SYNTAX) | |
| working_dir = tempfile.mkdtemp() | |
| self._database_dir = os.path.join(working_dir, 'database') | |
| self.assertFalse(os.path.exists(self._database_dir)) | |
| # Create database and add one interface. | |
| db = database.Database(self._database_dir) | |
| interface = self._ParseInterface('interface I1 {};') | |
| db.AddInterface(interface) | |
| db.Save() | |
| self.assertTrue( | |
| os.path.exists(os.path.join(self._database_dir, 'I1.idl'))) | |
| def tearDown(self): | |
| shutil.rmtree(self._database_dir) | |
| def testCreate(self): | |
| self.assertTrue(os.path.exists(self._database_dir)) | |
| def testListInterfaces(self): | |
| db = database.Database(self._database_dir) | |
| db.Load() | |
| self.assertEquals(self._ListInterfaces(db), ['I1']) | |
| def testHasInterface(self): | |
| db = database.Database(self._database_dir) | |
| db.Load() | |
| self.assertTrue(db.HasInterface('I1')) | |
| self.assertFalse(db.HasInterface('I2')) | |
| def testAddInterface(self): | |
| db = database.Database(self._database_dir) | |
| db.Load() | |
| interface = self._ParseInterface('interface I2 {};') | |
| db.AddInterface(interface) | |
| db.Save() | |
| self.assertTrue( | |
| os.path.exists(os.path.join(self._database_dir, 'I2.idl'))) | |
| self.assertEquals(self._ListInterfaces(db), | |
| ['I1', 'I2']) | |
| def testDeleteInterface(self): | |
| db = database.Database(self._database_dir) | |
| db.Load() | |
| db.DeleteInterface('I1') | |
| db.Save() | |
| self.assertFalse( | |
| os.path.exists(os.path.join(self._database_dir, 'I1.idl'))) | |
| self.assertEquals(self._ListInterfaces(db), []) | |
| def testGetInterface(self): | |
| db = database.Database(self._database_dir) | |
| db.Load() | |
| interface = db.GetInterface('I1') | |
| self.assertEquals(interface.id, 'I1') | |
| if __name__ == '__main__': | |
| logging.config.fileConfig('logging.conf') | |
| if __name__ == '__main__': | |
| unittest.main() |