Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: tools/telemetry/third_party/rope/ropetest/objectdbtest.py

Issue 1132103009: Example of refactoring using rope library. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/third_party/rope/ropetest/objectdbtest.py
diff --git a/tools/telemetry/third_party/rope/ropetest/objectdbtest.py b/tools/telemetry/third_party/rope/ropetest/objectdbtest.py
new file mode 100644
index 0000000000000000000000000000000000000000..ab59084b2ea7d60b9f4345a2a43a9dd60d1a9fc6
--- /dev/null
+++ b/tools/telemetry/third_party/rope/ropetest/objectdbtest.py
@@ -0,0 +1,160 @@
+import unittest
+
+from rope.base.oi import objectdb, memorydb
+from ropetest import testutils
+
+
+def _do_for_all_dbs(function):
+ def called(self):
+ for db in self.dbs:
+ function(self, db)
+ return called
+
+
+class _MockValidation(object):
+
+ def is_value_valid(self, value):
+ return value != -1
+
+ def is_more_valid(self, new, old):
+ return new != -1
+
+ def is_file_valid(self, path):
+ return path != 'invalid'
+
+ def is_scope_valid(self, path, key):
+ return path != 'invalid' and key != 'invalid'
+
+
+class _MockFileListObserver(object):
+
+ log = ''
+
+ def added(self, path):
+ self.log += 'added %s ' % path
+
+ def removed(self, path):
+ self.log += 'removed %s ' % path
+
+
+class ObjectDBTest(unittest.TestCase):
+
+ def setUp(self):
+ super(ObjectDBTest, self).setUp()
+ self.project = testutils.sample_project()
+ validation = _MockValidation()
+ self.dbs = [
+ objectdb.ObjectDB(memorydb.MemoryDB(self.project), validation)]
+
+ def tearDown(self):
+ for db in self.dbs:
+ db.write()
+ testutils.remove_project(self.project)
+ super(ObjectDBTest, self).tearDown()
+
+ @_do_for_all_dbs
+ def test_simple_per_name(self, db):
+ db.add_pername('file', 'key', 'name', 1)
+ self.assertEqual(1, db.get_pername('file', 'key', 'name'))
+
+ @_do_for_all_dbs
+ def test_simple_per_name_does_not_exist(self, db):
+ self.assertEquals(None, db.get_pername('file', 'key', 'name'))
+
+ @_do_for_all_dbs
+ def test_simple_per_name_after_syncing(self, db):
+ db.add_pername('file', 'key', 'name', 1)
+ db.write()
+ self.assertEquals(1, db.get_pername('file', 'key', 'name'))
+
+ @_do_for_all_dbs
+ def test_getting_returned(self, db):
+ db.add_callinfo('file', 'key', (1, 2), 3)
+ self.assertEquals(3, db.get_returned('file', 'key', (1, 2)))
+
+ @_do_for_all_dbs
+ def test_getting_returned_when_does_not_match(self, db):
+ db.add_callinfo('file', 'key', (1, 2), 3)
+ self.assertEquals(None, db.get_returned('file', 'key', (1, 1)))
+
+ @_do_for_all_dbs
+ def test_getting_call_info(self, db):
+ db.add_callinfo('file', 'key', (1, 2), 3)
+
+ call_infos = list(db.get_callinfos('file', 'key'))
+ self.assertEquals(1, len(call_infos))
+ self.assertEquals((1, 2), call_infos[0].get_parameters())
+ self.assertEquals(3, call_infos[0].get_returned())
+
+ @_do_for_all_dbs
+ def test_invalid_per_name(self, db):
+ db.add_pername('file', 'key', 'name', -1)
+ self.assertEquals(None, db.get_pername('file', 'key', 'name'))
+
+ @_do_for_all_dbs
+ def test_overwriting_per_name(self, db):
+ db.add_pername('file', 'key', 'name', 1)
+ db.add_pername('file', 'key', 'name', 2)
+ self.assertEquals(2, db.get_pername('file', 'key', 'name'))
+
+ @_do_for_all_dbs
+ def test_not_overwriting_with_invalid_per_name(self, db):
+ db.add_pername('file', 'key', 'name', 1)
+ db.add_pername('file', 'key', 'name', -1)
+ self.assertEquals(1, db.get_pername('file', 'key', 'name'))
+
+ @_do_for_all_dbs
+ def test_getting_invalid_returned(self, db):
+ db.add_callinfo('file', 'key', (1, 2), -1)
+ self.assertEquals(None, db.get_returned('file', 'key', (1, 2)))
+
+ @_do_for_all_dbs
+ def test_not_overwriting_with_invalid_returned(self, db):
+ db.add_callinfo('file', 'key', (1, 2), 3)
+ db.add_callinfo('file', 'key', (1, 2), -1)
+ self.assertEquals(3, db.get_returned('file', 'key', (1, 2)))
+
+ @_do_for_all_dbs
+ def test_get_files(self, db):
+ db.add_callinfo('file1', 'key', (1, 2), 3)
+ db.add_callinfo('file2', 'key', (1, 2), 3)
+ self.assertEquals(set(['file1', 'file2']), set(db.get_files()))
+
+ @_do_for_all_dbs
+ def test_validating_files(self, db):
+ db.add_callinfo('invalid', 'key', (1, 2), 3)
+ db.validate_files()
+ self.assertEquals(0, len(db.get_files()))
+
+ @_do_for_all_dbs
+ def test_validating_file_for_scopes(self, db):
+ db.add_callinfo('file', 'invalid', (1, 2), 3)
+ db.validate_file('file')
+ self.assertEquals(1, len(db.get_files()))
+ self.assertEquals(0, len(list(db.get_callinfos('file', 'invalid'))))
+
+ @_do_for_all_dbs
+ def test_validating_file_moved(self, db):
+ db.add_callinfo('file', 'key', (1, 2), 3)
+
+ db.file_moved('file', 'newfile')
+ self.assertEquals(1, len(db.get_files()))
+ self.assertEquals(1, len(list(db.get_callinfos('newfile', 'key'))))
+
+ @_do_for_all_dbs
+ def test_using_file_list_observer(self, db):
+ db.add_callinfo('invalid', 'key', (1, 2), 3)
+ observer = _MockFileListObserver()
+ db.add_file_list_observer(observer)
+ db.validate_files()
+ self.assertEquals('removed invalid ', observer.log)
+
+
+def suite():
+ result = unittest.TestSuite()
+ result.addTests(unittest.makeSuite(ObjectDBTest))
+ return result
+
+
+if __name__ == '__main__':
+ unittest.main()
« no previous file with comments | « tools/telemetry/third_party/rope/ropetest/historytest.py ('k') | tools/telemetry/third_party/rope/ropetest/objectinfertest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698