예제 #1
0
 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.assertEqual(LookupResult(True, None),
                    difference.Lookup('tabs'))
   self.assertEqual(LookupResult(True, None),
                    difference.Lookup('tabs', 'properties',
                                      'TAB_PROPERTY_TWO'))
   self.assertEqual(LookupResult(True, None),
                    difference.Lookup('tabs', 'properties', 'lowercase',
                                      'properties', 'two', 'description'))
   self.assertEqual(LookupResult(True, None),
                    difference.Lookup('tabs', 'types', 'Tab', 'properties',
                                      'url'))
   self.assertEqual(LookupResult(True, None),
                    difference.Lookup('tabs', 'events', 'onActivated',
                                      'parameters', 'activeInfo'))
   self.assertEqual(LookupResult(False, None),
                    difference.Lookup('tabs', 'events', 'onUpdated',
                                      'parameters', 'updateInfo'))
   self.assertEqual(LookupResult(False, None),
                    difference.Lookup('tabs', 'properties',
                                      'TAB_PROPERTY_ONE'))
   self.assertEqual(LookupResult(False, None),
                    difference.Lookup('tabs', 'properties',
                                      'TAB_PROPERTY_ONE', 'value'))
   self.assertEqual(LookupResult(False, None),
                    difference.Lookup('tabs', 'functions', 'get',
                                      'parameters', 'tab'))
예제 #2
0
 def testIsEmpty(self):
   # A few assertions to make sure that Lookup works on empty sets.
   empty_graph = APISchemaGraph({})
   self.assertTrue(empty_graph.IsEmpty())
   self.assertEqual(LookupResult(False, None),
                    empty_graph.Lookup('tabs', 'properties',
                                       'TAB_PROPERTY_ONE'))
   self.assertEqual(LookupResult(False, None),
                    empty_graph.Lookup('tabs', 'functions', 'get',
                                       'parameters', 'tab'))
   self.assertEqual(LookupResult(False, None),
                    empty_graph.Lookup('tabs', 'functions', 'get',
                                       'parameters', 'tabId'))
   self.assertEqual(LookupResult(False, None),
                    empty_graph.Lookup('tabs', 'events', 'onActivated',
                                       'parameters', 'activeInfo'))
   self.assertEqual(LookupResult(False, None),
                    empty_graph.Lookup('tabs', 'events', 'onUpdated',
                                       'parameters', 'updateInfo'))
    def testUpdate(self):
        result = APISchemaGraph(API_SCHEMA)
        to_add = APISchemaGraph({
            'tabs': {
                'properties': {
                    'TAB_PROPERTY_THREE': {
                        'description': 'better than two'
                    },
                    'TAB_PROPERTY_FOUR': {
                        'value': 4
                    }
                },
                'functions': {
                    'get': {
                        'name': {},
                        'parameters': {
                            'tab': {
                                'type': {},
                                'name': {},
                                'description': {},
                                'surprise': {}
                            }
                        }
                    },
                    'getAllInWindow': {
                        'parameters': {
                            'windowId': {
                                'type': 'object'
                            }
                        }
                    }
                }
            }
        })
        result.Update(to_add, annotation='first')
        # Looking up elements that were originally available in |result|. Because
        # of this, no |annotation| object should be attached to the LookupResult
        # object.
        self.assertEqual(LookupResult(True, None), result.Lookup('tabs'))
        self.assertEqual(
            LookupResult(True, None),
            result.Lookup('tabs', 'functions', 'get', 'parameters'))
        self.assertEqual(
            LookupResult(True, None),
            result.Lookup('tabs', 'properties', 'TAB_PROPERTY_ONE'))
        self.assertEqual(
            LookupResult(True, None),
            result.Lookup('tabs', 'properties', 'TAB_PROPERTY_ONE'))
        self.assertEqual(
            LookupResult(True, None),
            result.Lookup('tabs', 'functions', 'get', 'parameters', 'tabId'))

        # Looking up elements that were just added to |result|.
        self.assertEqual(
            LookupResult(True, 'first'),
            result.Lookup('tabs', 'properties', 'TAB_PROPERTY_THREE'))
        self.assertEqual(
            LookupResult(True, 'first'),
            result.Lookup('tabs', 'properties', 'TAB_PROPERTY_FOUR'))
        self.assertEqual(
            LookupResult(True, 'first'),
            result.Lookup('tabs', 'functions', 'getAllInWindow', 'parameters',
                          'windowId'))
        self.assertEqual(
            LookupResult(True, 'first'),
            result.Lookup('tabs', 'functions', 'get', 'parameters', 'tab',
                          'surprise'))

        to_add = APISchemaGraph({
            'tabs': {
                'properties': {
                    'TAB_PROPERTY_FIVE': {
                        'description': 'stayin\' alive'
                    }
                },
                'functions': {
                    'getAllInWindow': {
                        'parameters': {
                            'callback': {
                                'type': 'function'
                            }
                        }
                    }
                }
            }
        })
        result.Update(to_add, annotation='second')
        # Looking up the second group of elements added to |result|.
        self.assertEqual(
            LookupResult(True, 'first'),
            result.Lookup('tabs', 'properties', 'TAB_PROPERTY_FOUR'))
        self.assertEqual(
            LookupResult(True, 'second'),
            result.Lookup('tabs', 'properties', 'TAB_PROPERTY_FIVE'))
        self.assertEqual(
            LookupResult(True, 'first'),
            result.Lookup('tabs', 'functions', 'getAllInWindow', 'parameters',
                          'windowId'))
        self.assertEqual(
            LookupResult(True, 'second'),
            result.Lookup('tabs', 'functions', 'getAllInWindow', 'parameters',
                          'callback'))
        self.assertEqual(LookupResult(True, 'first'),
                         result.Lookup('tabs', 'functions', 'getAllInWindow'))
 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.assertEqual(
         LookupResult(True, None),
         difference.Lookup('tabs', 'properties', 'TAB_PROPERTY_ONE'))
     self.assertEqual(
         LookupResult(True, None),
         difference.Lookup('tabs', 'functions', 'get', 'parameters', 'tab'))
     self.assertEqual(
         LookupResult(True, None),
         difference.Lookup('tabs', 'events', 'onUpdated', 'parameters',
                           'updateInfo'))
     self.assertEqual(
         LookupResult(True, None),
         difference.Lookup('tabs', 'functions', 'get', 'parameters',
                           'tabId'))
     self.assertEqual(
         LookupResult(False, None),
         difference.Lookup('contextMenus', 'properties',
                           'CONTEXT_MENU_PROPERTY_ONE'))
     self.assertEqual(LookupResult(False, None),
                      difference.Lookup('contextMenus', 'types', 'Menu'))
     self.assertEqual(
         LookupResult(False, None),
         difference.Lookup('contextMenus', 'types', 'Menu', 'properties',
                           'id'))
     self.assertEqual(LookupResult(False, None),
                      difference.Lookup('contextMenus', 'functions'))
     self.assertEqual(
         LookupResult(False, None),
         difference.Lookup('contextMenus', 'events', 'onClicked',
                           'parameters', 'clickInfo'))
     self.assertEqual(
         LookupResult(False, None),
         difference.Lookup('contextMenus', 'events', 'onUpdated',
                           'parameters', 'updateInfo'))