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