~cpp
import unittest
class AnagramTestCase(unittest.TestCase):
def setUp(self):
self.anagram = Anagram()
def testCreationAnagram(self):
self.assert_(self.anagram)
def testSplitWord(self):
expect = ['a','b','c']
self.anagram.inputWord('abc')
self.anagram.splitWord()
self.assertEquals(expect, self.anagram.getSplitWordList())
def testSortWord(self):
expect = 'abc'
self.anagram.inputWord('cba')
self.anagram.splitWord()
self.anagram.sortWord()
self.assertEquals(expect, self.anagram.getSortWordString())
def testIsWordListInAnagramList(self):
expect1 = True
expect2 = False
self.anagram.inputWord('cba')
self.anagram.splitWord()
self.anagram.sortWord()
self.anagram.setAnagramList([['abc','cba']])
self.assertEquals(expect1, self.anagram.isWordListInAnagramList())
self.anagram.inputWord('zzz')
self.anagram.splitWord()
self.anagram.sortWord()
self.assertEquals(expect2, self.anagram.isWordListInAnagramList())
def testStoreWord(self):
expect = [['abc','cba']]
self.anagram.inputWord('cba')
self.anagram.process()
self.assertEquals(expect, self.anagram.getStoreWord())
def testAcceptence(self):
expect = [['abc','cba','bac'],['aabb','abab']]
self.anagram.inputWord('cba')
self.anagram.process()
self.anagram.inputWord('bac')
self.anagram.process()
self.anagram.inputWord('abab')
self.anagram.process()
self.assertEquals(expect, self.anagram.getStoreWord())
class Anagram:
def __init__(self):
self.anagramList = []
def inputWord(self, word):
self.wordString = word
def splitWord(self):
self.wordList = []
for i in range(len(self.wordString)):
self.wordList.append(self.wordString[i])
def sortWord(self):
self.wordList.sort()
def isWordListInAnagramList(self):
for i in range(len(self.anagramList)):
if self.anagramList[i][0] == self.getSortWordString():
self.index = i
return True
return False
def setAnagramList(self,anagramList):
self.anagramList = anagramList
def storeWord(self):
if self.isWordListInAnagramList() is True:
self.anagramList[self.index].append(self.wordString)
else:
self.anagramList.append([self.getSortWordString()])
self.anagramList[len(self.anagramList)-1].append(self.wordString)
def process(self):
self.splitWord()
self.sortWord()
self.storeWord()
def getSplitWordList(self):
return self.wordList
def getSortWordString(self):
tempString = ''
for i in range(len(self.wordList)):
tempString += self.wordList[i]
return tempString
def getStoreWord(self):
return self.anagramList
def printAnagramList(self):
for i in range(len(self.anagramList)):
for j in range(1,len(self.anagramList[i])):
print self.anagramList[i][j],
print
if __name__ == '__main__':
#unittest.main()
anagram = Anagram()
while str:
str = raw_input()
anagram.inputWord(str)
anagram.process()
anagram.printAnagramList()