|  | #!/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() |