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

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

Issue 23503039: Adding APISchemaGraph class to Extensions Docserver. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Test Restructuring. 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_graph_test.py
diff --git a/chrome/common/extensions/docs/server2/api_schema_graph_test.py b/chrome/common/extensions/docs/server2/api_schema_graph_test.py
new file mode 100755
index 0000000000000000000000000000000000000000..14ccc5254614a3e8b146d14c70816b72dc898dfe
--- /dev/null
+++ b/chrome/common/extensions/docs/server2/api_schema_graph_test.py
@@ -0,0 +1,301 @@
+#!/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_graph import APISchemaGraph
+
+
+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 APISchemaGraphTest(unittest.TestCase):
+
+ def testLookup(self):
+ self._testApiSchema(APISchemaGraph(API_SCHEMA))
+
+ def testIsEmpty(self):
+ # A few assertions to make sure that Lookup works on empty sets.
+ empty_graph = APISchemaGraph({})
+ self.assertTrue(empty_graph.IsEmpty())
+ self.assertFalse(empty_graph.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_ONE'))
+ self.assertFalse(empty_graph.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'tab'))
+ self.assertFalse(empty_graph.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'tabId'))
+ self.assertFalse(empty_graph.Lookup('tabs', 'events', 'onActivated',
+ 'parameters', 'activeInfo'))
+ self.assertFalse(empty_graph.Lookup('tabs', 'events', 'onUpdated',
+ 'parameters', 'updateInfo'))
+
+ def testSubtractEmpty(self):
+ self._testApiSchema(
+ APISchemaGraph(API_SCHEMA).Subtract(APISchemaGraph({})))
+
+ def testSubtractSelf(self):
+ self.assertTrue(
+ APISchemaGraph(API_SCHEMA).Subtract(APISchemaGraph(API_SCHEMA))
+ .IsEmpty())
+
+ def _testApiSchema(self, api_schema_graph):
+ self.assertTrue(api_schema_graph.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_ONE'))
+ self.assertTrue(api_schema_graph.Lookup('tabs', 'types', 'Tab'))
+ self.assertTrue(api_schema_graph.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'tab'))
+ self.assertTrue(api_schema_graph.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'tabId'))
+ self.assertTrue(api_schema_graph.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'tab', 'type'))
+ self.assertTrue(api_schema_graph.Lookup('tabs', 'events', 'onActivated',
+ 'parameters', 'activeInfo'))
+ self.assertTrue(api_schema_graph.Lookup('tabs', 'events', 'onUpdated',
+ 'parameters', 'updateInfo'))
+ self.assertTrue(api_schema_graph.Lookup('tabs', 'properties', 'lowercase',
+ 'properties', 'one', 'value'))
+ self.assertTrue(api_schema_graph.Lookup('tabs', 'properties', 'lowercase',
+ 'properties', 'two', 'description'))
+
+ self.assertFalse(api_schema_graph.Lookup('windows'))
+ self.assertFalse(api_schema_graph.Lookup('tabs', 'properties',
+ 'TAB_PROPERTY_DEUX'))
+ self.assertFalse(api_schema_graph.Lookup('tabs', 'events', 'onActivated',
+ 'parameters', 'callback'))
+ self.assertFalse(api_schema_graph.Lookup('tabs', 'functions', 'getById',
+ 'parameters', 'tab'))
+ self.assertFalse(api_schema_graph.Lookup('tabs', 'functions', 'get',
+ 'parameters', 'type'))
+ self.assertFalse(api_schema_graph.Lookup('tabs', 'properties', 'lowercase',
+ 'properties', 'two', 'value'))
+
+ def testSubtractDisjointSet(self):
+ difference = APISchemaGraph(API_SCHEMA).Subtract(APISchemaGraph({
+ 'contextMenus': {
+ 'properties': {
+ 'CONTEXT_MENU_PROPERTY_ONE': {}
+ },
+ 'types': {
+ 'Menu': {
+ 'properties': {
+ 'id': {},
+ 'width': {}
+ }
+ }
+ },
+ 'functions': {
+ 'get': {
+ 'parameters': {
+ 'callback': {}
+ }
+ }
+ },
+ 'events': {
+ 'onClicked': {
+ 'parameters': {
+ 'clickInfo': {}
+ }
+ },
+ 'onUpdated': {
+ 'parameters': {
+ 'updateInfo': {}
+ }
+ }
+ }
+ }
+ }))
+ 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'))
+
+ def testSubtractSubset(self):
+ difference = APISchemaGraph(API_SCHEMA).Subtract(APISchemaGraph({
+ 'tabs': {
+ 'properties': {
+ 'TAB_PROPERTY_ONE': { 'value': {} }
+ },
+ 'functions': {
+ 'get': {
+ 'parameters': {
+ 'tab': { 'name': {},
+ 'type': {},
+ 'description': {}
+ }
+ }
+ }
+ },
+ 'events': {
+ 'onUpdated': {
+ 'parameters': {
+ 'updateInfo': {
+ 'name': {},
+ 'properties': {
+ 'tabId': {}
+ }
+ }
+ }
+ }
+ }
+ }
+ }))
+ 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'))
+
+ def testSubtractSuperset(self):
+ difference = APISchemaGraph(API_SCHEMA).Subtract(APISchemaGraph({
+ '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': {}
+ }
+ }
+ }
+ }
+ }))
+ 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()
« no previous file with comments | « chrome/common/extensions/docs/server2/api_schema_graph.py ('k') | chrome/common/extensions/docs/server2/app.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698