def testRecursiveFunc(self): self.assertEqual( Run(''' 【阶乘】(那啥)哪能组: 轧苗头:那啥比一推板? 要来赛就再会一。 再会那啥乘白相【阶乘】(那啥减一)。 组好了。 嘎讪胡:白相【阶乘】(五)。 '''), '120\n')
def testRunConditional(self): self.assertEqual(Run('轧苗头:5比2老卵?要来赛就嘎讪胡:“OK”。'), 'OK\n') self.assertEqual(Run('轧苗头:5比2老卵?要来赛就一道组特:\n' '组好了。'), '') self.assertEqual( Run('轧苗头:5比2老卵?\n' '要来赛就一道组特:\n' ' 嘎讪胡:5。\n' '组好了。'), '5\n') self.assertEqual(Run('轧苗头:5比6老卵?要来赛就嘎讪胡:“OK”。\n' '勿来赛就嘎讪胡:“不OK”。'), '不OK\n') self.assertEqual( Run('轧苗头:5比6老卵?\n' '要来赛就嘎讪胡:“OK”。\n' '勿来赛就一道组特:\n' ' 嘎讪胡:“不OK”。\n' ' 嘎讪胡:“还是不OK”。\n' '组好了。'), '不OK\n还是不OK\n') # Else should match the last If. self.assertEqual( Run(''' 轧苗头:2比1老卵? # condition 1: True 要来赛就轧苗头:2比3老卵? # condition 2: False 要来赛就嘎讪胡:“A”。 # for condition 2 勿来赛就嘎讪胡:“B”。# for condition 2 '''), 'B\n')
def testCompound(self): self.assertEqual(Run('一道组特:组好了。'), '') self.assertEqual(Run('一道组特:嘎讪胡:1。组好了。'), '1\n') self.assertEqual(Run('一道组特:嘎讪胡:1。嘎讪胡:2。组好了。'), '1\n2\n')
def testConcat(self): self.assertEqual(Run('嘎讪胡:“牛”、二。'), '牛2\n') self.assertEqual(Run('嘎讪胡:“阿庆”、665加一。'), '阿庆666\n')
def testIntegerLiteral(self): self.assertEqual(Run('嘎讪胡:零。'), '0\n') self.assertEqual(Run('嘎讪胡:一。'), '1\n') self.assertEqual(Run('嘎讪胡:二。'), '2\n') self.assertEqual(Run('嘎讪胡:两。'), '2\n') self.assertEqual(Run('嘎讪胡:良。'), '2\n') self.assertEqual(Run('嘎讪胡:三。'), '3\n') self.assertEqual(Run('嘎讪胡:赛。'), '3\n') self.assertEqual(Run('嘎讪胡:四。'), '4\n') self.assertEqual(Run('嘎讪胡:五。'), '5\n') self.assertEqual(Run('嘎讪胡:六。'), '6\n') self.assertEqual(Run('嘎讪胡:七。'), '7\n') self.assertEqual(Run('嘎讪胡:八。'), '8\n') self.assertEqual(Run('嘎讪胡:九。'), '9\n') self.assertEqual(Run('嘎讪胡:十。'), '10\n')
def testDelete(self): self.assertEqual(Run('阿庆是则赤佬。阿庆毛估估是二。色特阿庆!嘎讪胡:阿庆。'), '脑子瓦特了\n')
def testRunHelloWorld(self): self.assertEqual(Run('嘎讪胡:“申花老卵!”。'), '申花老卵!\n')
def testFuncCallWithParam(self): self.assertEqual(Run('【加一】(那啥)哪能组:嘎讪胡:那啥加一。组好了。\n' '白相【加一】(五)。'), '6\n')
def testLoop(self): self.assertEqual(Run('阿德从1到3搞七捻三:嘎讪胡:阿德。搞好了。'), '1\n2\n3\n')
def testDecrements(self): self.assertEqual(Run('阿德是则赤佬。阿德毛估估是二。阿德混腔势。嘎讪胡:阿德。'), '1\n') self.assertEqual(Run('阿德是则赤佬。阿德毛估估是三。阿德混五趟。嘎讪胡:阿德。'), '-2\n')
def testIncrements(self): self.assertEqual(Run('阿德是则赤佬。阿德毛估估是二。阿德扎台型。嘎讪胡:阿德。'), '3\n') self.assertEqual(Run('阿德是则赤佬。阿德毛估估是三。阿德扎五趟。嘎讪胡:阿德。'), '8\n')
def testVarAssignmentFromVar(self): self.assertEqual( Run('阿德是则赤佬。\n阿庆是则赤佬。\n' '阿德毛估估是250。\n阿庆毛估估是阿德。\n嘎讪胡:阿庆。'), '250\n')
def testVarAssignment(self): self.assertEqual(Run('阿德是则赤佬。\n阿德毛估估是250。\n嘎讪胡:阿德。'), '250\n')
def testVarDecl(self): self.assertEqual(Run('阿德是则赤佬。'), '')
def testRunHelloWorld2(self): self.assertEqual(Run('嘎讪胡:“上港老卵!”。'), '上港老卵!\n')
def testLoopWithNoStatement(self): self.assertEqual(Run('阿德从1到2搞七捻三:搞好了。'), '')
def testRunFunc(self): self.assertEqual(Run('埋汰哪能组:嘎讪胡:“侬是小瘪三”。组好了。'), '') self.assertEqual(Run('埋汰哪能组:嘎讪胡:“侬是小瘪三”。组好了。白相埋汰。'), '侬是小瘪三\n')
def testLoopWithMultipleStatements(self): self.assertEqual(Run('阿德从1到2搞七捻三:嘎讪胡:阿德。嘎讪胡:阿德加一。搞好了。'), '1\n2\n2\n3\n')
def testFuncWithReturnValue(self): self.assertEqual(Run('【加一】(那啥)哪能组:再会那啥加一。组好了。\n' '嘎讪胡:白相【加一】(二)。'), '3\n')
def testPrintBool(self): self.assertEqual(Run('阿庆是则赤佬。嘎讪胡:阿庆。嘎讪胡:阿庆脑子瓦特了。'), '脑子瓦特了\n对额\n') self.assertEqual(Run('嘎讪胡:五比二老卵。'), '对额\n') self.assertEqual(Run('嘎讪胡:五比二老卵、五比二推板、一帮2一色一样、1帮二伐大一样。'), '对额勿对勿对对额\n')
def testNormalizingBang(self): self.assertEqual(Run('【加一】(那啥)哪能组:嘎讪胡:那啥加一!组好了!\n' '白相【加一】(五)!'), '6\n')
def testRunEmptyProgram(self): self.assertEqual(Run(''), '')