package Ġmo ss client Ċ Ċ import Ġorg . hamcrest . Core Matchers . startsWith Ċ import Ġorg . junit . Assert . assertThat Ċ import Ġorg . junit . Test Ċ import Ġjava . io . File Ċ import Ġkotlin . test . assert Fails With Ċ Ċ open Ġclass ĠKotlin Tests Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmo ss Id Ġ= ĠSystem . getenv (" MO SS _ ID ") ĊĠĠĠ Ġprivate Ġval Ġbase Dir Ġ= ĠKotlin Tests :: class . java . class Loader . getResource (" base files "). file ĊĠĠĠ Ġprivate Ġval Ġsolution Dir Ġ= ĠKotlin Tests :: class . java . class Loader . getResource (" solution files "). file ĊĊĠĠĠ Ġprivate Ġval Ġbases : ĠList < File > Ġ= Ġ( 1 .. 2 ). map Ġ{ ĠFile ("$ base Dir / file $ it . txt ") Ġ} ĊĠĠĠ Ġprivate Ġval Ġsolutions : ĠList < Pair < String , ĠFile >> Ġ= Ġ( 1 .. 2 9 ). map Ġ{ Ġ" student $ it " Ġto ĠFile ("$ solution Dir / file $ it . txt ") Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfull Feature d Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠMo ss Client ( mo ss Id , ĠMo ss Language . JAVA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. submit Files ( bases , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. submit Named Files ( solutions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. raw Options ("- x Ġ- m Ġ 1 2 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. directory Based ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. comment (" important Ġcomment ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. result Size ( 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Url Ġ= Ġclient . getResult () ĊĠĠĠĠĠĠĠ ĠassertThat ( result Url , Ġstart sWith (" http :// mo ss . stanford . edu / results / ")) ĊĠĠĠĠĠĠĠ Ġprintln ( result Url ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Raw Options () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠMo ss Client ( mo ss Id , ĠMo ss Language . JAVA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. submit Files ( bases , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. submit Named Files ( solutions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. raw Options ("- x Ġ- m Ġ 1 2 3 Ġ- d Ġ- n Ġ 1 5 0 Ġ- c Ġmessage ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. raw Options (" ĠĠ Ġ- x Ġ- m Ġ 1 2 3 ĠĠĠ Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. raw Options (" Ġ- x ĠĠ Ġ- m ĠĠĠĠĠ 1 2 Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. raw Options ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. raw Options (" ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. raw Options (" ĠĠĠĠĠ Ġ- c Ġcomment ") ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < Mo ss ClientException >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġclient . raw Options ("- m Ġ- 1 ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġclient . raw Options ("- m Ġ 0 ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġclient . raw Options ("- m Ġabc ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġclient . raw Options ("- n Ġ- 1 ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġclient . raw Options ("- n Ġ 0 ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġclient . raw Options ("- n Ġabc ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġclient . raw Options (" qw erty ") Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Url Ġ= Ġclient . getResult () ĊĠĠĠĠĠĠĠ ĠassertThat ( result Url , Ġstart sWith (" http :// mo ss . stanford . edu / results / ")) ĊĠĠĠĠĠĠĠ Ġprintln ( result Url ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtry To Submit Two Times () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠMo ss Client ( mo ss Id , ĠMo ss Language . JAVA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. submit Files ( bases , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. submit Named Files ( solutions ) ĊĠĠĠĠĠĠĠ Ġprintln ( client . getResult ()) ĊĊĠĠĠĠĠĠĠ Ġassert Fails With ( Mo ss ClientException :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . getResult () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtry To Pass Wrong Options () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠMo ss Client ( mo ss Id , ĠMo ss Language . JAVA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. submit Files ( bases , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. submit Named Files ( solutions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. directory Based ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. result Size ( 4 ) ĊĊĠĠĠĠĠĠĠ Ġassert Fails With ( Mo ss ClientException :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . raw Options (" wrong Ġoptions ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Url Ġ= Ġclient . getResult () ĊĠĠĠĠĠĠĠ ĠassertThat ( result Url , Ġstart sWith (" http :// mo ss . stanford . edu / results / ")) ĊĠĠĠĠĠĠĠ Ġprintln ( result Url ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsubmit String Files () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠMo ss Client ( mo ss Id , ĠMo ss Language . JAVA ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfile 1 String Ġ= Ġ""" Ċ public Ġclass ĠRange Ġ{ ĊĠĠĠ Ġprivate Ġint Ġleft B ; ĊĠĠĠ Ġprivate Ġint Ġright B ; ĊĠĠĠ Ġprivate ĠRange () Ġ{} ĊĠĠĠ Ġprivate ĠRange ( int Ġleft B , Ġint Ġright B ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . left B Ġ= Ġleft B ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . right B Ġ= Ġright B ; ĊĠĠĠ Ġ} Ċ } """ ĊĊĠĠĠĠĠĠĠ Ġval Ġfile 2 String Ġ= Ġ""" Ċ public Ġclass ĠRange Ġ{ ĊĊĠĠĠ Ġprivate Ġint Ġleft Ġ= Ġ 0 ; ĊĠĠĠ Ġprivate Ġint Ġright Ġ= Ġ 0 ; ĊĊĠĠĠ Ġpublic ĠRange ( int Ġleft , Ġint Ġright ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( left Ġ> Ġright ){ ĊĠĠĠĠĠĠĠĠĠ Ġthrow Ġnew ĠIllegalArgumentException (" WRONG ! Lower Ġbound Ġis Ġgreater Ġthen Ġupper Ġbound "); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . left Ġ= Ġleft ; ĊĠĠĠĠĠĠĠ Ġthis . right Ġ= Ġright ; ĊĠĠĠ Ġ} Ċ } """ ĊĊĠĠĠĠĠĠĠ Ġclient . submit String Files ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" student 1 " Ġto Ġfile 1 String , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" student 2 " Ġto Ġfile 2 String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Url Ġ= Ġclient . getResult () ĊĠĠĠĠĠĠĠ ĠassertThat ( result Url , Ġstart sWith (" http :// mo ss . stanford . edu / results / ")) ĊĠĠĠĠĠĠĠ Ġprintln ( result Url ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsubmit ByteArray Files () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠMo ss Client ( mo ss Id , ĠMo ss Language . JAVA ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= ĠlistOf < Byte >( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 , Ġ 1 1 2 , Ġ 1 1 7 , Ġ 9 8 , Ġ 1 0 8 , Ġ 1 0 5 , Ġ 9 9 , Ġ 3 2 , Ġ 9 9 , Ġ 1 0 8 , Ġ 9 7 , Ġ 1 1 5 , Ġ 1 1 5 , Ġ 3 2 , Ġ 8 2 , Ġ 9 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 0 , Ġ 1 0 3 , Ġ 1 0 1 , Ġ 3 2 , Ġ 1 2 3 , Ġ 1 0 , Ġ 3 2 , Ġ 3 2 , Ġ 3 2 , Ġ 3 2 , Ġ 1 1 2 , Ġ 1 1 4 , Ġ 1 0 5 , Ġ 1 1 8 , Ġ 9 7 , Ġ 1 1 6 , Ġ 1 0 1 , Ġ 3 2 , Ġ 1 0 5 , Ġ 1 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 6 , Ġ 3 2 , Ġ 1 0 8 , Ġ 1 0 1 , Ġ 1 0 2 , Ġ 1 1 6 , Ġ 6 6 , Ġ 5 9 , Ġ 1 0 , Ġ 3 2 , Ġ 3 2 , Ġ 3 2 , Ġ 3 2 , Ġ 1 1 2 , Ġ 1 1 4 , Ġ 1 0 5 , Ġ 1 1 8 , Ġ 9 7 , Ġ 1 1 6 , Ġ 1 0 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 2 , Ġ 1 0 5 , Ġ 1 1 0 , Ġ 1 1 6 , Ġ 3 2 , Ġ 1 1 4 , Ġ 1 0 5 , Ġ 1 0 3 , Ġ 1 0 4 , Ġ 1 1 6 , Ġ 6 6 , Ġ 5 9 , Ġ 1 0 , Ġ 3 2 , Ġ 3 2 , Ġ 3 2 , Ġ 3 2 , Ġ 1 1 2 , Ġ 1 1 4 , Ġ 1 0 5 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġclient . submit ByteArray Files ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" student 1 " Ġto ĠByteArray ( bytes . size , Ġbytes :: get ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" student 2 " Ġto ĠByteArray ( bytes . size , Ġbytes :: get ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Url Ġ= Ġclient . getResult () ĊĠĠĠĠĠĠĠ ĠassertThat ( result Url , Ġstart sWith (" http :// mo ss . stanford . edu / results / ")) ĊĠĠĠĠĠĠĠ Ġprintln ( result Url ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠThrowable > Ġassert Fails With ( var arg Ġactions : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactions . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Fails With ( T :: class , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ