1# Copyright 2012 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. 4import unittest 5 6from telemetry.testing import simple_mock 7 8_ = simple_mock.DONT_CARE 9 10# pylint: disable=no-member 11class SimpleMockUnitTest(unittest.TestCase): 12 def testBasic(self): 13 mock = simple_mock.MockObject() 14 mock.ExpectCall('foo') 15 16 mock.foo() 17 18 def testReturn(self): 19 mock = simple_mock.MockObject() 20 mock.ExpectCall('foo').WillReturn(7) 21 22 ret = mock.foo() 23 self.assertEquals(ret, 7) 24 25 def testArgs(self): 26 mock = simple_mock.MockObject() 27 mock.ExpectCall('foo').WithArgs(3, 4) 28 29 mock.foo(3, 4) 30 31 def testArgs2(self): 32 mock = simple_mock.MockObject() 33 mock.ExpectCall('foo', 3, 4) 34 35 mock.foo(3, 4) 36 37 def testArgsMismatch(self): 38 mock = simple_mock.MockObject() 39 mock.ExpectCall('foo').WithArgs(3, 4) 40 41 self.assertRaises(Exception, 42 lambda: mock.foo(4, 4)) 43 44 45 def testArgsDontCare(self): 46 mock = simple_mock.MockObject() 47 mock.ExpectCall('foo').WithArgs(_, 4) 48 49 mock.foo(4, 4) 50 51 def testOnCall(self): 52 mock = simple_mock.MockObject() 53 54 handler_called = [] 55 def Handler(arg0): 56 assert arg0 == 7 57 handler_called.append(True) 58 mock.ExpectCall('baz', 7).WhenCalled(Handler) 59 60 mock.baz(7) 61 self.assertTrue(len(handler_called) > 0) 62 63 64 def testSubObject(self): 65 mock = simple_mock.MockObject() 66 mock.bar = simple_mock.MockObject(mock) 67 68 mock.ExpectCall('foo').WithArgs(_, 4) 69 mock.bar.ExpectCall('baz') 70 71 mock.foo(0, 4) 72 mock.bar.baz() 73 74 def testSubObjectMismatch(self): 75 mock = simple_mock.MockObject() 76 mock.bar = simple_mock.MockObject(mock) 77 78 mock.ExpectCall('foo').WithArgs(_, 4) 79 mock.bar.ExpectCall('baz') 80 81 self.assertRaises( 82 Exception, 83 lambda: mock.bar.baz()) # pylint: disable=unnecessary-lambda 84