simple_mock_unittest.py revision 46d4c2bc3267f3f028f39e7e311b0f89aba2e4fd
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.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