Chromium Code Reviews| 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() |