Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
# SDM-report2
これは豊橋技術科学大学のソフトウェア設計論の第2レポートのために作られたレポジトリである。
57 changes: 29 additions & 28 deletions calc_mul.py
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,34 @@

import re

def calc(A,B):
ai=str(A)
bi=str(B)
p = re.compile('\d+(\.\d+)?')
if p.match(ai) or p.match(bi):
a=float(ai)
b=float(bi)
if 0<a and a<b and b<1000:
valid=True
else:
valid=False
else:
valid=False

if valid:
ans=a*b
return ans
else:
return -1


def main ():
matchstring = ''
while matchstring != 'end':
A = input ('input A: ')
B = input ('input B: ')
print ('input A * input B = ', calc(A,B))
def calc(A, B):
# Check if A and B are integers
if not isinstance(A, int) or not isinstance(B, int):
return -1

# Check valid range (1 <= A, B <= 999)
if 1 <= A <= 999 and 1 <= B <= 999:
return A * B
else:
return -1

def main():
while True:
try:
A = input('input A: ')
B = input('input B: ')

if A.lower() == 'end' or B.lower() == 'end':
break

# Convert input to integer
A = int(A)
B = int(B)

print('input A * input B =', calc(A, B))

except ValueError:
print("Invalid input. Please enter integers between 1 and 999.")

if __name__ == '__main__':
main()
main()
58 changes: 50 additions & 8 deletions test_cases.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,57 @@

class TestCalc (unittest.TestCase):

def test_sample1 (self):
self.assertEqual (21, calc(3,7))
# 1. 有効な入力値
def test_sample01(self):
self.assertEqual(1, calc(1, 1)) # 最小の正の整数

def test_sample2 (self):
self.assertEqual (-1, calc(0,150))
def test_sample02(self):
self.assertEqual(999 * 999, calc(999, 999)) # 最大の正の整数

def test_sample3 (self):
self.assertEqual (-1, calc('a','b'))
def test_sample03(self):
self.assertEqual(500 * 20, calc(500, 20)) # 任意の正の整数

def test_sample4 (self):
self.assertEqual (-1, calc(0.1,999))
# 2. 無効な入力値
def test_sample04(self):
self.assertEqual(-1, calc(0, 10)) # ゼロを含む

def test_sample05(self):
self.assertEqual(-1, calc(-1, 5)) # 負の整数

def test_sample06(self):
self.assertEqual(-1, calc(0.1, 10)) # 小数

def test_sample07(self):
self.assertEqual(-1, calc('a', 'b')) # 文字列

def test_sample08(self):
self.assertEqual(-1, calc(None, 2)) # None

# 3. 境界値テスト
def test_sample09(self):
self.assertEqual(-1, calc(0, 1)) # 境界値:ゼロ

def test_sample10(self):
self.assertEqual(-1, calc(-1, 1)) # 境界値:負の数

def test_sample11(self):
self.assertEqual(-1, calc(1000, 1000)) # 上限超え

# 4. アンダーフロー・オーバーフローの入力テスト
def test_sample12(self):
self.assertEqual(-1, calc(10**18, 10**18)) # 乗算が非常に大きい数

def test_sample13(self):
self.assertEqual(-1, calc(-10**18, 10**18)) # 乗算で極端に小さい値

# 5. 整数でない値の入力テスト
def test_sample14(self):
self.assertEqual(-1, calc(0.1, 5)) # 小数を入力

def test_sample15(self):
self.assertEqual(-1, calc("hello", 3)) # 文字列を入力

# 6. ヌルのインプットテスト
def test_sample16(self):
self.assertEqual(-1, calc(None, 2)) # None を渡す

Loading