package Ġcom . jetbrains . edu . slow . integration . co def or ces Ċ Ċ import Ġcom . jetbrains . edu . learning . E du Names Ċ import Ġcom . jetbrains . edu . learning . Err Ċ import Ġcom . jetbrains . edu . learning . Ok Ċ import Ġcom . jetbrains . edu . learning . co def or ces . Code forces Names Ċ import Ġcom . jetbrains . edu . learning . co def or ces . Code forces Names . TEST _ DATA _ FOLDER Ċ import Ġcom . jetbrains . edu . learning . co def or ces . Code forces TestCase Ċ import Ġcom . jetbrains . edu . learning . co def or ces . Cont est Parameters Ċ import Ġcom . jetbrains . edu . learning . co def or ces . actions . Start Code forces Cont est Action Ċ import Ġcom . jetbrains . edu . learning . co def or ces . api . Code forces Connector Ċ import Ġcom . jetbrains . edu . learning . co def or ces . api . Mock Code forces Connector Ċ import Ġcom . jetbrains . edu . learning . co def or ces . course Format . Code forces Course Ċ import Ġcom . jetbrains . edu . learning . co def or ces . course Format . Code forces Task Ċ import Ġcom . jetbrains . edu . learning . co def or ces . course Format . Code forces Task . Companion . co def or ces Submit Link Ċ Ċ class ĠCode forces Loading Test Ġ: ĠCode forces TestCase () Ġ{ ĊĠ Ġoverride Ġfun ĠsetUp () Ġ{ ĊĠĠĠ Ġsuper . setUp () ĊĠĠĠ Ġval Ġmock Code forces Connector Ġ= ĠCode forces Connector . getInstance () Ġas ĠMock Code forces Connector ĊĠĠĠ Ġmock Code forces Connector . set BaseUrl ( Code forces Names . CODE FOR CES _ URL , Ġtest Root Disposable ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġcontest Kotlin Hero es Episode 1 : ĠCode forces Course Ġby Ġlazy Ġ{ ĊĠĠĠ Ġval Ġcontest Info Ġ= ĠCont est Parameters ( 1 1 7 0 , ĠE du Names . K OT LIN , Ġcode forces Language Representation Ġ= Ġ" Kotlin ") ĊĠĠĠ Ġwhen Ġ( val Ġcontest Ġ= ĠStart Code forces Cont est Action . get Cont est Under Progress ( contest Info )) Ġ{ ĊĠĠĠĠĠ Ġis ĠErr Ġ-> Ġerror ( contest . error ) ĊĠĠĠĠĠ Ġis ĠOk Ġ-> Ġcontest . value ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġcontest Kotlin Hero es Pract ice 6 : ĠCode forces Course Ġby Ġlazy Ġ{ ĊĠĠĠ Ġval Ġcontest Info Ġ= ĠCont est Parameters ( 1 4 8 9 , ĠE du Names . K OT LIN , Ġcode forces Language Representation Ġ= Ġ" Kotlin ") ĊĠĠĠ Ġwhen Ġ( val Ġcontest Ġ= ĠStart Code forces Cont est Action . get Cont est Under Progress ( contest Info )) Ġ{ ĊĠĠĠĠĠ Ġis ĠErr Ġ-> Ġerror ( contest . error ) ĊĠĠĠĠĠ Ġis ĠOk Ġ-> Ġcontest . value ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġcode forces Round 6 0 5 Div 3 : ĠCode forces Course Ġby Ġlazy Ġ{ ĊĠĠĠ Ġval Ġcontest Info Ġ= ĠCont est Parameters ( 1 2 7 2 , ĠE du Names . JAVA , Ġcode forces Language Representation Ġ= Ġ" Java ") ĊĠĠĠ Ġwhen Ġ( val Ġcontest Ġ= ĠStart Code forces Cont est Action . get Cont est Under Progress ( contest Info )) Ġ{ ĊĠĠĠĠĠ Ġis ĠErr Ġ-> Ġerror ( contest . error ) ĊĠĠĠĠĠ Ġis ĠOk Ġ-> Ġcontest . value ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcode forces Ġcontest ĠKotlin ĠHero es ĠEp isode Ġ 1 `() Ġ{ ĊĠĠĠ Ġval Ġcontest Ġ= Ġcontest Kotlin Hero es Episode 1 ĊĊĠĠĠ ĠassertEquals ( 1 1 7 0 , Ġcontest . id ) ĊĠĠĠ ĠassertEquals (" en ", Ġcontest . language Code ) ĊĠĠĠ ĠassertEquals (" Kotlin ĠHero es : ĠEp isode Ġ 1 ", Ġcontest . name ) ĊĠĠĠ ĠassertEquals (" https :// co def or ces . com / contest / 1 1 7 0 ", Ġcontest . get Cont est Url ()) ĊĠĠĠ ĠassertEquals (""" ĊĠĠĠĠĠ ĠA . ĠThree ĠIn te gers ĠAgain ĊĠĠĠĠĠ ĠB . ĠBad ĠDays ĊĠĠĠĠĠ ĠC . ĠMin us Ġand ĠMin us ĠGive ĠPlus ĊĠĠĠĠĠ ĠD . ĠDe coding Ġof ĠInteger ĠSe quences ĊĠĠĠĠĠ ĠE . ĠSl iding ĠDo ors ĊĠĠĠĠĠ ĠF . ĠW heel s ĊĠĠĠĠĠ ĠG . ĠGraph ĠDe composition ĊĠĠĠĠĠ ĠH . ĠL on gest ĠS aw ĊĠĠĠĠĠ ĠI . ĠGood ĠSub sets ĊĠĠĠ Ġ""" . trim Indent (), Ġcontest . description ) ĊĊĠĠĠ ĠassertEquals ( 1 , Ġcontest . lessons . size ) ĊĠĠĠ Ġval Ġtasks Ġ= Ġcontest . lessons . first (). task List ĊĠĠĠ ĠassertEquals ( 9 , Ġtasks . size ) ĊĊĠĠĠ ĠassertEquals (" A . ĠThree ĠIn te gers ĠAgain ", Ġtasks [ 0 ]. name ) ĊĠĠĠ ĠassertEquals (" B . ĠBad ĠDays ", Ġtasks [ 1 ]. name ) ĊĠĠĠ ĠassertEquals (" C . ĠMin us Ġand ĠMin us ĠGive ĠPlus ", Ġtasks [ 2 ]. name ) ĊĠĠĠ ĠassertEquals (" D . ĠDe coding Ġof ĠInteger ĠSe quences ", Ġtasks [ 3 ]. name ) ĊĠĠĠ ĠassertEquals (" E . ĠSl iding ĠDo ors ", Ġtasks [ 4 ]. name ) ĊĠĠĠ ĠassertEquals (" F . ĠW heel s ", Ġtasks [ 5 ]. name ) ĊĠĠĠ ĠassertEquals (" G . ĠGraph ĠDe composition ", Ġtasks [ 6 ]. name ) ĊĠĠĠ ĠassertEquals (" H . ĠL on gest ĠS aw ", Ġtasks [ 7 ]. name ) ĊĠĠĠ ĠassertEquals (" I . ĠGood ĠSub sets ", Ġtasks [ 8 ]. name ) ĊĊĠĠĠ ĠassertEquals (" https :// co def or ces . com / contest / 1 1 7 0 / problem / H ? locale = en ", Ġtasks [ 7 ]. feedback Link ) ĊĠĠĠ ĠassertEquals (" https :// co def or ces . com / contest / 1 1 7 0 / submit ? locale = en & program TypeId = 4 8 & submitted Problem Index = H ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode forces Submit Link ( tasks [ 7 ])) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcode forces Ġcontest ĠKotlin ĠHero es ĠEp isode Ġ 1 Ġtask ĠA `() Ġ{ ĊĠĠĠ Ġval Ġcontest Ġ= Ġcontest Kotlin Hero es Episode 1 ĊĠĠĠ Ġval Ġtask Ġ= Ġcontest . lessons . first (). task List [ 0 ] Ġas ĠCode forces Task ĊĊĠĠĠ ĠassertEquals (" A . ĠThree ĠIn te gers ĠAgain ", Ġtask . name ) ĊĠĠĠ ĠassertEquals (" https :// co def or ces . com / contest / 1 1 7 0 / problem / A ? locale = en ", Ġtask . feedback Link ) ĊĠĠĠ Ġtask . check Task Description ( 1 1 7 0 , Ġ' A ') ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcode forces Ġcontest ĠKotlin ĠHero es ĠEp isode Ġ 1 Ġtask ĠE Ġwith Ġimage `() Ġ{ ĊĠĠĠ Ġval Ġcontest Ġ= Ġcontest Kotlin Hero es Episode 1 ĊĠĠĠ Ġval Ġtask Ġ= Ġcontest . lessons . first (). task List [ 4 ] Ġas ĠCode forces Task ĊĊĠĠĠ ĠassertEquals (" E . ĠSl iding ĠDo ors ", Ġtask . name ) ĊĠĠĠ ĠassertEquals (" https :// co def or ces . com / contest / 1 1 7 0 / problem / E ? locale = en ", Ġtask . feedback Link ) ĊĠĠĠ Ġtask . check Task Description ( 1 1 7 0 , Ġ' E ') ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcode forces Ġcontest ĠKotlin ĠHero es ĠEp isode Ġ 1 Ġtask ĠG Ġwith Ġimage `() Ġ{ ĊĠĠĠ Ġval Ġcontest Ġ= Ġcontest Kotlin Hero es Episode 1 ĊĠĠĠ Ġval Ġtask Ġ= Ġcontest . lessons . first (). task List [ 6 ] Ġas ĠCode forces Task ĊĊĠĠĠ ĠassertEquals (" G . ĠGraph ĠDe composition ", Ġtask . name ) ĊĠĠĠ ĠassertEquals (" https :// co def or ces . com / contest / 1 1 7 0 / problem / G ? locale = en ", Ġtask . feedback Link ) ĊĠĠĠ Ġtask . check Task Description ( 1 1 7 0 , Ġ' G ') ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcode forces Ġcontest ĠCode forces ĠRound Ġ 6 0 5 Ġ( Div Ġ 3 )` () Ġ{ ĊĠĠĠ Ġval Ġcontest Ġ= Ġcode forces Round 6 0 5 Div 3 ĊĊĠĠĠ ĠassertEquals ( 1 2 7 2 , Ġcontest . id ) ĊĠĠĠ ĠassertEquals (" en ", Ġcontest . language Code ) ĊĠĠĠ ĠassertEquals (" Code forces ĠRound Ġ# 6 0 5 Ġ( Div . Ġ 3 )", Ġcontest . name ) ĊĠĠĠ ĠassertEquals (" https :// co def or ces . com / contest / 1 2 7 2 ", Ġcontest . get Cont est Url ()) ĊĠĠĠ ĠassertEquals (""" ĊĠĠĠĠĠ ĠA . ĠThree ĠF riends ĊĠĠĠĠĠ ĠB . ĠSnow ĠWalk ing ĠRobot ĊĠĠĠĠĠ ĠC . ĠY et ĠAnother ĠBroken ĠKeyboard ĊĠĠĠĠĠ ĠD . ĠRemove ĠOne ĠElement ĊĠĠĠĠĠ ĠE . ĠNe arest ĠO pp osite ĠPar ity ĊĠĠĠĠĠ ĠF . ĠTwo ĠBr acket ĠSe quences ĊĠĠĠ Ġ""" . trim Indent (), Ġcontest . description ) ĊĊĠĠĠ ĠassertEquals ( 1 , Ġcontest . lessons . size ) ĊĠĠĠ Ġval Ġtasks Ġ= Ġcontest . lessons . first (). task List ĊĠĠĠ ĠassertEquals ( 6 , Ġtasks . size ) ĊĊĠĠĠ ĠassertEquals (" A . ĠThree ĠF riends ", Ġtasks [ 0 ]. name ) ĊĠĠĠ ĠassertEquals (" B . ĠSnow ĠWalk ing ĠRobot ", Ġtasks [ 1 ]. name ) ĊĠĠĠ ĠassertEquals (" C . ĠY et ĠAnother ĠBroken ĠKeyboard ", Ġtasks [ 2 ]. name ) ĊĠĠĠ ĠassertEquals (" D . ĠRemove ĠOne ĠElement ", Ġtasks [ 3 ]. name ) ĊĠĠĠ ĠassertEquals (" E . ĠNe arest ĠO pp osite ĠPar ity ", Ġtasks [ 4 ]. name ) ĊĠĠĠ ĠassertEquals (" F . ĠTwo ĠBr acket ĠSe quences ", Ġtasks [ 5 ]. name ) ĊĊĠĠĠ ĠassertEquals (" https :// co def or ces . com / contest / 1 2 7 2 / problem / D ? locale = en ", Ġtasks [ 3 ]. feedback Link ) ĊĠĠĠ ĠassertEquals (" https :// co def or ces . com / contest / 1 2 7 2 / submit ? locale = en & submitted Problem Index = D ", Ġcode forces Submit Link ( tasks [ 3 ])) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcode forces Ġcontest ĠCode forces ĠRound Ġ 6 0 5 Ġ( Div Ġ 3 ) Ġtask ĠA `() Ġ{ ĊĠĠĠ Ġval Ġcontest Ġ= Ġcode forces Round 6 0 5 Div 3 ĊĠĠĠ Ġval Ġtask Ġ= Ġcontest . lessons . first (). task List [ 0 ] Ġas ĠCode forces Task ĊĊĠĠĠ ĠassertEquals (" A . ĠThree ĠF riends ", Ġtask . name ) ĊĠĠĠ ĠassertEquals (" https :// co def or ces . com / contest / 1 2 7 2 / problem / A ? locale = en ", Ġtask . feedback Link ) ĊĠĠĠ Ġtask . check Task Description ( 1 2 7 2 , Ġ' A ') ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcode forces Ġcontest ĠCode forces ĠRound Ġ 6 0 5 Ġ( Div Ġ 3 ) Ġtask ĠB Ġwith Ġimage `() Ġ{ ĊĠĠĠ Ġval Ġcontest Ġ= Ġcode forces Round 6 0 5 Div 3 ĊĠĠĠ Ġval Ġtask Ġ= Ġcontest . lessons . first (). task List [ 1 ] Ġas ĠCode forces Task ĊĊĠĠĠ ĠassertEquals (" B . ĠSnow ĠWalk ing ĠRobot ", Ġtask . name ) ĊĠĠĠ ĠassertEquals (" https :// co def or ces . com / contest / 1 2 7 2 / problem / B ? locale = en ", Ġtask . feedback Link ) ĊĠĠĠ Ġtask . check Task Description ( 1 2 7 2 , Ġ' B ') ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġparsing Ġseveral Ġtest Ġsamples Ġfor Ġcontest ĠKotlin ĠHero es ĠPract ice Ġ 6 Ġtask ĠA `() Ġ{ ĊĠĠĠ Ġval Ġcontest Ġ= Ġcontest Kotlin Hero es Pract ice 6 ĊĊĠĠĠ ĠassertEquals ( 1 4 8 9 , Ġcontest . id ) ĊĠĠĠ ĠassertEquals (" en ", Ġcontest . language Code ) ĊĠĠĠ ĠassertEquals (" Kotlin ĠHero es : ĠPract ice Ġ 6 ", Ġcontest . name ) ĊĊĠĠĠ Ġval Ġtask A Ġ= Ġcontest . lessons . first (). task List . first () Ġas ĠCode forces Task ĊĊĠĠĠ Ġval Ġexpected Tests Ġ= ĠlistOf ( ĊĠĠĠĠĠ ĠTest Sample (" 6 \ n 1 Ġ 5 Ġ 5 Ġ 1 Ġ 6 Ġ 1 ", Ġ" 3 \ n 5 Ġ 6 Ġ 1 "), ĊĠĠĠĠĠ ĠTest Sample (" 5 \ n 2 Ġ 4 Ġ 2 Ġ 4 Ġ 4 ", Ġ" 2 \ n 2 Ġ 4 "), ĊĠĠĠĠĠ ĠTest Sample (" 5 \ n 6 Ġ 6 Ġ 6 Ġ 6 Ġ 6 ", Ġ" 1 \ n 6 ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfor Ġ(( index , Ġexpected Test ) Ġin Ġexpected Tests . with Index ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġtest Index Ġ= Ġindex Ġ+ Ġ 1 ĊĠĠĠĠĠ Ġval Ġinput Ġ= Ġtask A . task Files [" ${ TEST _ DATA _ FOLDER }/ $ test Index /${ task A . input FileName } "] ?. text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" Can 't Ġfind Ġinput Ġfile Ġfor Ġtest ĠâĦ ĸ $ test Index ") ĊĠĠĠĠĠ Ġval Ġoutput Ġ= Ġtask A . task Files [" ${ TEST _ DATA _ FOLDER }/ $ test Index /${ task A . output FileName } "] ?. text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" Can 't Ġfind Ġoutput Ġfile Ġfor Ġtest ĠâĦ ĸ $ test Index ") ĊĊĠĠĠĠĠ ĠassertEquals ( expected Test . input , Ġinput ) ĊĠĠĠĠĠ ĠassertEquals ( expected Test . output , Ġoutput ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġparsing Ġsingle Ġtest Ġsample Ġfor Ġcontest ĠKotlin ĠHero es ĠPract ice Ġ 6 Ġtask ĠB `() Ġ{ ĊĠĠĠ Ġval Ġcontest Ġ= Ġcontest Kotlin Hero es Pract ice 6 ĊĊĠĠĠ ĠassertEquals ( 1 4 8 9 , Ġcontest . id ) ĊĠĠĠ ĠassertEquals (" en ", Ġcontest . language Code ) ĊĠĠĠ ĠassertEquals (" Kotlin ĠHero es : ĠPract ice Ġ 6 ", Ġcontest . name ) ĊĊĠĠĠ Ġval Ġtask B Ġ= Ġcontest . lessons . first (). task List [ 1 ] Ġas ĠCode forces Task ĊĊĠĠĠ Ġval Ġexpected Test Ġ= ĠTest Sample ( ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠ 4 ĊĠĠĠĠĠĠĠĠĠĠ 1 0 Ġ 1 Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠ 7 Ġ 3 Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠ 1 Ġ 1 0 0 0 Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠ 1 0 0 0 0 0 0 0 0 0 0 0 0 Ġ 4 2 Ġ 8 8 """. trim Indent (), ĊĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠ 1 0 ĊĠĠĠĠĠĠĠĠĠĠ 9 ĊĠĠĠĠĠĠĠĠĠĠ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠ 4 2 0 0 0 0 0 0 0 0 0 0 0 0 """. trim Indent () ĊĠĠĠ Ġ) ĊĠĠĠ Ġ// ĠOnly Ġ 2 Ġfiles Ġshould Ġbe Ġhere : Ġinput Ġand Ġoutput Ġfor Ġ 1 Ġtest ĊĠĠĠ ĠassertEquals ( 2 , Ġtask B . task Files . size ) ĊĊĠĠĠ Ġval Ġinput Ġ= Ġtask B . task Files [" ${ TEST _ DATA _ FOLDER }/ 1 /${ task B . input FileName } "] ?. text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" Can 't Ġfind Ġinput Ġfile Ġfor Ġtest ") ĊĠĠĠ Ġval Ġoutput Ġ= Ġtask B . task Files [" ${ TEST _ DATA _ FOLDER }/ 1 /${ task B . output FileName } "] ?. text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" Can 't Ġfind Ġoutput Ġfile Ġfor Ġtest ") ĊĊĠĠĠ ĠassertEquals ( expected Test . input , Ġinput ) ĊĠĠĠ ĠassertEquals ( expected Test . output , Ġoutput ) ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġdata Ġclass ĠTest Sample ( ĊĠĠĠĠĠ Ġval Ġinput : ĠString , ĊĠĠĠĠĠ Ġval Ġoutput : ĠString ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ }