Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import hashlib
- import unittest
- from main import hanoi_recursive, hanoi_iterative
- EXPECTED_RESULTS = {
- 1: '2f3541c4d7a8baaaa02fbe73986bc9ac068cc956a5368bd3b133f4f5f82add0f',
- 2: 'c7b0d0d6414614551ee3d29c2a21fac05102debf2e171ae40ef99bcceaddc8e0',
- 3: 'f39ad8135915089584cc1bf5467239855808341f6b6f64d26681ff24dc52f0b1',
- 4: '2b72adc540de0c3aea7b9271a9e37f39d30f61f0837401ec3c4653a19055422b',
- 5: 'bb87110da63f1a44f4339c0fa272d91dacf2c49958f057cfb5bebfa8829ef2d5',
- 6: 'c1145c976c05f04d80754152f96fb6cf477390247a121cf3aa87a9af4cb5aa92',
- 7: '757e57db73999cd2951336d19bf7af4622dc5df94af5ffb4e489ae150cdb0e91',
- 8: 'aac4002299628067e5b01746a88a8a3b6a7fe1e968b8ce45064e79cdc3fcb658',
- 9: '559d73a4efc5c162e7d7ae151f394d2e4904e6bcb23c9c6dc232838f20bade8a',
- 10: 'db322e1c33f72a671090c85b5117c4a0dfacf23817c16771c9782a5f1b83eb3e',
- 11: '907ad9e4e2226ead9b721035c3badd786c90368e4ec87e4d832def3e8276b402',
- 12: '3c782aa97c61390c26830c034e9f97806ff7b67dbe0523eed23992a5d511d8ad',
- 13: '63c60cb3a79582aff9545e7eeb51de38755388d2148611a69ef60e53fbb402f3',
- 14: '1c291f215d8d1390a5f44b16374d2656987453a5cff26a2ca8691e7aaa03d176',
- 15: '2d37cccb7ce35a56250d37a9bed2a91185590139d1aafe62e3923787ef50812b',
- 16: '60601e352008bb68d0b33168723e52028cf7c26831eca51cb8694b969939ffa8',
- 17: 'f02c01bd5a2924a7376d3f802bca90e80d6afc8669453750a5b46575b5802256',
- 18: 'f1d81a3cb3e1237e1e2ff3016c8c13b1048014b1fc779db022d3a9ed7a85790e',
- 19: '8144bf8944f08dc16c125d5c574e779821066be34ffcf8e906af47d28a449ee8',
- 20: 'c4f7c3a34b38b0580c3c9790787f3e86ee4b68eea4d47d660713511878e3ab50'
- }
- def hash_output(input_str: str) -> str:
- return hashlib.sha256(input_str.encode()).hexdigest()
- class TestHanoi(unittest.TestCase):
- def test_invalid_n_type(self):
- invalid_ns = ['-5', '5', 7.4, None, [], {}]
- for n in invalid_ns:
- self.assertRaises(TypeError, hanoi_iterative, n)
- self.assertRaises(TypeError, hanoi_recursive, n)
- def test_invalid_n_value(self):
- invalid_ns = [0, -1, -5, -10]
- for n in invalid_ns:
- self.assertRaises(ValueError, hanoi_iterative, n)
- self.assertRaises(ValueError, hanoi_recursive, n)
- def test_invalid_peg_names_type(self):
- invalid_peg_names = [5, 7.4, None, [], {}]
- for n in invalid_peg_names:
- self.assertRaises(TypeError, hanoi_iterative, 5, n, 'B', 'C')
- self.assertRaises(TypeError, hanoi_iterative, 5, 'A', n, 'C')
- self.assertRaises(TypeError, hanoi_iterative, 5, 'A', 'B', n)
- self.assertRaises(TypeError, hanoi_recursive, 5, n, 'B', 'C')
- self.assertRaises(TypeError, hanoi_recursive, 5, 'A', n, 'C')
- self.assertRaises(TypeError, hanoi_recursive, 5, 'A', 'B', n)
- def test_hanoi_functions(self):
- for n, expected_result in EXPECTED_RESULTS.items():
- with self.subTest(n=n):
- expected_hash = EXPECTED_RESULTS[n]
- recursive_hash = hash_output(hanoi_recursive(n))
- iterative_hash = hash_output(hanoi_iterative(n))
- self.assertEqual(recursive_hash, expected_hash, 'Recursive hash mismatch for n = {}'.format(n))
- self.assertEqual(iterative_hash, expected_hash, 'Iterative hash mismatch for n = {}'.format(n))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement