package Ġcom . jetbrains . edu . learning . format Ċ Ċ import Ġcom . intellij . openapi . util . Pair Ċ import Ġcom . intellij . test Framework . Light Platform TestCase Ċ import Ġcom . intellij . util . containers . Container Util Ċ import Ġcom . jetbrains . edu . learning .* Ċ import Ġcom . jetbrains . edu . learning . course Format .* Ċ import Ġcom . jetbrains . edu . learning . course Format . tasks . E du Task Ċ import Ġcom . jetbrains . edu . learning . course Format . tasks . choice . Choice Option Status Ċ import Ġcom . jetbrains . edu . learning . course Format . tasks . choice . Choice Task Ċ Ċ class ĠCourse Format Test Ġ: ĠE du TestCase () Ġ{ ĊĠ Ġfun Ġtest Additional Materials Lesson () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse FromJson ĊĠĠĠ ĠassertNotNull ( course . additional Files ) ĊĠĠĠ ĠassertFalse ( course . additional Files . isEmpty ()) ĊĠĠĠ ĠassertEquals (" test _ helper . py ", Ġcourse . additional Files [ 0 ]. name ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Course With Section () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse FromJson ĊĠĠĠ Ġval Ġitems Ġ= Ġcourse . items ĊĠĠĠ ĠassertEquals ( 2 , Ġitems . size ) ĊĠĠĠ ĠassertTrue ( items [ 0 ] Ġis ĠSection ) ĊĠĠĠ ĠassertTrue ( items [ 1 ] Ġis ĠLess on ) ĊĠĠĠ ĠassertEquals ( 1 , Ġ( items [ 0 ] Ġas ĠSection ). lessons . size ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Framework Lesson () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse FromJson ĊĠĠĠ ĠassertEquals ( 1 , Ġcourse . items . size ) ĊĠĠĠ Ġval Ġlesson Ġ= Ġcourse . items [ 0 ] ĊĠĠĠ Ġcheck ( lesson Ġis ĠFramework Lesson ) ĊĠĠĠ ĠassertTrue ( lesson . is Template Based ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Non Template Based Framework Lesson () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse FromJson ĊĠĠĠ ĠassertEquals ( 1 , Ġcourse . items . size ) ĊĠĠĠ Ġval Ġlesson Ġ= Ġcourse . items [ 0 ] ĊĠĠĠ Ġcheck ( lesson Ġis ĠFramework Lesson ) ĊĠĠĠ ĠassertFalse ( lesson . is Template Based ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Py charm To E du Task () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse FromJson ĊĠĠĠ Ġval Ġless ons Ġ= Ġcourse . lessons ĊĠĠĠ ĠassertFalse (" No Ġless ons Ġfound ", Ġless ons . isEmpty ()) ĊĠĠĠ Ġval Ġlesson Ġ= Ġless ons [ 0 ] ĊĠĠĠ Ġval Ġtask List Ġ= Ġlesson . task List ĊĠĠĠ ĠassertFalse (" No Ġtasks Ġfound ", Ġtask List . isEmpty ()) ĊĠĠĠ ĠassertTrue ( task List [ 0 ] Ġis ĠE du Task ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Description () Ġ{ ĊĠĠĠ Ġval Ġedu Task Ġ= Ġfirst E du Task ĊĠĠĠ ĠassertEquals (" First Ġtask Ġdescription ", ĠE du Utils . get Task Text From Task ( project , Ġedu Task )) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Feedback Links () Ġ{ ĊĠĠĠ Ġval Ġedu Task Ġ= Ġfirst E du Task ĊĠĠĠ ĠassertEquals (" https :// www . jetbrains . com /", Ġedu Task . feedback Link ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Placeholder Text () Ġ{ ĊĠĠĠ Ġval Ġedu Task Ġ= Ġfirst E du Task ĊĠĠĠ Ġval Ġtask File Ġ= Ġedu Task . get Task File (" task . py ") ĊĠĠĠ Ġcheck ( task File Ġ!= Ġnull ) ĊĠĠĠ Ġval Ġanswer Place holders Ġ= Ġtask File . answer Place holders ĊĠĠĠ ĠassertEquals ( 1 , Ġanswer Place holders . size ) ĊĠĠĠ ĠassertEquals (" write Ġfunction Ġbody ", Ġanswer Place holders [ 0 ]. placeholder Text ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Possible Answer () Ġ{ ĊĠĠĠ Ġval Ġedu Task Ġ= Ġfirst E du Task ĊĠĠĠ Ġval Ġtask File Ġ= Ġedu Task . get Task File (" task . py ") ĊĠĠĠ Ġcheck ( task File Ġ!= Ġnull ) ĊĠĠĠ Ġval Ġanswer Place holders Ġ= Ġtask File . answer Place holders ĊĠĠĠ ĠassertEquals ( 1 , Ġanswer Place holders . size ) ĊĠĠĠ ĠassertEquals (" pass ", Ġanswer Place holders [ 0 ]. possible Answer ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Course Name () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse FromJson ĊĠĠĠ ĠassertEquals (" My ĠPython ĠCourse ", Ġcourse . name ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Course Programming Language () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse FromJson ĊĠĠĠ ĠassertEquals ( E du Names . PYTHON , Ġcourse . language ID ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Course Language () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse FromJson ĊĠĠĠ ĠassertEquals (" R ussian ", Ġcourse . human Language ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Course Description () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse FromJson ĊĠĠĠ ĠassertEquals (" Best Ġcourse Ġever ", Ġcourse . description ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Student Task Text () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse FromJson ĊĠĠĠ Ġval Ġless ons Ġ= Ġcourse . lessons ĊĠĠĠ ĠassertFalse (" No Ġless ons Ġfound ", Ġless ons . isEmpty ()) ĊĠĠĠ Ġval Ġlesson Ġ= Ġless ons [ 0 ] ĊĠĠĠ Ġval Ġtask List Ġ= Ġlesson . task List ĊĠĠĠ ĠassertFalse (" No Ġtasks Ġfound ", Ġtask List . isEmpty ()) ĊĠĠĠ Ġval Ġtask Ġ= Ġtask List [ 0 ] ĊĠĠĠ Ġval Ġtask File Ġ= Ġtask . get Task File (" my _ task . py ") ĊĠĠĠ ĠassertNotNull ( task File ) ĊĠĠĠ ĠassertEquals (" def Ġfoo (): \ n ĠĠĠ Ġwrite Ġfunction Ġbody \ n ", Ġtask File !!. text ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Choice Tasks () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse FromJson ĊĠĠĠ Ġval Ġtask Ġ= Ġcourse . lessons [ 0 ]. task List [ 0 ] ĊĠĠĠ Ġcheck ( task Ġis ĠChoice Task ) ĊĠĠĠ ĠassertTrue ( task . is Multiple Choice ) ĊĠĠĠ Ġval Ġchoice Options Ġ= Ġtask . choice Options ĊĠĠĠ Ġval Ġactual Choice Options Ġ= ĠContainer Util . new HashMap ( Container Util . map ( choice Options ) Ġ{ Ġit . text Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContainer Util . map ( choice Options ) Ġ{ Ġit . status Ġ}) ĊĠĠĠ ĠassertEquals ( Container Util . new HashMap ( Pair . create (" 1 ", ĠChoice Option Status . CORRECT ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair . create (" 2 ", ĠChoice Option Status . IN CORRECT )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactual Choice Options ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Course With Authors () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse FromJson ĊĠĠĠ ĠassertEquals ( Container Util . newArrayList (" E du Tools ĠDev ", Ġ" E du Tools ĠQA ", Ġ" E du Tools "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContainer Util . map ( course . authors ) Ġ{ Ġinfo : ĠUserInfo Ġ-> Ġinfo . get FullName () Ġ}) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Solutions Hidden In Course () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse FromJson ĊĠĠĠ ĠassertTrue ( course . solutions Hidden ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Solution Hidden In Task () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse FromJson ĊĠĠĠ Ġval Ġtask Ġ= Ġcourse . lessons [ 0 ]. task List [ 0 ] ĊĠĠĠ ĠassertTrue ( task . solution Hidden !! ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Local Course With Plugins () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse FromJson ĊĠĠĠ Ġval Ġplugin Dependencies Ġ= Ġcourse . plugin Dependencies ĊĠĠĠ Ġassert Size ( 1 , Ġplugin Dependencies ) ĊĊĠĠĠ Ġwith ( plugin Dependencies . first ()) Ġ{ ĊĠĠĠĠĠ ĠassertEquals (" test Plugin Id ", Ġstring Id ) ĊĠĠĠĠĠ ĠassertEquals (" 1 . 0 ", Ġmin Version ) ĊĠĠĠĠĠ ĠassertEquals ( null , Ġmax Version ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Course Language Version () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse Ġ{} ĊĠĠĠ Ġcourse . programming Language Ġ= Ġ" Python Ġ 3 " ĊĠĠĠ ĠassertEquals (" 3 ", Ġcourse . language Version ) ĊĠ Ġ} ĊĊĠ Ġfun Ġtest Course Language Version Empty () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse Ġ{} ĊĠĠĠ Ġcourse . programming Language Ġ= Ġ" Python " ĊĠĠĠ ĠassertNull ( course . language Version ) ĊĠ Ġ} ĊĊĊĠ Ġfun Ġtest Course Language Version Blank () Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġcourse Ġ{} ĊĠĠĠ Ġcourse . programming Language Ġ= Ġ" Python Ġ" ĊĠĠĠ ĠassertNull ( course . language Version ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġcourse FromJson : ĠCourse ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠ Ġval ĠfileName Ġ= Ġtest File ĊĠĠĠĠĠ Ġreturn Ġcreate Course FromJson ( testData Path Ġ+ ĠfileName , ĠCourse Mode . ST UD ENT ) ĊĠĠĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget TestData Path (): ĠString Ġ= Ġ"${ super . get TestData Path () }/ format /" ĊĊĠ Ġprivate Ġval Ġtest File : ĠString Ġget () Ġ= Ġ"${ getTest Name ( true )}. json " ĊĊĠ Ġprivate Ġval Ġfirst E du Task : ĠE du Task ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠ Ġval Ġcourse Ġ= Ġcourse FromJson ĊĠĠĠĠĠ Ġcourse . init ( false ) ĊĠĠĠĠĠ Ġcourse . create Course Files ( project , Ġmodule , ĠLight Platform TestCase . getSource Root (), ĠAny ()) ĊĠĠĠĠĠ Ġval Ġless ons Ġ= Ġcourse . lessons ĊĠĠĠĠĠ ĠassertFalse (" No Ġless ons Ġfound ", Ġless ons . isEmpty ()) ĊĠĠĠĠĠ Ġval Ġlesson Ġ= Ġless ons [ 0 ] ĊĠĠĠĠĠ Ġval Ġtask List Ġ= Ġlesson . task List ĊĠĠĠĠĠ ĠassertFalse (" No Ġtasks Ġfound ", Ġtask List . isEmpty ()) ĊĠĠĠĠĠ Ġval Ġtask Ġ= Ġtask List [ 0 ] ĊĠĠĠĠĠ Ġcheck ( task Ġis ĠE du Task ) ĊĠĠĠĠĠ Ġreturn Ġtask ĊĠĠĠ Ġ} Ċ }