7章で実施したこと
- 同じ量のFrancとDollarを比較した際、同値と判断されないよう修正
__class__アトリビュートが同じかどうかで判定するようにしました。ただ直接__class__アトリビュートを見ているのが気持ち悪いです。ほかにいい方法はないかな。
money.py
#!/usr/bin/env python # coding: utf-8 """テスト駆動開発入門 7章 りんごとみかん """ class Money(object): def __eq__(self, other): return self._amount == other._amount and \ self.__class__ == other.__class__ class Dollar(Money): def __init__(self, amount): self._amount = amount def times(self, multiplier): return Dollar(self._amount * multiplier) class Franc(Money): def __init__(self, amount): self._amount = amount def times(self, multiplier): return Franc(self._amount * multiplier)
money_test.py
#!/usr/bin/env python # coding: utf-8 """テスト駆動開発入門 7章 りんごとみかん """ import unittest from money import * class TestMoney(unittest.TestCase): """moneyモジュールのテスト """ def testMultiplication(self): """かけ算のテスト """ five = Dollar(5) self.assertEqual(Dollar(10), five.times(2) ) self.assertEqual(Dollar(15), five.times(3) ) def testFrancMultiplication(self): """Francクラスのかけ算のテスト """ five = Franc(5) self.assertEqual(Franc(10), five.times(2) ) self.assertEqual(Franc(15), five.times(3) ) def testEuality(self): """同値テスト """ self.assert_( Dollar(5) == Dollar(5) ) self.assert_(not Dollar(5) == Dollar(6) ) self.assert_( Franc(5) == Franc(5) ) self.assert_(not Franc(5) == Franc(6) ) self.assert_(not Franc(5) == Dollar(5) ) if __name__ == "__main__": unittest.main()
- 作者: ケントベック,Kent Beck,長瀬嘉秀,テクノロジックアート
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2003/09
- メディア: 単行本
- 購入: 43人 クリック: 1,002回
- この商品を含むブログ (153件) を見る