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

Unified Diff: chrome/common/extensions/docs/server2/api_schema_map_test.py

Issue 23503039: Adding APISchemaGraph class to Extensions Docserver. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changes. Created 7 years, 3 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: chrome/common/extensions/docs/server2/api_schema_map_test.py
diff --git a/chrome/common/extensions/docs/server2/api_schema_map_test.py b/chrome/common/extensions/docs/server2/api_schema_map_test.py
new file mode 100755
index 0000000000000000000000000000000000000000..d770b29cfd988b5f80bf4777f93b6ad36572b5e8
--- /dev/null
+++ b/chrome/common/extensions/docs/server2/api_schema_map_test.py
@@ -0,0 +1,392 @@
+#!/usr/bin/env python
+# Copyright 2013 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import unittest
+
+from api_schema_map import APISchemaMap
+
+
+API_SCHEMA = [{
+ 'namespace': 'tabs',
+ 'properties': {
+ 'TAB_PROPERTY_ONE': {},
+ 'TAB_PROPERTY_TWO': {}
+ },
+ 'types': [
+ {
+ 'id': 'Tab',
+ 'properties': {
+ 'id': {},
+ 'url': {}
+ }
+ }
+ ],
+ 'functions': [
+ {
+ 'name': 'get',
+ 'parameters': [
+ {
+ 'name': 'callback',
+ 'parameters': [
+ {
+ 'name': 'tab'
+ }
+ ]
+ },
+ {
+ 'name': 'tabId'
+ }
+ ]
+ }
+ ],
+ 'events': [
+ {
+ 'name': 'onActivated',
+ 'parameters': [
+ {
+ 'name': 'activeInfo',
+ 'properties': {
+ 'tabId': {},
+ 'windowId': {}
+ }
+ }
+ ]
+ },
+ {
+ 'name': 'onUpdated',
+ 'parameters': [
+ {
+ 'name': 'updateInfo',
+ 'properties': {
+ 'tabId': {}
+ }
+ }
+ ]
+ }
+ ]
+}]
not at google - send to devlin 2013/09/12 20:34:23 the structure is a little more complicated than it
epeterson 2013/09/12 22:39:10 Done.
+
+
+class APISchemaMapTest(unittest.TestCase):
+
+ def testLookup(self):
+ api_schema_map = APISchemaMap(API_SCHEMA)
+
+ self.assertTrue(api_schema_map.Lookup('tabs'))
not at google - send to devlin 2013/09/12 20:34:23 Lookup should probably return the value there, or
epeterson 2013/09/12 22:39:10 Done. Most of these checks have Lookup() traverse
+ self.assertTrue(api_schema_map.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_ONE'))
+ self.assertTrue(api_schema_map.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'callback',
+ 'parameters', 'tab'))
+ self.assertTrue(api_schema_map.Lookup('tabs', 'events', 'onUpdated',
+ 'parameters', 'updateInfo',
+ 'properties', 'tabId'))
+ self.assertTrue(api_schema_map.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'callback',
+ 'parameters'))
+
+ self.assertFalse(api_schema_map.Lookup('windows'))
+ self.assertFalse(api_schema_map.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_DEUX'))
+ self.assertFalse(api_schema_map.Lookup('tabs', 'events', 'onActivated',
+ 'parameters', 'callback'))
+ self.assertFalse(api_schema_map.Lookup('tabs', 'functions', 'getById',
+ 'parameters', 'tab'))
+
+ def testSubtract(self):
+ api_schema_map = APISchemaMap(API_SCHEMA)
+
+ # Test the empty set.
+ to_subtract = {}
+ difference = api_schema_map.Subtract(to_subtract)
+ self.assertTrue(difference.Lookup('tabs'))
+ self.assertTrue(difference.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_ONE'))
+ self.assertTrue(difference.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'callback',
+ 'parameters', 'tab'))
+ self.assertTrue(difference.Lookup('tabs', 'events', 'onUpdated',
+ 'parameters', 'updateInfo',
+ 'properties', 'tabId'))
+ self.assertTrue(difference.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'callback',
+ 'parameters'))
+
+ # Test the same set.
not at google - send to devlin 2013/09/12 20:34:23 if it's the same set can't you subtract API_SCHEMA
epeterson 2013/09/12 22:39:10 Done. Changes made in APISchemaMap allow this now.
+ to_subtract = {
+ 'tabs': {
+ 'properties': {
+ 'TAB_PROPERTY_ONE': {},
+ 'TAB_PROPERTY_TWO': {}
+ },
+ 'types': {
+ 'Tab': {
+ 'properties': {
+ 'id': {},
+ 'url': {}
+ }
+ }
+ },
+ 'functions': {
+ 'get': {
+ 'parameters': {
+ 'callback': {
+ 'parameters': {
+ 'tab': {}
+ }
+ },
+ 'tabId': {}
+ }
+ }
+ },
+ 'events': {
+ 'onActivated': {
+ 'parameters': {
+ 'activeInfo': {
+ 'properties': {
+ 'tabId': {},
+ 'windowId': {},
+ }
+ }
+ }
+ },
+ 'onUpdated': {
+ 'parameters': {
+ 'updateInfo': {
+ 'properties': {
+ 'tabId': {}
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ difference = api_schema_map.Subtract(to_subtract)
+ self.assertFalse(difference.Lookup('tabs'))
+ self.assertFalse(difference.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_ONE'))
+ self.assertFalse(difference.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'callback',
+ 'parameters', 'tab'))
+ self.assertFalse(difference.Lookup('tabs', 'events', 'onUpdated',
+ 'parameters', 'updateInfo',
+ 'properties', 'tabId'))
+ self.assertFalse(difference.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'callback',
+ 'parameters'))
+ self.assertFalse(difference.Lookup('tabs', 'types', 'Tab'))
+
+ # Test a disjoint set.
+ to_subtract = {
+ 'contextMenus': {
+ 'properties': {
+ 'CONTEXT_MENU_PROPERTY_ONE': {}
+ },
+ 'types': {
+ 'Menu': {
+ 'properties': {
+ 'id': {},
+ 'width': {}
+ }
+ }
+ },
+ 'functions': {
+ 'get': {
+ 'parameters': {
+ 'callback': {
+ 'parameters': {
+ 'menu': {}
+ }
+ }
+ }
+ }
+ },
+ 'events': {
+ 'onClicked': {
+ 'parameters': {
+ 'clickInfo': {
+ 'properties': {
+ 'menuId': {}
+ }
+ }
+ }
+ },
+ 'onUpdated': {
+ 'parameters': {
+ 'updateInfo': {
+ 'properties': {
+ 'menuId': {}
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ difference = api_schema_map.Subtract(to_subtract)
+ self.assertTrue(difference.Lookup('tabs'))
+ self.assertTrue(difference.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_ONE'))
+ self.assertTrue(difference.Lookup('tabs', 'functions', 'get', 'parameters',
+ 'callback', 'parameters', 'tab'))
+ self.assertTrue(difference.Lookup('tabs', 'events', 'onUpdated',
+ 'parameters', 'updateInfo',
+ 'properties', 'tabId'))
+ self.assertTrue(difference.Lookup('tabs', 'functions', 'get', 'parameters',
+ 'callback', 'parameters'))
+ self.assertFalse(difference.Lookup('contextMenus', 'properties',
+ 'CONTEXT_MENU_PROPERTY_ONE'))
+ self.assertFalse(difference.Lookup('contextMenus', 'types', 'Menu'))
+ self.assertFalse(difference.Lookup('contextMenus', 'types', 'Menu',
+ 'properties', 'id'))
+ self.assertFalse(difference.Lookup('contextMenus', 'functions'))
+ self.assertFalse(difference.Lookup('contextMenus', 'events', 'onClicked',
+ 'parameters', 'clickInfo', 'properties'))
+ self.assertFalse(difference.Lookup('contextMenus', 'events', 'onUpdated',
+ 'parameters', 'updateInfo'))
+
+ # Test a subset.
+ to_subtract = {
+ 'tabs': {
+ 'properties': {
+ 'TAB_PROPERTY_ONE': {}
+ },
+ 'functions': {
+ 'get': {
+ 'parameters': {
+ 'callback': {
+ 'parameters': {
+ 'tab': {}
+ }
+ }
+ }
+ }
+ },
+ 'events': {
+ 'onUpdated': {
+ 'parameters': {
+ 'updateInfo': {
+ 'properties': {
+ 'tabId': {}
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ difference = api_schema_map.Subtract(to_subtract)
+ self.assertTrue(difference.Lookup('tabs'))
+ self.assertTrue(difference.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_TWO'))
+ self.assertTrue(difference.Lookup('tabs', 'types', 'Tab', 'properties',
+ 'url'))
+ self.assertTrue(difference.Lookup('tabs', 'events', 'onActivated',
+ 'parameters', 'activeInfo'))
+ self.assertFalse(difference.Lookup('tabs', 'events', 'onUpdated',
+ 'parameters', 'updateInfo', 'properties',
+ 'tabId'))
+ self.assertFalse(difference.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_ONE'))
+ self.assertFalse(difference.Lookup('tabs', 'functions', 'get', 'parameters',
+ 'callback', 'parameters', 'tab'))
+
+
+ # Test a superset.
+ to_subtract = {
+ 'tabs': {
+ 'properties': {
+ 'TAB_PROPERTY_ONE': {},
+ 'TAB_PROPERTY_TWO': {},
+ 'TAB_PROPERTY_THREE': {}
+ },
+ 'types': {
+ 'Tab': {
+ 'properties': {
+ 'id': {},
+ 'url': {}
+ }
+ },
+ 'UpdateInfo': {
+ 'properties': {
+ 'tabId': {}
+ }
+ }
+ },
+ 'functions': {
+ 'get': {
+ 'parameters': {
+ 'callback': {
+ 'parameters': {
+ 'tab': {}
+ }
+ },
+ 'tabId': {}
+ }
+ },
+ 'getById': {
+ 'parameters': {
+ 'tabId': {},
+ 'callback': {
+ 'parameters': {
+ 'tab': {}
+ }
+ }
+ }
+ }
+ },
+ 'events': {
+ 'onActivated': {
+ 'parameters': {
+ 'activeInfo': {
+ 'properties': {
+ 'tabId': {},
+ 'windowId': {},
+ }
+ }
+ }
+ },
+ 'onUpdated': {
+ 'parameters': {
+ 'updateInfo': {
+ 'properties': {
+ 'tabId': {}
+ }
+ }
+ }
+ },
+ 'onClicked': {
+ 'parameters': {
+ 'clickInfo': {
+ 'properties': {
+ 'tabId': {}
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ difference = api_schema_map.Subtract(to_subtract)
+ self.assertFalse(difference.Lookup('tabs'))
+ self.assertFalse(difference.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_TWO'))
+ self.assertFalse(difference.Lookup('tabs', 'properties'))
+ self.assertFalse(difference.Lookup('tabs', 'types', 'Tab', 'properties',
+ 'url'))
+ self.assertFalse(difference.Lookup('tabs', 'events', 'onUpdated',
+ 'parameters', 'updateInfo', 'properties',
+ 'tabId'))
+ self.assertFalse(difference.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_ONE'))
+ self.assertFalse(difference.Lookup('tabs', 'functions', 'get', 'parameters',
+ 'callback', 'parameters', 'tab'))
+ self.assertFalse(difference.Lookup('events', 'onUpdated', 'parameters',
+ 'updateInfo', 'properties', 'tabId'))
+
not at google - send to devlin 2013/09/12 20:34:23 great tests
+
+if __name__ == '__main__':
+ unittest.main()

Powered by Google App Engine
This is Rietveld 408576698