package Ġcom . cur tis lb . ad vent of code . common . collection Ċ Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . test . assertTrue Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ /** Ċ Ġ* ĠTests Ġ[ Counter ]. Ċ Ġ*/ Ċ class ĠCounter Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest When Empty () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= ĠCounter < String >() ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Map (), Ġcounter . toMap ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġcounter . entries With Non zero Count ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġcounter . entries With Positive Count ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġcounter . keys With Non zero Count ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġcounter . keys With Positive Count ) ĊĠĠĠĠĠĠĠ ĠassertFalse (" foo " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertFalse (" bar " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġcounter [" bar "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġcounter [" baz "]) ĊĠĠĠĠĠĠĠ ĠassertEquals (" {}", Ġcounter . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest With Initial Counts () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcounts Ġ= Ġmap Of (" lo rem " Ġto Ġ 2 L , Ġ" ip sum " Ġto Ġ 0 L , Ġ" dol or " Ġto Ġ- 3 L , Ġ" sit " Ġto Ġ 2 1 4 7 4 8 3 6 4 8 L ) ĊĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= ĠCounter ( counts ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( map Of (" lo rem " Ġto Ġ 2 L , Ġ" dol or " Ġto Ġ- 3 L , Ġ" sit " Ġto Ġ 2 1 4 7 4 8 3 6 4 8 L ), Ġcounter . toMap ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" lo rem " Ġto Ġ 2 L , Ġ" dol or " Ġto Ġ- 3 L , Ġ" sit " Ġto Ġ 2 1 4 7 4 8 3 6 4 8 L ). entries , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcounter . entries With Non zero Count ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" lo rem " Ġto Ġ 2 L , Ġ" sit " Ġto Ġ 2 1 4 7 4 8 3 6 4 8 L ). entries , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcounter . entries With Positive Count ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of (" lo rem ", Ġ" dol or ", Ġ" sit "), Ġcounter . keys With Non zero Count ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of (" lo rem ", Ġ" sit "), Ġcounter . keys With Positive Count ) ĊĠĠĠĠĠĠĠ ĠassertTrue (" lo rem " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertFalse (" ip sum " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertTrue (" dol or " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertTrue (" sit " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertFalse (" amet " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 L , Ġcounter [" lo rem "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġcounter [" ip sum "]) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 3 L , Ġcounter [" dol or "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 1 4 7 4 8 3 6 4 8 L , Ġcounter [" sit "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġcounter [" amet "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Updating Counts () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= ĠCounter < String >() ĊĊĠĠĠĠĠĠĠ Ġcounter [" bad ger "] Ġ+= Ġ 1 2 L ĊĠĠĠĠĠĠĠ Ġcounter [" m ush room "] Ġ+= Ġ 2 L ĊĠĠĠĠĠĠĠ ĠassertEquals ( map Of (" bad ger " Ġto Ġ 1 2 L , Ġ" m ush room " Ġto Ġ 2 L ), Ġcounter . toMap ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" bad ger " Ġto Ġ 1 2 L , Ġ" m ush room " Ġto Ġ 2 L ). entries , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcounter . entries With Non zero Count ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" bad ger " Ġto Ġ 1 2 L , Ġ" m ush room " Ġto Ġ 2 L ). entries , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcounter . entries With Positive Count ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertTrue (" bad ger " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertTrue (" m ush room " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertFalse (" snake " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 2 L , Ġcounter [" bad ger "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 L , Ġcounter [" m ush room "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġcounter [" snake "]) ĊĊĠĠĠĠĠĠĠ Ġcounter [" bad ger "] Ġ+= Ġ 1 1 L ĊĠĠĠĠĠĠĠ Ġcounter [" m ush room "] Ġ-= Ġ 2 L ĊĠĠĠĠĠĠĠ Ġcounter [" snake "] Ġ-= Ġ 5 L ĊĠĠĠĠĠĠĠ ĠassertEquals ( map Of (" bad ger " Ġto Ġ 2 3 L , Ġ" snake " Ġto Ġ- 5 L ), Ġcounter . toMap ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" bad ger " Ġto Ġ 2 3 L , Ġ" snake " Ġto Ġ- 5 L ). entries , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcounter . entries With Non zero Count ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( map Of (" bad ger " Ġto Ġ 2 3 L ). entries , Ġcounter . entries With Positive Count ) ĊĠĠĠĠĠĠĠ ĠassertTrue (" bad ger " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertFalse (" m ush room " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertTrue (" snake " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 3 L , Ġcounter [" bad ger "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġcounter [" m ush room "]) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 5 L , Ġcounter [" snake "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Construct From Items () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= ĠCounter (" the Ġspark Ġthat Ġwill Ġlight Ġthe Ġfire Ġthat Ġwill Ġburn Ġthe ". split (' Ġ')) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" the " Ġto Ġ 3 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" spark " Ġto Ġ 1 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" that " Ġto Ġ 2 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" will " Ġto Ġ 2 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" light " Ġto Ġ 1 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fire " Ġto Ġ 1 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" burn " Ġto Ġ 1 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). entries , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcounter . entries With Non zero Count ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Contains Counter () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcounter A Ġ= ĠCounter < String >() ĊĠĠĠĠĠĠĠ Ġval Ġcounter B Ġ= ĠCounter < String >() ĊĠĠĠĠĠĠĠ ĠassertTrue ( counter A Ġin Ġcounter B ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( counter B Ġin Ġcounter A ) ĊĊĠĠĠĠĠĠĠ Ġcounter A [" red "] Ġ= Ġ 1 L ĊĠĠĠĠĠĠĠ ĠassertFalse ( counter A Ġin Ġcounter B ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( counter B Ġin Ġcounter A ) ĊĊĠĠĠĠĠĠĠ Ġcounter B [" red "] Ġ= Ġ 1 L ĊĠĠĠĠĠĠĠ ĠassertTrue ( counter A Ġin Ġcounter B ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( counter B Ġin Ġcounter A ) ĊĊĠĠĠĠĠĠĠ Ġcounter B [" red "] Ġ= Ġ 2 L ĊĠĠĠĠĠĠĠ ĠassertTrue ( counter A Ġin Ġcounter B ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( counter B Ġin Ġcounter A ) ĊĊĠĠĠĠĠĠĠ Ġcounter A [" blue "] Ġ= Ġ 3 L ĊĠĠĠĠĠĠĠ ĠassertFalse ( counter A Ġin Ġcounter B ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( counter B Ġin Ġcounter A ) ĊĊĠĠĠĠĠĠĠ Ġcounter A [" red "] Ġ= Ġ 2 L ĊĠĠĠĠĠĠĠ ĠassertFalse ( counter A Ġin Ġcounter B ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( counter B Ġin Ġcounter A ) ĊĊĠĠĠĠĠĠĠ Ġcounter B [" blue "] Ġ= Ġ 4 L ĊĠĠĠĠĠĠĠ ĠassertTrue ( counter A Ġin Ġcounter B ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( counter B Ġin Ġcounter A ) ĊĊĠĠĠĠĠĠĠ Ġcounter A [" green "] Ġ= Ġ- 1 L ĊĠĠĠĠĠĠĠ ĠassertTrue ( counter A Ġin Ġcounter B ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( counter B Ġin Ġcounter A ) ĊĊĠĠĠĠĠĠĠ Ġcounter B [" green "] Ġ= Ġ- 2 L ĊĠĠĠĠĠĠĠ ĠassertFalse ( counter A Ġin Ġcounter B ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( counter B Ġin Ġcounter A ) ĊĊĠĠĠĠĠĠĠ Ġcounter A [" green "] Ġ= Ġ- 3 L ĊĠĠĠĠĠĠĠ ĠassertTrue ( counter A Ġin Ġcounter B ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( counter B Ġin Ġcounter A ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Add All () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= ĠCounter < String >() ĊĠĠĠĠĠĠĠ Ġcounter . addAll ( listOf (" ban ana ", Ġ" apple ", Ġ" ban ana ", Ġ" orange ", Ġ" orange ", Ġ" ban ana ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 L , Ġcounter [" apple "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 L , Ġcounter [" ban ana "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 L , Ġcounter [" orange "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġcounter [" ki wi "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġcounter [" k um quat "]) ĊĊĠĠĠĠĠĠĠ Ġcounter [" ki wi "] Ġ= Ġ- 1 L ĊĠĠĠĠĠĠĠ Ġcounter . addAll ( listOf (" orange ", Ġ" ban ana ", Ġ" ki wi ", Ġ" orange ", Ġ" orange ", Ġ" ki wi ", Ġ" apple ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 L , Ġcounter [" apple "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 L , Ġcounter [" ban ana "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 5 L , Ġcounter [" orange "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 L , Ġcounter [" ki wi "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġcounter [" k um quat "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Clear Negative Counts () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= ĠCounter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" alpha " Ġto Ġ 5 6 0 2 0 9 1 1 0 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" br avo " Ġto Ġ- 6 9 3 7 3 3 7 1 9 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" char lie " Ġto Ġ- 4 6 6 3 2 9 0 4 1 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" delta " Ġto Ġ 9 2 7 0 7 5 9 5 1 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" echo " Ġto Ġ- 1 3 0 8 3 1 1 3 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fo xt rot " Ġto Ġ 2 7 2 4 7 9 7 6 7 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcounter . clear Negative Counts () ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" alpha " Ġto Ġ 5 6 0 2 0 9 1 1 0 L , Ġ" delta " Ġto Ġ 9 2 7 0 7 5 9 5 1 L , Ġ" fo xt rot " Ġto Ġ 2 7 2 4 7 9 7 6 7 L ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcounter . toMap () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" alpha " Ġto Ġ 5 6 0 2 0 9 1 1 0 L , Ġ" delta " Ġto Ġ 9 2 7 0 7 5 9 5 1 L , Ġ" fo xt rot " Ġto Ġ 2 7 2 4 7 9 7 6 7 L ). entries , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcounter . entries With Non zero Count ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" alpha " Ġto Ġ 5 6 0 2 0 9 1 1 0 L , Ġ" delta " Ġto Ġ 9 2 7 0 7 5 9 5 1 L , Ġ" fo xt rot " Ġto Ġ 2 7 2 4 7 9 7 6 7 L ). entries , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcounter . entries With Positive Count ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertTrue (" alpha " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertFalse (" br avo " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertFalse (" char lie " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertTrue (" delta " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertFalse (" echo " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertTrue (" fo xt rot " Ġin Ġcounter ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 5 6 0 2 0 9 1 1 0 L , Ġcounter [" alpha "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġcounter [" br avo "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġcounter [" char lie "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 9 2 7 0 7 5 9 5 1 L , Ġcounter [" delta "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 L , Ġcounter [" echo "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 7 2 4 7 9 7 6 7 L , Ġcounter [" fo xt rot "]) ĊĠĠĠ Ġ} Ċ } Ċ