Skip to content

Commit 5f2a1f3

Browse files
author
amosio
committed
monkey patching
1 parent 2e28859 commit 5f2a1f3

2 files changed

Lines changed: 17 additions & 11 deletions

File tree

python3/koans/about_dice_project.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import random
77

8+
89
class DiceSet:
910
def __init__(self):
1011
self._values = None
@@ -16,8 +17,10 @@ def values(self):
1617
def roll(self, n):
1718
# Needs implementing!
1819
# Tip: random.randint(min, max) can be used to generate random numbers
20+
# random
1921
pass
2022

23+
2124
class AboutDiceProject(Koan):
2225
def test_can_create_a_dice_set(self):
2326
dice = DiceSet()
@@ -30,7 +33,8 @@ def test_rolling_the_dice_returns_a_set_of_integers_between_1_and_6(self):
3033
self.assertTrue(isinstance(dice.values, list), "should be a list")
3134
self.assertEqual(5, len(dice.values))
3235
for value in dice.values:
33-
self.assertTrue(value >= 1 and value <= 6, "value " + str(value) + " must be between 1 and 6")
36+
self.assertTrue(value >= 1 and value <= 6, "value " +
37+
str(value) + " must be between 1 and 6")
3438

3539
def test_dice_values_do_not_change_unless_explicitly_rolled(self):
3640
dice = DiceSet()
@@ -48,8 +52,8 @@ def test_dice_values_should_change_between_rolls(self):
4852
dice.roll(5)
4953
second_time = dice.values
5054

51-
self.assertNotEqual(first_time, second_time, \
52-
"Two rolls should not be equal")
55+
self.assertNotEqual(first_time, second_time,
56+
"Two rolls should not be equal")
5357

5458
# THINK ABOUT IT:
5559
#

python3/koans/about_monkey_patching.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,26 @@
77

88
from runner.koan import *
99

10+
1011
class AboutMonkeyPatching(Koan):
1112
class Dog:
1213
def bark(self):
1314
return "WOOF"
1415

1516
def test_as_defined_dogs_do_bark(self):
1617
fido = self.Dog()
17-
self.assertEqual(__, fido.bark())
18+
self.assertEqual("WOOF", fido.bark())
1819

1920
# ------------------------------------------------------------------
2021

21-
# Add a new method to an existing class.
22+
# Add a new method to an ex isting class.
2223
def test_after_patching_dogs_can_both_wag_and_bark(self):
2324
def wag(self): return "HAPPY"
2425
self.Dog.wag = wag
2526

2627
fido = self.Dog()
27-
self.assertEqual(__, fido.wag())
28-
self.assertEqual(__, fido.bark())
28+
self.assertEqual("HAPPY", fido.wag())
29+
self.assertEqual("WOOF", fido.bark())
2930

3031
# ------------------------------------------------------------------
3132

@@ -35,14 +36,15 @@ def test_most_built_in_classes_cannot_be_monkey_patched(self):
3536
except Exception as ex:
3637
err_msg = ex.args[0]
3738

38-
self.assertRegex(err_msg, __)
39+
self.assertRegex(err_msg, "built-in")
3940

4041
# ------------------------------------------------------------------
4142

42-
class MyInt(int): pass
43+
class MyInt(int):
44+
pass
4345

4446
def test_subclasses_of_built_in_classes_can_be_be_monkey_patched(self):
4547
self.MyInt.is_even = lambda self: (self % 2) == 0
4648

47-
self.assertEqual(__, self.MyInt(1).is_even())
48-
self.assertEqual(__, self.MyInt(2).is_even())
49+
self.assertEqual(False, self.MyInt(1).is_even())
50+
self.assertEqual(True, self.MyInt(2).is_even())

0 commit comments

Comments
 (0)