package Ġmain . operation Ċ Ċ import Ġmain .* Ċ import Ġmain . G ik . Reset Mode Ċ import Ġmain . Status . Changes Ċ import Ġkotlin . test . Before Test Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assert Fails With Ċ Ċ class ĠReset _ test Ġ: ĠSimple Git () Ġ{ ĊĊĠĠĠ Ġval Ġcommits Ġ= ĠArrayList < Commit >() ĊĊĠĠĠ Ġ@ Before Test ĊĠĠĠ Ġoverride Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setup () ĊĠĠĠĠĠĠĠ Ġrepo File (" 1 . bat ") Ġ+= Ġ" 1 " ĊĠĠĠĠĠĠĠ Ġrepo File (" something / 2 . txt ") Ġ+= Ġ" 2 " ĊĠĠĠĠĠĠĠ Ġrepo File (" test / 3 . bat ") Ġ+= Ġ" 3 " ĊĠĠĠĠĠĠĠ Ġrepo File (" test / 4 . txt ") Ġ+= Ġ" 4 " ĊĠĠĠĠĠĠĠ Ġrepo File (" test / other / 5 . txt ") Ġ+= Ġ" 5 " ĊĠĠĠĠĠĠĠ Ġg ik . add ( patterns Ġ= Ġset Of (". ")) ĊĠĠĠĠĠĠĠ Ġcommits Ġ+= Ġg ik . commit ( message Ġ= Ġ" Test ") ĊĠĠĠĠĠĠĠ Ġrepo File (" 1 . bat ") Ġ+= Ġ" 2 " ĊĠĠĠĠĠĠĠ Ġrepo File (" test / 3 . bat ") Ġ+= Ġ" 4 " ĊĠĠĠĠĠĠĠ Ġg ik . add ( patterns Ġ= Ġset Of (". ")) ĊĠĠĠĠĠĠĠ Ġcommits Ġ+= Ġg ik . commit ( message Ġ= Ġ" Test ") ĊĠĠĠĠĠĠĠ Ġrepo File (" 1 . bat ") Ġ+= Ġ" 3 " ĊĠĠĠĠĠĠĠ Ġrepo File (" something / 2 . txt ") Ġ+= Ġ" 2 " ĊĠĠĠĠĠĠĠ Ġg ik . add ( patterns Ġ= Ġset Of (". ")) ĊĠĠĠĠĠĠĠ Ġrepo File (" test / other / 5 . txt ") Ġ+= Ġ" 6 " ĊĠĠĠĠĠĠĠ Ġrepo File (" test / 4 . txt ") Ġ+= Ġ" 5 " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` reset Ġsoft Ġchanges ĠHEAD Ġonly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġg ik . reset ( mode Ġ= ĠReset Mode . soft , Ġcommit Ġ= Ġcommits [ 0 ]. id ) ĊĠĠĠĠĠĠĠ Ġassert ( commits [ 0 ] Ġ== Ġg ik . head ) ĊĠĠĠĠĠĠĠ Ġassert ( g ik . status () Ġ== ĠStatus ( st aged Ġ= ĠChanges ( modified Ġ= Ġset Of (" 1 . bat ", Ġ" test / 3 . bat ", Ġ" something / 2 . txt ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun st aged Ġ= ĠChanges ( modified Ġ= Ġset Of (" test / 4 . txt ", Ġ" test / other / 5 . txt ")) )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` reset Ġmixed Ġchanges ĠHEAD Ġand Ġindex `() Ġ{ ĊĠĠĠĠĠĠĠ Ġg ik . reset ( mode Ġ= ĠReset Mode . mixed , Ġcommit Ġ= Ġcommits [ 0 ]. id ) ĊĠĠĠĠĠĠĠ Ġassert ( commits [ 0 ] Ġ== Ġg ik . head ) ĊĠĠĠĠĠĠĠ Ġassert ( g ik . status () Ġ== ĠStatus ( un st aged Ġ= ĠChanges ( modified Ġ= Ġset Of (" 1 . bat ", Ġ" test / 3 . bat ", Ġ" test / 4 . txt ", Ġ" something / 2 . txt ", Ġ" test / other / 5 . txt ")) )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` reset Ġhard Ġchanges ĠHEAD , Ġindex , Ġand Ġworking Ġtree `() Ġ{ ĊĠĠĠĠĠĠĠ Ġg ik . reset ( mode Ġ= ĠReset Mode . hard , Ġcommit Ġ= Ġcommits [ 0 ]. id ) ĊĠĠĠĠĠĠĠ Ġassert ( commits [ 0 ] Ġ== Ġg ik . head ) ĊĠĠĠĠĠĠĠ Ġassert ( g ik . status (). is Clean ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` reset Ġwith Ġpaths Ġchanges Ġindex Ġonly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġg ik . reset ( paths Ġ= Ġset Of (" something / 2 . txt ")) ĊĠĠĠĠĠĠĠ Ġassert ( commits [ 1 ] Ġ== Ġg ik . head ) ĊĠĠĠĠĠĠĠ Ġassert ( g ik . status () Ġ== ĠStatus ( st aged Ġ= ĠChanges ( modified Ġ= Ġset Of (" 1 . bat ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun st aged Ġ= ĠChanges ( modified Ġ= Ġset Of (" test / 4 . txt ", Ġ" something / 2 . txt ", Ġ" test / other / 5 . txt ")) )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` reset Ġwith Ġpaths Ġand Ġmode Ġset Ġnot Ġsupported `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg ik . reset ( mode Ġ= ĠReset Mode . hard , Ġpaths Ġ= Ġset Of (". ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }