146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)# Copyright 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import unittest 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)from telemetry.unittest import simple_mock 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_ = simple_mock.DONT_CARE 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SimpleMockUnitTest(unittest.TestCase): 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def testBasic(self): 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock = simple_mock.MockObject() 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.ExpectCall('foo') 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.foo() 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def testReturn(self): 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock = simple_mock.MockObject() 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.ExpectCall('foo').WillReturn(7) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ret = mock.foo() 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self.assertEquals(ret, 7) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def testArgs(self): 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock = simple_mock.MockObject() 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.ExpectCall('foo').WithArgs(3, 4) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.foo(3, 4) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def testArgs2(self): 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock = simple_mock.MockObject() 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.ExpectCall('foo', 3, 4) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.foo(3, 4) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def testArgsMismatch(self): 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock = simple_mock.MockObject() 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.ExpectCall('foo').WithArgs(3, 4) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self.assertRaises(Exception, 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lambda: mock.foo(4, 4)) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def testArgsDontCare(self): 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock = simple_mock.MockObject() 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.ExpectCall('foo').WithArgs(_, 4) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.foo(4, 4) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def testOnCall(self): 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock = simple_mock.MockObject() 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) handler_called = [] 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def Handler(arg0): 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert arg0 == 7 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) handler_called.append(True) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.ExpectCall('baz', 7).WhenCalled(Handler) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.baz(7) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self.assertTrue(len(handler_called) > 0) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def testSubObject(self): 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock = simple_mock.MockObject() 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.bar = simple_mock.MockObject(mock) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.ExpectCall('foo').WithArgs(_, 4) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.bar.ExpectCall('baz') 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.foo(0, 4) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.bar.baz() 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) def testSubObjectMismatch(self): 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock = simple_mock.MockObject() 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.bar = simple_mock.MockObject(mock) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.ExpectCall('foo').WithArgs(_, 4) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mock.bar.ExpectCall('baz') 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) self.assertRaises( 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Exception, 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lambda: mock.bar.baz()) # pylint: disable=W0108 83