開発環境
- macOS Catalina - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Python 3.8 (プログラミング言語)
Practical Programming: An Introduction to Computer Science Using Python 3.6 (Paul Gries(著)、Jennifer Campbell(著)、Jason Montojo(著)、Pragmatic Bookshelf)のChapter 14(Object-Oriented Programming)、Exercise 5の解答を求めてみる。
コード
#!/usr/bin/env python3
from unittest import TestCase, main
class TestLineSegment(TestCase):
def setUp(self):
self.segment = LineSegment(Point(1, 1), Point(3, 2))
def test_slope(self):
self.assertEqual(self.segment.slope(), 0.5)
def test_length(self):
self.assertEqual(self.segment.length(), 2.23606797749979)
class Point:
def __init__(self, x: float, y: float) -> None:
self.x = x
self.y = y
class LineSegment:
def __init__(self, point1: Point, point2: Point) -> None:
self.point1 = point1
self.point2 = point2
def slope(self) -> float:
return (self.point2.y - self.point1.y) / \
(self.point2.x - self.point1.x)
def length(self) -> float:
return ((self.point2.x - self.point1.x) ** 2 +
(self.point2.y - self.point1.y) ** 2) ** (1 / 2)
if __name__ == "__main__":
main()
入出力結果(Zsh、PowerShell、Terminal、Jupyter(IPython))
% ./sample5.py
E
======================================================================
ERROR: test_slope (__main__.TestLineSegment)
----------------------------------------------------------------------
Traceback (most recent call last):
File "./sample5.py", line 7, in setUp
self.segment = LineSegment(Point(1, 1), Point(3, 2))
TypeError: Point() takes no arguments
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (errors=1)
% ./sample5.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
% ./sample5.py
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
% ./sample5.py -v
test_length (__main__.TestLineSegment) ... ok
test_slope (__main__.TestLineSegment) ... ok
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
% mypy sample5.py
Success: no issues found in 1 source file
%
0 コメント:
コメントを投稿