import pytest from src.util.counter_object import CounterObject class TestCounterObject: def test_describe(self) -> int: """ Cases: カウンターオブジェクトにて保持した値を返すこと Arranges: なし Expects: 問い合わせた値が期待値と一致する """ # Act sut = CounterObject() actual = sut.describe() # Expects assert actual == 1 def test_raise_describe(self) -> int: """ Cases: カウンターオブジェクトの保持した値を問い合わせる際、引数を渡すと例外が発生すること Arranges: なし Expects: 問い合わせた値が期待値と一致する """ # Act with pytest.raises(Exception) as e: sut = CounterObject() sut.describe(1) # Expects assert str(e.value) == 'describe() takes 1 positional argument but 2 were given' def test_increment(self) -> int: """ Cases: カウンターオブジェクトにて保持した値がインクリメントされていること Arranges: なし Expects: 戻り値が期待値と一致する """ # Act sut = CounterObject(5) sut.increment() actual = sut.increment() # Expects assert actual == 7 def test_raise_increment(self) -> int: """ Cases: 文字列を引数で渡すことで、例外が発生すること Arranges: なし Expects: 発生した例外が期待値と一致する """ # Act with pytest.raises(Exception) as e: sut = CounterObject(5) sut.increment('aaa') sut.increment('aaa') # Expects assert str(e.value) == "unsupported operand type(s) for +=: 'int' and 'str'" def test_decrement(self) -> int: """ Cases: カウンターオブジェクトにて保持した値がデクリメントされていること Arranges: なし Expects: 戻り値が期待値と一致する """ # Act sut = CounterObject(5) sut.decrement(2) actual = sut.decrement(2) # Expects assert actual == 1 def test_raise_decrement(self) -> int: """ Cases: 文字列を引数で渡すことで、例外が発生すること Arranges: なし Expects: 発生した例外が期待値と一致する """ # Act with pytest.raises(Exception) as e: sut = CounterObject(5) sut.decrement('aaa') sut.decrement('aaa') # Expects assert str(e.value) == "unsupported operand type(s) for -=: 'int' and 'str'"