2014年11月10日月曜日

開発環境

Practical Programming: An Introduction to Computer Science Using Python 3 (Pragmatic Programmers) (Paul Gries (著)、Jennifer Campbell (著)、Jason Montojo (著)、Lynn Beighley (編集)、Pragmatic Bookshelf)のChapter 15(Testing and Debugging)、15.7(Exercises) 3.を解いてみる。

15.7(Exercises) 3.

コード(BBEdit)

TestAllPrefixes.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import unittest

def allPrefixes(s):
    if s == '':
        return set()
    first_char = s[0]
    sub_strs = set()
    for i in range(len(s)):
        for j in range(i + 1, len(s) + 1):
            sub_str = s[i:j]
            if sub_str[0] == first_char and sub_str != '':
                sub_strs.add(sub_str)
    return sub_strs

class TestAllPrefixes(unittest.TestCase):
    def test_empty(self):
        s = ''
        expected = set()
        actual = allPrefixes(s)
        self.assertEqual(expected, actual)
    def test_char(self):
        s = 'l'
        expected = {'l'}
        actual = allPrefixes(s)
        self.assertEqual(expected, actual)
    def test_normal(self):
        s = 'lead'
        expected = {'l', 'le', 'lea', 'lead'}
        actual = allPrefixes(s)
        self.assertEqual(expected, actual)
    def test_deplicated(self):
        s = 'abaacd'
        expected = {'a', 'ab', 'aba', 'abaa', 'abaac', 'abaacd',
                    'aa', 'aac', 'aacd', 'ac', 'acd'}
        actual = allPrefixes(s)
        self.assertEqual(expected, actual)

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

入出力結果(Terminal, IPython)

$ ./TestAllPrefixes.py
....
----------------------------------------------------------------------
Ran 4 tests in 0.002s

OK
$

0 コメント:

コメントを投稿