mock_function_test.py revision 0f1bc08d4cfcc34181b0b5cbf065c40f687bf740
1#!/usr/bin/env python
2# Copyright 2013 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import unittest
7
8from mock_function import MockFunction
9
10
11class MockFunctionUnittest(unittest.TestCase):
12  def testMockFunction(self):
13    @MockFunction
14    def calc(a, b, mult=1):
15      return (a + b) * mult
16
17    self.assertTrue(*calc.CheckAndReset(0))
18    self.assertEqual(
19        (False, 'calc: expected 1 call(s), got 0'), calc.CheckAndReset(1))
20
21    self.assertEqual(20, calc(2, 3, mult=4))
22    self.assertTrue(*calc.CheckAndReset(1))
23    self.assertTrue(*calc.CheckAndReset(0))
24
25    self.assertEqual(20, calc(2, 3, mult=4))
26    self.assertEqual(
27        (False, 'calc: expected 0 call(s), got 1'), calc.CheckAndReset(0))
28
29    self.assertEqual(3, calc(1, 2))
30    self.assertEqual(0, calc(3, 4, mult=0))
31    self.assertTrue(*calc.CheckAndReset(2))
32    self.assertTrue(*calc.CheckAndReset(0))
33
34    self.assertEqual(3, calc(1, 2))
35    self.assertEqual(0, calc(3, 4, mult=0))
36    self.assertEqual(
37        (False, 'calc: expected 3 call(s), got 2'), calc.CheckAndReset(3))
38
39
40if __name__ == '__main__':
41  unittest.main()
42