Home | History | Annotate | Download | only in generate
      1 # Copyright 2014 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 import imp
      6 import os.path
      7 import sys
      8 import unittest
      9 
     10 def _GetDirAbove(dirname):
     11   """Returns the directory "above" this file containing |dirname| (which must
     12   also be "above" this file)."""
     13   path = os.path.abspath(__file__)
     14   while True:
     15     path, tail = os.path.split(path)
     16     assert tail
     17     if tail == dirname:
     18       return path
     19 
     20 try:
     21   imp.find_module("mojom")
     22 except ImportError:
     23   sys.path.append(os.path.join(_GetDirAbove("pylib"), "pylib"))
     24 from mojom.generate import module as mojom
     25 
     26 
     27 class ModuleTest(unittest.TestCase):
     28 
     29   def testNonInterfaceAsInterfaceRequest(self):
     30     """Tests that a non-interface cannot be used for interface requests."""
     31     module = mojom.Module('test_module', 'test_namespace')
     32     struct = mojom.Struct('TestStruct', module=module)
     33     with self.assertRaises(Exception) as e:
     34       mojom.InterfaceRequest(struct)
     35     self.assertEquals(
     36         e.exception.__str__(),
     37         'Interface request requires \'x:TestStruct\' to be an interface.')
     38 
     39   def testNonInterfaceAsAssociatedInterface(self):
     40     """Tests that a non-interface type cannot be used for associated interfaces.
     41     """
     42     module = mojom.Module('test_module', 'test_namespace')
     43     struct = mojom.Struct('TestStruct', module=module)
     44     with self.assertRaises(Exception) as e:
     45       mojom.AssociatedInterface(struct)
     46     self.assertEquals(
     47         e.exception.__str__(),
     48         'Associated interface requires \'x:TestStruct\' to be an interface.')
     49