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