Subscribed unsubscribe Subscribe Subscribe

目の前に僕らの道がある

勉強会とか、技術的にはまったことのメモ

テスト駆動開発入門をPythonで写経してみた。5

なんてことはないです。一番汚い形でFrancクラスを追加しただけです。

7章で抽象クラスを使うのですが、Pythonには言語の機能として抽象クラスとやらが無いようです。ていうか抽象クラスって何だ?レベルなのですが。とりあえず調べよう。

追記
抽象基底クラスをサポートするためにabcモジュールがPython2.6から組み込まれたらしいです。これに関しても調べてみます。

# !/usr/bin/env python
# coding : utf-8
"""
テスト駆動開発入門
5章 フランクに話す
"""
import unittest

class TestMoney(unittest.TestCase):
    def testMultiplication(self):
        five = Dollar(5)
        self.assertEqual(Dollar(10), five.times(2) )
        self.assertEqual(Dollar(15), five.times(3) )

    def testFrancMultiplication(self):
        five = Franc(5)
        self.assertEqual(Franc(10), five.times(2) )
        self.assertEqual(Franc(15), five.times(3) )

    def testEuality(self):
        self.assert_(Dollar(5).equals(Dollar(5) ) )
        self.assert_(not Dollar(5).equals(Dollar(6) ) )

class Dollar(object):
    __amount = 0
    def __init__(self, amount):
        self.__amount = amount

    def times(self, multiplier):
        return Dollar(self.__amount * multiplier)

    def equals(self, dollar):
        return self.__amount == dollar.get_amount()

    def get_amount(self):
        return self.__amount

    def __eq__(self, other):
        return self.__amount == other.get_amount()

class Franc(object):
    __amount = 0
    def __init__(self, amount):
        self.__amount = amount

    def times(self, multiplier):
        return Franc(self.__amount * multiplier)

    def equals(self, franc):
        return self.__amount == franc.get_amount()

    def get_amount(self):
        return self.__amount

    def __eq__(self, other):
        return self.__amount == other.get_amount()

if __name__ == "__main__":
    unittest.main()

テスト駆動開発入門

テスト駆動開発入門

  • 作者: ケントベック,Kent Beck,長瀬嘉秀,テクノロジックアート
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2003/09
  • メディア: 単行本
  • 購入: 43人 クリック: 1,002回
  • この商品を含むブログ (153件) を見る