10f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#!/usr/bin/env python
20f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)# Copyright 2013 The Chromium Authors. All rights reserved.
30f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
40f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)# found in the LICENSE file.
50f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
60f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)import unittest
70f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
80f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)from mock_function import MockFunction
90f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
100f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
110f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)class MockFunctionUnittest(unittest.TestCase):
120f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  def testMockFunction(self):
130f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    @MockFunction
140f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    def calc(a, b, mult=1):
150f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      return (a + b) * mult
160f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
170f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    self.assertTrue(*calc.CheckAndReset(0))
180f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    self.assertEqual(
190f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)        (False, 'calc: expected 1 call(s), got 0'), calc.CheckAndReset(1))
200f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
210f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    self.assertEqual(20, calc(2, 3, mult=4))
220f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    self.assertTrue(*calc.CheckAndReset(1))
230f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    self.assertTrue(*calc.CheckAndReset(0))
240f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
250f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    self.assertEqual(20, calc(2, 3, mult=4))
260f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    self.assertEqual(
270f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)        (False, 'calc: expected 0 call(s), got 1'), calc.CheckAndReset(0))
280f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
290f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    self.assertEqual(3, calc(1, 2))
300f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    self.assertEqual(0, calc(3, 4, mult=0))
310f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    self.assertTrue(*calc.CheckAndReset(2))
320f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    self.assertTrue(*calc.CheckAndReset(0))
330f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
340f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    self.assertEqual(3, calc(1, 2))
350f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    self.assertEqual(0, calc(3, 4, mult=0))
360f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)    self.assertEqual(
370f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)        (False, 'calc: expected 3 call(s), got 2'), calc.CheckAndReset(3))
380f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
390f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
400f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)if __name__ == '__main__':
410f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  unittest.main()
42