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

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: Significant 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..c49f6297e948f08e19ed6bf1ecb5d4e5fd680733
--- /dev/null
+++ b/chrome/common/extensions/docs/server2/api_schema_map_test.py
@@ -0,0 +1,318 @@
+#!/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': {
+ 'lowercase': {
+ 'properties': {
+ 'one': { 'value': 1 },
+ 'two': { 'description': 'just as bad as one' }
+ }
+ },
+ 'TAB_PROPERTY_ONE': { 'value': 'magic' },
+ 'TAB_PROPERTY_TWO': {}
+ },
+ 'types': [
+ {
+ 'id': 'Tab',
+ 'properties': {
+ 'id': {},
+ 'url': {}
+ }
+ }
+ ],
+ 'functions': [
+ {
+ 'name': 'get',
+ 'parameters': [ { 'name': 'tab',
+ 'type': 'object',
+ 'description': 'gets stuff, never complains'
+ },
+ { 'name': 'tabId' }
+ ]
+ }
+ ],
+ 'events': [
+ {
+ 'name': 'onActivated',
+ 'parameters': [ {'name': 'activeInfo'} ]
+ },
+ {
+ 'name': 'onUpdated',
+ 'parameters': [ {'name': 'updateInfo'} ]
+ }
+ ]
+}]
+
+
+class APISchemaMapTest(unittest.TestCase):
+
+ def testLookup(self):
+ api_schema_map = APISchemaMap(API_SCHEMA)
+
+ self.assertTrue(api_schema_map.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_ONE'))
+ self.assertTrue(api_schema_map.Lookup('tabs', 'types', 'Tab'))
+ self.assertTrue(api_schema_map.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'tab'))
+ self.assertTrue(api_schema_map.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'tabId'))
+ self.assertTrue(api_schema_map.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'tab', 'type'))
+ self.assertTrue(api_schema_map.Lookup('tabs', 'events', 'onActivated',
+ 'parameters', 'activeInfo'))
+ self.assertTrue(api_schema_map.Lookup('tabs', 'events', 'onUpdated',
+ 'parameters', 'updateInfo'))
+ self.assertTrue(api_schema_map.Lookup('tabs', 'properties', 'lowercase',
+ 'properties', 'one', 'value'))
+ self.assertTrue(api_schema_map.Lookup('tabs', 'properties', 'lowercase',
+ 'properties', 'two', 'description'))
+
+ 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'))
+ self.assertFalse(api_schema_map.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'type'))
+ self.assertFalse(api_schema_map.Lookup('tabs', 'properties', 'lowercase',
+ 'properties', 'two', 'value'))
not at google - send to devlin 2013/09/16 14:06:24 Pull all of these assertions into a different func
epeterson 2013/09/16 17:47:23 Done.
+
+ def testSubtract(self):
+ api_schema_map = APISchemaMap(API_SCHEMA)
+
+ # Test the empty set.
+ to_subtract = APISchemaMap({})
+ difference = api_schema_map.Subtract(to_subtract)
+ self.assertTrue(difference.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_ONE'))
+ self.assertTrue(difference.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'tab'))
+ self.assertTrue(difference.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'tabId'))
+ self.assertTrue(difference.Lookup('tabs', 'events', 'onActivated',
+ 'parameters', 'activeInfo'))
+ self.assertTrue(difference.Lookup('tabs', 'events', 'onUpdated',
+ 'parameters', 'updateInfo'))
+
+ self.assertFalse(difference.Lookup('windows'))
+ self.assertFalse(difference.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_DEUX'))
+ self.assertFalse(difference.Lookup('tabs', 'events', 'onActivated',
+ 'parameters', 'callback'))
+ self.assertFalse(difference.Lookup('tabs', 'functions', 'getById',
+ 'parameters', 'tab'))
not at google - send to devlin 2013/09/16 14:06:24 ... then call it from here. def testSubtractEmpty
epeterson 2013/09/16 17:47:23 Done.
+
+ # Test the same set.
+ to_subtract = APISchemaMap(API_SCHEMA)
not at google - send to devlin 2013/09/16 14:06:24 ... and pull the rest into a different test (testS
epeterson 2013/09/16 17:47:23 Done.
+ difference = api_schema_map.Subtract(to_subtract)
+ self.assertFalse(difference.Lookup('tabs'))
not at google - send to devlin 2013/09/16 14:06:24 Also this is one case where adding a specific meth
epeterson 2013/09/16 17:47:23 Done.
+ self.assertFalse(difference.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_ONE'))
+ self.assertFalse(difference.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'tab'))
+ self.assertFalse(difference.Lookup('tabs', 'events', 'onUpdated',
+ 'parameters', 'updateInfo'))
+ self.assertFalse(difference.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'tabId'))
+ self.assertFalse(difference.Lookup('tabs', 'types', 'Tab'))
+
+ # Test a disjoint set.
not at google - send to devlin 2013/09/16 14:06:24 separate test (testSubtractDisjointSet)
epeterson 2013/09/16 17:47:23 Done.
+ to_subtract = APISchemaMap({
+ 'contextMenus': {
+ 'properties': {
+ 'CONTEXT_MENU_PROPERTY_ONE': {}
+ },
+ 'types': {
+ 'Menu': {
+ 'properties': {
+ 'id': {},
+ 'width': {}
+ }
+ }
+ },
+ 'functions': {
+ 'get': {
+ 'parameters': {
+ 'callback': {}
+ }
+ }
+ },
+ 'events': {
+ 'onClicked': {
+ 'parameters': {
+ 'clickInfo': {}
+ }
+ },
+ 'onUpdated': {
+ 'parameters': {
+ 'updateInfo': {}
+ }
+ }
+ }
+ }
+ })
+ difference = api_schema_map.Subtract(to_subtract)
+ self.assertTrue(difference.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_ONE'))
+ self.assertTrue(difference.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'tab'))
+ self.assertTrue(difference.Lookup('tabs', 'events', 'onUpdated',
+ 'parameters', 'updateInfo'))
+ self.assertTrue(difference.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'tabId'))
+ 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'))
+ self.assertFalse(difference.Lookup('contextMenus', 'events', 'onUpdated',
+ 'parameters', 'updateInfo'))
+
+ # Test a subset.
+ to_subtract = APISchemaMap({
not at google - send to devlin 2013/09/16 14:06:24 separate test (testSubtractSubset)
epeterson 2013/09/16 17:47:23 Done.
+ 'tabs': {
+ 'properties': {
+ 'TAB_PROPERTY_ONE': { 'value': {} }
+ },
+ 'functions': {
+ 'get': {
+ 'parameters': {
+ 'tab': { 'name': {},
+ 'type': {},
+ 'description': {}
+ }
+ }
+ }
+ },
+ 'events': {
+ 'onUpdated': {
+ 'parameters': {
+ 'updateInfo': {
+ 'name': {},
+ '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', 'properties', 'lowercase',
+ 'properties', 'two', 'description'))
+ 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'))
+ self.assertFalse(difference.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_ONE'))
+ self.assertFalse(difference.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_ONE', 'value'))
+ self.assertFalse(difference.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'tab'))
+
+ # Test a superset.
+ to_subtract = APISchemaMap({
not at google - send to devlin 2013/09/16 14:06:24 separate test (testSubtractSuperset)
epeterson 2013/09/16 17:47:23 Done.
+ 'tabs': {
+ 'namespace': {},
+ 'properties': {
+ 'lowercase': {
+ 'properties': {
+ 'one': { 'value': {} },
+ 'two': { 'description': {} }
+ }
+ },
+ 'TAB_PROPERTY_ONE': { 'value': {} },
+ 'TAB_PROPERTY_TWO': {},
+ 'TAB_PROPERTY_THREE': {}
+ },
+ 'types': {
+ 'Tab': {
+ 'id': {},
+ 'properties': {
+ 'id': {},
+ 'url': {}
+ }
+ },
+ 'UpdateInfo': {}
+ },
+ 'functions': {
+ 'get': {
+ 'name': {},
+ 'parameters': {
+ 'tab': { 'name': {},
+ 'type': {},
+ 'description': {}
+ },
+ 'tabId': { 'name': {} }
+ }
+ },
+ 'getById': {
+ 'parameters': {
+ 'tabId': {}
+ }
+ }
+ },
+ 'events': {
+ 'onActivated': {
+ 'name': {},
+ 'parameters': {
+ 'activeInfo': { 'name': {} }
+ }
+ },
+ 'onUpdated': {
+ 'name': {},
+ 'parameters': {
+ 'updateInfo': { 'name': {} }
+ }
+ },
+ 'onClicked': {
+ 'name': {},
+ 'parameters': {
+ 'clickInfo': {}
+ }
+ }
+ }
+ }
+ })
+ 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', 'types', 'Tab', 'properties',
+ 'id'))
+ self.assertFalse(difference.Lookup('tabs', 'events', 'onUpdated',
+ 'parameters', 'updateInfo'))
+ self.assertFalse(difference.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_ONE'))
+ self.assertFalse(difference.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'tabId'))
+ self.assertFalse(difference.Lookup('events', 'onUpdated', 'parameters',
+ 'updateInfo'))
+
+
+if __name__ == '__main__':
+ unittest.main()

Powered by Google App Engine
This is Rietveld 408576698