package Ġio . github . ju um ix x . todo Ċ Ċ import Ġio . github . ju um ix x . todo . Task . Companion . DATE _ STRING Ċ import Ġorg . am sh ove . k lu ent . shouldBe Ċ import Ġorg . am sh ove . k lu ent . should Equal Ċ import Ġorg . joda . time . J oda Time Permission Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ class ĠTodo Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Read Todo Per Line () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtxt Ġ= Ġ""" task Ġ 1 Ċ x Ġtask Ġ( 2 ) Ġis Ġalready Ġdone Ċ ( A ) Ġ 0 4 - 0 5 - 2 0 0 3 Ġtask Ġx Ġ 3 Ġ@ context Ċ ( B ) Ġtask Ġ 4 Ġ@ context Ġ+ project Ċ X Ġtask Ġ 5 Ġ+ project Ċ Ċ task Ġ 6 Ġis Ġnot Ġpriority Ġ( A ) Ġbut Ġdue : 0 1 - 0 2 - 2 0 0 3 Ċ x Ġ 0 3 - 0 4 - 2 0 0 3 Ġ 0 4 - 0 5 - 2 0 0 3 Ġtask Ġ 7 Ċ ( A ) Ġtask Ġ 8 Ġ@ ctx Ċ ( B ) Ġtask Ġ 9 Ċ ( C ) Ġ 0 4 - 0 5 - 2 0 0 3 Ġtask Ġ 1 0 Ċ """ ĊĠĠĠĠĠĠĠ Ġval Ġtodo Ġ= ĠTodo ( txt ) ĊĠĠĠĠĠĠĠ Ġtodo . tasks . size ĠshouldBe Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġtodo . tasks . join ToString ("\ n ") Ġshould Equal Ġtxt . replace ("\ n \ n ", Ġ"\ n "). trim () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Read Completed Task () Ġ{ ĊĠĠĠĠĠĠĠ ĠTask (" x Ġtask Ġ( 2 ) Ġis Ġalready Ġdone "). completed ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ ĠTask ("( A ) Ġ 0 4 - 0 5 - 2 0 0 3 Ġtask Ġx Ġ 3 Ġ@ context "). completed ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠ ĠTask (" X Ġtask Ġ 5 Ġ+ project "). completed ĠshouldBe Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Parse Priority () Ġ{ ĊĠĠĠĠĠĠĠ ĠTask ("( A ) Ġ 0 4 - 0 5 - 2 0 0 3 Ġtask Ġx Ġ 3 Ġ@ context "). priority Ġshould Equal Ġ" A " ĊĠĠĠĠĠĠĠ ĠTask ("( B ) Ġtask Ġ 4 Ġ@ context Ġ+ project "). priority Ġshould Equal Ġ" B " ĊĠĠĠĠĠĠĠ ĠTask (" X Ġtask Ġ 5 Ġ+ project "). priority ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ ĠTask ("( A ) 0 7 - 0 6 - 2 0 1 7 Ġno Ġdate Ġor Ġpriority "). priority ĠshouldBe Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Parse Creation Date () Ġ{ ĊĠĠĠĠĠĠĠ ĠTask (" x Ġ 0 6 - 0 6 - 2 0 1 7 Ġ 0 5 - 0 6 - 2 0 1 7 Ġtask Ġ 3 Ġ@ context "). creation Date ?. toString ( DATE _ STRING ) Ġshould Equal Ġ" 0 5 - 0 6 - 2 0 1 7 " ĊĠĠĠĠĠĠĠ ĠTask (" 0 7 - 0 6 - 2 0 1 7 Ġtask Ġwas Ġcreated Ġtoday "). creation Date ?. toString ( DATE _ STRING ) Ġshould Equal Ġ" 0 7 - 0 6 - 2 0 1 7 " ĊĠĠĠĠĠĠĠ ĠTask ("( A ) Ġ 0 6 - 0 6 - 2 0 1 7 Ġtask Ġx Ġ 2 Ġ+ project "). creation Date ?. toString ( DATE _ STRING ) Ġshould Equal Ġ" 0 6 - 0 6 - 2 0 1 7 " ĊĠĠĠĠĠĠĠ ĠTask ("( A ) 0 7 - 0 6 - 2 0 1 7 Ġno Ġdate Ġor Ġpriority "). creation Date ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ ĠTask (" is Ġnot Ġpriority Ġ( A ) Ġbut Ġdue : 0 1 - 0 2 - 2 0 0 3 "). creation Date ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ ĠTask (" x Ġdo Ġ 0 1 - 0 2 - 2 0 0 3 Ġsomething "). creation Date ĠshouldBe Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Parse Completion Date () Ġ{ ĊĠĠĠĠĠĠĠ ĠTask (" x Ġ 0 6 - 0 6 - 2 0 1 7 Ġ 0 7 - 0 6 - 2 0 1 7 Ġtask Ġwas Ġcreated Ġtoday "). completion Date ?. toString ( DATE _ STRING ) Ġshould Equal Ġ" 0 6 - 0 6 - 2 0 1 7 " ĊĠĠĠĠĠĠĠ ĠTask (" x Ġ 0 1 - 0 6 - 2 0 1 7 Ġ 0 7 - 1 2 - 2 0 1 6 Ġtask Ġwas Ġdone Ġ+ 0 1 - 0 2 - 2 0 0 3 "). completion Date ?. toString ( DATE _ STRING ) Ġshould Equal Ġ" 0 1 - 0 6 - 2 0 1 7 " ĊĠĠĠĠĠĠĠ ĠTask (" x Ġ 0 5 - 0 6 - 2 0 1 7 Ġtask Ġ 3 Ġ@ context "). completion Date ?. toString ( DATE _ STRING ) ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ ĠTask ("( A ) Ġ 0 6 - 0 6 - 2 0 1 7 Ġ 0 7 - 0 6 - 2 0 1 7 Ġtask Ġx Ġ 2 Ġ+ project "). completion Date ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ ĠTask ("( A ) 0 7 - 0 6 - 2 0 1 7 Ġno Ġdate Ġor Ġpriority "). completion Date ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ ĠTask (" is Ġnot Ġpriority Ġ( A ) Ġbut Ġdue : 0 1 - 0 2 - 2 0 0 3 "). completion Date ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠ ĠTask ("( B ) Ġdo Ġ 0 1 - 0 2 - 2 0 0 3 Ġsomething "). completion Date ĠshouldBe Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Parse Projects () Ġ{ ĊĠĠĠĠĠĠĠ ĠTask ("( A ) Ġ 0 4 - 0 5 - 2 0 0 3 Ġtask Ġx Ġ 3 Ġ@ context "). projects . size ĠshouldBe Ġ 0 ĊĠĠĠĠĠĠĠ ĠTask ("( B ) Ġtask Ġ 4 Ġ@ context Ġ+ project "). projects Ġshould Equal Ġarray ListOf (" project ") ĊĠĠĠĠĠĠĠ ĠTask (" X Ġtask Ġ 5 Ġ+ project "). projects Ġshould Equal Ġarray ListOf (" project ") ĊĠĠĠĠĠĠĠ ĠTask ("( A ) 0 7 - 0 6 - 2 0 1 7 Ġno Ġ+ date Ġor Ġ+ priority "). projects Ġshould Equal Ġarray ListOf (" date ", Ġ" priority ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Parse Contexts () Ġ{ ĊĠĠĠĠĠĠĠ ĠTask (" X Ġtask Ġ 5 Ġ+ project "). contexts . size ĠshouldBe Ġ 0 ĊĠĠĠĠĠĠĠ ĠTask ("( A ) Ġ 0 4 - 0 5 - 2 0 0 3 Ġtask Ġx Ġ 3 Ġ@ context "). contexts Ġshould Equal Ġarray ListOf (" context ") ĊĠĠĠĠĠĠĠ ĠTask ("( B ) Ġtask Ġ 4 Ġ@ context Ġ+ project "). contexts Ġshould Equal Ġarray ListOf (" context ") ĊĠĠĠĠĠĠĠ ĠTask ("( A ) 0 7 - 0 6 - 2 0 1 7 Ġno Ġ@ date Ġor Ġ@ priority "). contexts Ġshould Equal Ġarray ListOf (" date ", Ġ" priority ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Parse Tags () Ġ{ ĊĠĠĠĠĠĠĠ ĠTask (" is Ġnot Ġpriority Ġ( A ) Ġbut Ġdue : Ġ 0 1 - 0 2 - 2 0 0 3 "). tags . size ĠshouldBe Ġ 0 ĊĠĠĠĠĠĠĠ ĠTask ("( A ) Ġtask Ġ 8 Ġ@ ctx "). tags . size ĠshouldBe Ġ 0 ĊĠĠĠĠĠĠĠ ĠTask (" 0 1 - 0 2 - 2 0 1 7 Ġis Ġnot Ġpriority Ġ( A ) Ġbut Ġdue : 0 1 - 0 2 - 2 0 0 3 "). tags Ġshould Equal Ġarray ListOf ( Pair (" due ", Ġ" 0 1 - 0 2 - 2 0 0 3 ")) ĊĠĠĠĠĠĠĠ ĠTask (" any : tag Ġcan : be Ġany : where "). tags Ġshould Equal Ġarray ListOf ( Pair (" any ", Ġ" tag "), ĠPair (" can ", Ġ" be "), ĠPair (" any ", Ġ" where ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġshould Not Alter Content () Ġ{ ĊĠĠĠĠĠĠĠ ĠTask (" X Ġtask Ġ 5 Ġ+ project "). content Ġshould Equal Ġ" X Ġtask Ġ 5 Ġ+ project " ĊĠĠĠĠĠĠĠ ĠTask ("( A ) Ġ 0 4 - 0 5 - 2 0 0 3 Ġtask Ġx Ġ 3 Ġ@ context "). content Ġshould Equal Ġ" task Ġx Ġ 3 Ġ@ context " ĊĠĠĠĠĠĠĠ ĠTask (" x Ġtask Ġ 4 Ġ@ context Ġ+ project "). content Ġshould Equal Ġ" task Ġ 4 Ġ@ context Ġ+ project " ĊĠĠĠĠĠĠĠ ĠTask ("( A ) 0 7 - 0 6 - 2 0 1 7 Ġno Ġ@ date Ġor Ġ@ priority "). content Ġshould Equal Ġ"( A ) 0 7 - 0 6 - 2 0 1 7 Ġno Ġ@ date Ġor Ġ@ priority " ĊĠĠĠ Ġ} Ċ }