From 6a96943f1df866ad5ef54dd5c6bfb9b07b716ab9 Mon Sep 17 00:00:00 2001 From: prathamesh Date: Tue, 23 Jun 2020 10:40:52 +0530 Subject: [PATCH] Help moderator create test cases easily for Java Java assert statement is used to create the test case. --- yaksh/evaluator_tests/test_java_evaluation.py | 139 ++---------------- yaksh/fixtures/demo_questions.zip | Bin 9957 -> 2539 bytes yaksh/java_code_evaluator.py | 18 ++- 3 files changed, 26 insertions(+), 131 deletions(-) diff --git a/yaksh/evaluator_tests/test_java_evaluation.py b/yaksh/evaluator_tests/test_java_evaluation.py index eb09f2f15..5779cc5c6 100644 --- a/yaksh/evaluator_tests/test_java_evaluation.py +++ b/yaksh/evaluator_tests/test_java_evaluation.py @@ -20,43 +20,8 @@ def setUp(self): f.write('2'.encode('ascii')) tmp_in_dir_path = tempfile.mkdtemp() self.tc_data = dedent(""" - class main - { - public static void check(E expect, E result) - { - if(result.equals(expect)) - { - System.out.println("Correct:Output expected "+expect+ - "and got "+result); - } - else - { - System.out.println("Incorrect:Output expected "+expect+ - "but got "+result); - System.exit(1); - } - } - public static void main(String arg[]) - { - Test t = new Test(); - int result, input, output; - input = 0; output = 0; - result = t.square_num(input); - System.out.println("Input submitted to the function: "+ - input); - check(output, result); - input = 5; output = 25; - result = t.square_num(input); - System.out.println("Input submitted to the function: "+ - input); - check(output, result); - input = 6; output = 36; - result = t.square_num(input); - System.out.println("Input submitted to the function: "+ - input); - check(output, result); - } - } + Test t = new Test(); + assert t.square_num(5) == 25: "Square of 5 is not 25"; """) self.test_case_data = [ @@ -172,33 +137,12 @@ def test_file_based_assert(self): # Given self.file_paths = [(self.f_path, False)] self.tc_data = dedent(""" - class main - { - public static void check(E expect, E result) - { - if(result.equals(expect)) - { - System.out.println("Correct:Output expected "+expect+ - " and got "+result); - } - else - { - System.out.println("Incorrect:Output expected "+expect+ - " but got "+result); - System.exit(1); - } - } - public static void main(String arg[]) - { - String result = ""; - Test t = new Test(); - try{ - result = t.readFile();} - catch(Exception e){ + Test t = new Test(); + try{ + String a = t.readFile(); + assert a.equals("2"); + } catch(Exception e) { System.out.print(e); - } - check("2", result); - } } """) self.test_case_data = [ @@ -237,40 +181,14 @@ class Test{ # When grader = Grader(self.in_dir) result = grader.evaluate(kwargs) - # Then self.assertTrue(result.get("success")) def test_incorrect_testcase(self): # Given self.tc_data = dedent(""" - class main - { - public static void check(E expect, E result) - { - if(result.equals(expect)) - { - System.out.println("Correct:Output expected "+expect+ - "and got "+result); - } - else - { - System.out.println("Incorrect:Output expected "+expect+ - "but got "+result); - System.exit(1); - } - } - public static void main(String arg[]) - { - Test t = new Test(); - int result, input, output; - input = 0; output = 0; - result = t.square_num(input); - System.out.println("Input submitted to the function: "+ - input); - check(output, result) - } - } + Test t = new Test() + result = t.square_num(5) == 25; """) user_answer = ("class Test {\n\tint square_num(int a) " "{\n\treturn a;\n\t}\n}") @@ -701,43 +619,8 @@ def test_assert_with_hook(self): user_answer = ("class Test {\n\tint square_num(int a)" " {\n\treturn a*a;\n\t}\n}") assert_test_case = dedent(""" - class main - { - public static void check(E expect, E result) - { - if(result.equals(expect)) - { - System.out.println("Correct:Output expected "+expect+ - " and got "+result); - } - else - { - System.out.println("Incorrect:Output expected "+expect+ - " but got "+result); - System.exit(1); - } - } - public static void main(String arg[]) - { - Test t = new Test(); - int result, input, output; - input = 0; output = 0; - result = t.square_num(input); - System.out.println("Input submitted to the function: "+ - input); - check(output, result); - input = 5; output = 25; - result = t.square_num(input); - System.out.println("Input submitted to the function: "+ - input); - check(output, result); - input = 6; output = 36; - result = t.square_num(input); - System.out.println("Input submitted to the function: "+ - input); - check(output, result); - } - } + Test t = new Test(); + assert t.square_num(6) == 36; """) hook_code = dedent("""\ diff --git a/yaksh/fixtures/demo_questions.zip b/yaksh/fixtures/demo_questions.zip index 6b0f8526c0d223d667043437a1b378467d5d0d3f..b35499134f7a47077d0bb34098c632b553b39f96 100644 GIT binary patch literal 2539 zcmZ|RS5(sp76$M?gcho_3>}d&G#PND84y7_Djh=aXy`}?B}i460YMl#sBus*^v=)& z2@q;Rkp!ey=|xI#D6X^nwrBU;^WE>h-1ncE35bpd001VS!ir+n=%6k13m5=ABmjUL z5CVcjy+RQ1z<>}J&rts$g$Or)KWi&60Afu$bY}UH&~O%jhHe7{0RLXQcK#tVeVkWm zF1235nJ*2EC7_$EdbKMOl+? zh4I#n@0y>l-$$iHV?}wra+IDyVek*JrgL;|IJH^TE|J z&+;u~v@h9MAN-5^&8Om7#~kxMZsC~=R>P~uR>Q8P4bSSV;AJX0Rk2t({+kT;fA36_ z6d9Uh(YXb^`)gPO(fL2zSvM5_iZ!xNwFR7ONDfgvA1JEME=KQNp4sjPlTrqF||Kv z&Mxa$e>#&d4Rm_dhRiZwU$02*BCRkDh_W8h#7btaao<)KhawIzi6?sOVfiWs>oG|Y z7+6XgUoGy=KKT5UpDjRV2EtHkLsi`^5Ua)&n5h%nAgR_kIDXT8{giGN5!sseFddKh z^YO8sE+T__@X>a)knLZcLZO?}rKs@!b@n3-=cBW-CSk1h`QjwaM62?-{5Dt~I6p)w zHmFu-zhA7o_8bH0C=rS%NdKVeHxXj7E%GruP|RZ0E9g{( zUVCDyp{3#uv%gGBn8v-jKaOut>3@ASn`Ms^w326fe3G1es~5=;&Yt_>mYLyu)uP3o zV)vuO_F^4ag>}AE%_6z&PvpLj19qLuk~AckvnGR{nnBSW&5>eOR7t)B%W){+fUpPb0m*C|%b0*~`lmzDA4 zk?UqIpr|crmcn~}*z_Vro*`$IJ@>PASxzK+TJG~x9pHefGuPZ!g)ZG&#^SygwiXB} zNT{kqKyQaDCBpuWXKErjIn+zmp!=eID3YH|;aau?p}U+uaeq-;FF18w?`fwk(Appi zS4OV`8&%dpZx|_J9ZXfW-HlPt@A(#2t*@q>a3%B4l#Jxdt2l-kBf?_l-Zc9kR?h|C zO|}I2o-!2C7=ZMx^IKgkf0As4o8J@dw2@tVa5@U*=3J4X6=pR_-_=sxXt+ouNXl0E z(2vg)fb}VpuZetn8#K9AX@W1el8C9>*&|v%Yb|-&1TLN|U-?nvXPx>_FZNl-Jl=7A zGKR=!DSY{q_zr73KB=W!GvcxMmCtQ_)*4=sX`y^fZYouCwf47?90A1UeJ@S2VT~;u z7Jh)mO!q>Wg+nO2J>%`LB~+cO9FK`C$bYE#p&xCzsX*j0M!`=LEE*15P;2XEX=|Fi z-jd?65j={f@{{JbIw+1oQzHW@96Y5YGq`*?Bbvq0baN;<)nrRLdw$_y<#+p>Y1)(_ zLb87QN9PAec22h%bQbeZPSbZ|2Weju70R!6QHi@E!ra;0OXEBVLCGyP1Cy+|k4!Hc zU8c@7Mjl&>VRE9XS&`wBMKUDsdm@F>+i+jx2wcwgd7iG<^pi|Sv-I?zD7X2Q8>DuW z!E>?gRH&?HUhVVt``Q&P`X}C3n4>Bl0eXvYN}57sHlCia`~@~n6njLka@dfvyY9ql zwuZ`plo@Qa$aSQ$NtTjS%T65&=l>8i*ea%dn8X|7tC$lcU`o&y@O8{ga;SM{3P zRNedSS;fAZgv(USryYy07vh4?=3a1S-7kHX0rmdNmqYhcP!KH3%hl)HH9Bgq{~jJ+^JKCK<+#I^>IE|03AzP}|qKFKUr&6^cmM1H3qup{oOEU_S>PK>nHN=d$gA@VM8xY z5lCOMHF+;-4OfBg7VIUIpJ${kHXA^)7z@nsKb4X@N+|r3(L&NjeacxT^y1jK_-x8MMG^N z0Zi95amg35d*G=Xk#dI;ynS(GDzFDWtiY)WarW2W99-InR{TzI+qyxBtmoy7>8O@! zjA${`V?}x=;->fCUbbv>a5$=EcRaxGc%!Q_~(V@$JqVos2`*QfPVqTvg;cF literal 9957 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 Rn?AtrKCb`7i)`1f{T~RdA$