/
test_girl.py
136 lines (108 loc) · 3.77 KB
/
test_girl.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
import unittest
from unittest.mock import Mock
from testfixtures import compare
from testfixtures import OutputCapture
from testfixtures import ShouldRaise
class TestGirlName(unittest.TestCase):
def _getTarget(self, *args, **kwargs):
from pycure.girl import Girl
return Girl(*args, **kwargs)
def _callFUT(self, girl):
return girl.name
def test_before_transform(self):
girl = self._getTarget(
'ねじめじろう',
'ネジキュア',
'はい')
name = self._callFUT(girl)
compare(name, 'ねじめじろう')
def test_after_transform(self):
girl = self._getTarget(
'ねじめじろう',
'ネジキュア',
'はい')
girl._transformed = True
name = self._callFUT(girl)
compare(name, 'ネジキュア')
class TestGirlTransform(unittest.TestCase):
def _getTarget(self, *args, **kwargs):
from pycure.girl import Girl
return Girl(*args, **kwargs)
def _callFUT(self, girl, stdout):
return girl.transform(stdout)
def test_stdout(self):
girl = self._getTarget(
'ねじめじろう',
'ネジキュア',
'はい')
with OutputCapture() as output:
self._callFUT(girl, True)
output.compare('はい')
def test_not_stdout(self):
girl = self._getTarget(
'ねじめじろう',
'ネジキュア',
'はい')
result = self._callFUT(girl, False)
compare(result, 'はい')
class TestFirstGirlTransform(unittest.TestCase):
def _getTarget(self, *args, **kwargs):
from pycure.girl import FirstGirl
return FirstGirl(*args, **kwargs)
def _callFUT(self, girl, partner_name, stdout):
return girl.transform(partner_name, stdout)
def test_has_partner(self):
girl1 = self._getTarget(
'ねじめ',
'キュアドリル',
'はい')
girl2 = self._getTarget(
'じろう',
'キュアビッツ',
'はいじゃないが')
girl1.partner = girl2
girl2.partner = girl1
girl1.transform_with = Mock()
self._callFUT(girl1, 'じろう', False)
compare(girl1.transform_with.call_count, 1)
def test_no_partner(self):
girl1 = self._getTarget(
'ねじめ',
'キュアドリル',
'はい')
girl1.transform_with = Mock()
self._callFUT(girl1, 'じろう', False)
compare(girl1.transform_with.call_count, 0)
class TestFirstGirlTransformWith(unittest.TestCase):
def _getTarget(self, *args, **kwargs):
from pycure.girl import FirstGirl
return FirstGirl(*args, **kwargs)
def _callFUT(self, girl, partner_name, stdout):
return girl.transform_with(partner_name, stdout)
def test_transform(self):
girl1 = self._getTarget(
'ねじめ',
'キュアドリル',
'はい')
girl2 = self._getTarget(
'じろう',
'キュアビッツ',
'はいじゃないが')
girl1.partner = girl2
girl2.partner = girl1
result = self._callFUT(girl1, 'じろう', False)
compare(result, 'はい')
def test_invalid_partner(self):
girl1 = self._getTarget(
'ねじめ',
'キュアドリル',
'はい')
girl2 = self._getTarget(
'じろう',
'キュアビッツ',
'はいじゃないが')
girl1.partner = girl2
girl2.partner = girl1
from pycure.girl import PartnerInvalidError
with ShouldRaise(PartnerInvalidError):
self._callFUT(girl1, 'しろう', False)