|
1
|
|
|
import unittest |
|
2
|
|
|
|
|
3
|
|
|
from brackets import checkio |
|
4
|
|
|
|
|
5
|
|
|
|
|
6
|
|
|
class Tests(unittest.TestCase): |
|
7
|
|
|
TESTS = { |
|
8
|
|
|
"1. Basics": [ |
|
9
|
|
|
{"input": "((5+3)*2+1)", "answer": True}, |
|
10
|
|
|
{"input": "{[(3+1)+2]+}", "answer": True}, |
|
11
|
|
|
{"input": "(3+{1-1)}", "answer": False}, |
|
12
|
|
|
{"input": "[1+1]+(2*2)-{3/3}", "answer": True}, |
|
13
|
|
|
{"input": "(({[(((1)-2)+3)-3]/3}-3)", "answer": False}, |
|
14
|
|
|
{"input": "[(3)+(-1)]*{3}", "answer": True}, |
|
15
|
|
|
{"input": "(((([[[{{{3}}}]]]]))))", "answer": False}, |
|
16
|
|
|
{"input": "[1+202]*3*({4+3)}", "answer": False}, |
|
17
|
|
|
{"input": "({[3]})-[4/(3*{1001-1000}*3)/4]", "answer": True}, |
|
18
|
|
|
{"input": "[[[1+[1+1]]])", "answer": False}, |
|
19
|
|
|
{"input": "(((1+(1+1))))]", "answer": False}, |
|
20
|
|
|
{"input": "2+3", "answer": True}, |
|
21
|
|
|
], |
|
22
|
|
|
"2. Extra": [ |
|
23
|
|
|
{"input": "[[5+3]*2+1]", "answer": True}, |
|
24
|
|
|
{"input": "{([3+1]+2)+}", "answer": True}, |
|
25
|
|
|
{"input": "[3+{1-1]}", "answer": False}, |
|
26
|
|
|
{"input": "(1+1)+[2*2]-{3/3}", "answer": True}, |
|
27
|
|
|
{"input": "[[{([[[1]-2]+3]-3)/3}-3]", "answer": False}, |
|
28
|
|
|
{"input": "([3]+[-1])*{3}", "answer": True}, |
|
29
|
|
|
{"input": "[[[[((({{{3}}}))))]]]]", "answer": False}, |
|
30
|
|
|
{"input": "(1+202)*3*[{4+3]}", "answer": False}, |
|
31
|
|
|
{"input": "[{(3)}]-(4/[3*{1001-1000}*3]/4)", "answer": True}, |
|
32
|
|
|
{"input": "(((1+(1+1))))]", "answer": False}, |
|
33
|
|
|
], |
|
34
|
|
|
"3. Edge": [ |
|
35
|
|
|
{"input": "1", "answer": True}, |
|
36
|
|
|
{"input": "()", "answer": True}, |
|
37
|
|
|
{"input": "{", "answer": False}, |
|
38
|
|
|
{"input": "]", "answer": False}, |
|
39
|
|
|
{ |
|
40
|
|
|
"input": '([{([{(({{{([{[[[{[([((([(({[[[[(([{([[{[[{{({[([([[{((([{{{[{[[([(({((({[((({(([({{{[([({([[{({{[[{[[([[{([{[([([([(([(([({((({(((((({[({([[{[{[([({[[({[[([[[[{{(([{{[{[{{[{[{{[[((((([{[[{({([[[[[({((({{[[{[[[[[({(([[{[{[[{{[{[{([([{{{{{{{((([[{{((({[[[[[([(((({{({{[([[[(({{{([[{{{([[{([({[({[({(([[([{[[[(([[{[{{{{({[[[{[{{([{({[({{({([((([(([{({(({[[([([([{{[([{[[{([({[{({[[(([((({(([[({{({[{({{{[{({{({[({{{{(([{(([(({({[{{[({[({([[[[(([[{(([{[{({(((([[[(([([{[{{(((([[{({{([[{(((((({[[{{(({([[]])}))}}]]}))))))}]])}})}]]))))}}]}])]))]]]))))})}]}]))}]]))]]]])})]})]}}]})}))]))}]))}}}})]})}})}]}}})}]})}})]]))})))]))]]})}]})])}]]}])]}}])])])]]}))})}]))])))])})}})]})}])}}]}]]]})}}}}]}]]))]]]}])]]))})]})]})])}]])}}}]])}}}))]]])]}})}}))))])]]]]]})))}}]])))}}}}}}}])])}]}]}}]]}]}]]))})]]]]]}]]}})))})]]]]])})}]]}])))))]]}}]}]}}]}]}}]))}}]]]])]]})]]})])]}]}]])})]}))))))})))})]))]))])])])]}])}]])]]}]]}})}]])})])]}}})]))})))]})))}))])]]}]}}}])))}]])])]})}}]]}]])}]))]]]]}))])))])]}]]]}])}}}))}])}])', |
|
41
|
|
|
"answer": True, |
|
42
|
|
|
}, |
|
43
|
|
|
{ |
|
44
|
|
|
"input": '(][}])[((])}(])}[]{][)]{[)}){{}][]](}([[)})())){{()[]{({]]}{)([)[[])])([[[[](])][{[]]{[]({([{{()}(}[(({}(](]][}}(()]{)][]([)(}}[}(]}}({}][{{][([[{{]((}{{[{][][([}}]}}[({)[]{({(][[}{})}[{][})[(]})[}}{)[}}]]{{[{)}]{(])(}}{)([}]}})}[}}}{]([{[[)}([(}}[]{}]{{{[}}}({[{()}}([]{))[{((}}}{{(}{{[]{){)[}[(]){}]]{)[][}))[}}((][)]])[))(}{]()({([(]{]((([()][}]}))[([)({)()}[{[](]}[{[[[[)}{}][)]})]](})}}[}(}{{[)(}[)(){(({(([}()}}}){])]{}[{{({[][[[(}()((]}(]]}){({(}[)))}](}(][}]]])}}}([)([][[({[{{([)][]((]}][[[[}{[}(}(([[}}}{(]}()[)[}][{([(){)}}([](}({{][(}[[}}}[}{])[]{[(]}}]{{[{](]}})()}{[){}}{({){[)][}([){)]}({{){{[){)[(]))}})}}}{[[[())((}(]}[[)})[)](](})){))]()]}[])})}]]]([({({)([{(}{))})}(){(){{{{(]]]]][]}[[][({]({}]}){)([]][[]{](][{}[})]([])()])[{)][](}))[{[{[(}{([[{[)}(]((]]}{[]}{(}]]][)})}){}[[[((){{}})[)({[]}{[}(}]][]([}[[]]{])]]){[(}}()))]())[()})[}])](}]([[[((]()()])({[){{((()]{(}(}]])}{)[][)})})}]()})]({[}]{])()[{}}{{)()([]{)){)(()[)(){}][[(][))]]}][]]{]]{}()]]}]}}}[{])])]{}({{(][{({}{{]){}[', |
|
45
|
|
|
"answer": False, |
|
46
|
|
|
}, |
|
47
|
|
|
{ |
|
48
|
|
|
"input": '{*08/)348+124[7{)7{/[){5[}506(}*178][]/-{71)]7[19{05{-{*)}7(5+2)54]43-*2+(*74]{44}){52{/{0]88{(})9}90}}50[)(*41{{8+)-/38/5/*({0(-28*21/8{+{*9*22-/269+44-[/)298043{40]75/-1[4[26(/4]3-{71-]{554}65*6{20558*6{*/32)-{6++*/92]+623{1-59+/749291)161)(((-21-+++[0138)3*3+]+3{[4)952})124/3]9/)]/2+})(-964*{(]{[{5+-927446}*6]-6883/+463[145705++-{21]5708*0+17/+304-001+5+*8(133[3(0+68]])1[795))})01/8*624[02}[82}14/87357(+5}2)}]}2-988*78{{}28/{]-/{9]491][/602)[7871*54({403{}1][19*2)939[/16]865}}8(+}212+8471+5)65/6(*{{/]]8515+)/4+783-37]0}*57)(8+-12[]21}82]+}3[[28-01899[8[8*53{})0*)(/3(9(737{7/++]{{505--2/+5](]4-4[26/9][45565[{9])2[886[{[(+939}-(6+08/02)652-9}/6{-0{0]1]2*/1873()074[-86/}(1+*)+)*[8/4719997*+9129[6]6(1+))55-{(]4+{([-}2*[9-(}14(*/)11[26903*6*75-]51}67935+(269*21-+(+3/067{][7}4}6**2-46039)0}900+([87]0]714)563+5)-48)+}{[6+(([505/5-7-10*]/1-9838962[97*8)282*[*{*({{]5169]-46+9{])1[{58{[+6{]+2[693/{1]8(62*{((8]]7)8452*[41173**)]}/)93/0518{26-)94{/80+34//[21*63+282/88]79}*8}34)/81(81+-3+*(71]7}', |
|
49
|
|
|
"answer": False, |
|
50
|
|
|
}, |
|
51
|
|
|
{ |
|
52
|
|
|
"input": '{9489{({9901075((72[91843{(2(613304[3260038(5{69((6976195771088[96(504697615(8971202732380474(7108845[6(3{91{22(46794011863{(477615121{817528[7(7[7614((9(92625(5({37(64624979[((140899646[860{9[{([3{[21([0840828({44848{248945{{(092(0971[68[5711{81[(59773{02[1067160843139[[9390[582[4[153[55895206(777785[051215090[4890[9061(9(583043{46657[552{(9{157(78542{4768803547022{068512{6(694063675459{4[[65828(0492{6(212{((3[477[88809(5696871{9(0{{916{97850{2[200{50((805{184171[[1734546[[7(83344521338[69(49(77)94)96]83312544338)7]]6454371]]171481}508))05}002]2}05879}619}}0)9}1786965)90888]774]3))}212)6}2940)82856]]4}954576360496)6}215860}2207453088674}24587)751}9)}255]75664}340385)9)1609]0984]090512150]587777)60259855]351]4]285]0939]]9313480617601]20}37795)]18}1175]86]1790)290)}}549842}84844})8280480])12]}3])}]9}068]646998041))]97942646)73})5)52629)9))4167]7)7]825718}121516774)}36811049764)22}19}3)6]5488017)4740832372021798)516796405)69]8801775916796))96}5)8300623]403316)2)}34819]27))5701099})}9849}', |
|
53
|
|
|
"answer": True, |
|
54
|
|
|
}, |
|
55
|
|
|
{ |
|
56
|
|
|
"input": '[{(26605888+958*-6179/21820/1688-*4153*-4929173++*67152+*28/0-/5-6+25--6/8*8-36019+*7*035022*14--3*53/5229521/741+42924+3891/551-627+12+4/9047*198468364*854*1687-2/0+11/5840*039775-3/779243-/14584*-25+5/-6376/+0424-2+9/95657+8220769765-6783532511*28+61-+905-1435*-/6395/40619/100-0285*13//4+7+44-64687*+5+2935057+32+9+0+8816-/-28*0+7807/70+790732619737-59//23-7*3*321/7334+04+1*8/02282+/46*-7/--576070/29-0/*748+*//*827426/6/*9+31*56332355/76//27/8/34972/-4*/401+*4488368-*98/459+3176575/110**755-6+6420)}]', |
|
57
|
|
|
"answer": True, |
|
58
|
|
|
}, |
|
59
|
|
|
{"input": '{(})({)}', "answer": False}, |
|
60
|
|
|
], |
|
61
|
|
|
} |
|
62
|
|
|
|
|
63
|
|
|
def test_Basics(self): |
|
64
|
|
|
for i in self.TESTS['1. Basics']: |
|
65
|
|
|
assert checkio(i['input']) == i['answer'], i['input'] |
|
66
|
|
|
|
|
67
|
|
|
def test_Extra(self): |
|
68
|
|
|
for i in self.TESTS['2. Extra']: |
|
69
|
|
|
assert checkio(i['input']) == i['answer'], i['input'] |
|
70
|
|
|
|
|
71
|
|
|
def test_Edge(self): |
|
72
|
|
|
for i in self.TESTS['3. Edge']: |
|
73
|
|
|
assert checkio(i['input']) == i['answer'], i['input'] |
|
74
|
|
|
|
|
75
|
|
|
|
|
76
|
|
|
if __name__ == "__main__": # pragma: no cover |
|
77
|
|
|
unittest.main() |
|
78
|
|
|
|