/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 Ġ- Ġ 2 0 1 9 ĠMichael ĠR app Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ċ Ġ* Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ġdistributed Ġunder Ġthe ĠLicense Ċ Ġ* Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ċ Ġ* Ġor Ġimplied . ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ġunder Ċ Ġ* Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġde . mr app . text mining . util . parser Ċ Ċ import Ġkotlin . test .* Ċ Ċ /** Ċ Ġ* ĠTests Ġthe Ġfunctionality Ġof Ġthe Ġclass Ġ[ Matches ]. Ċ Ġ* Ċ Ġ* Ġ@ author ĠMichael ĠR app Ċ Ġ*/ Ċ class ĠMat ches Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Constructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatch 1 Ġ= ĠMatch (" foo ", Ġ" foo ", Ġ 0 . 2 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġmatch 2 Ġ= ĠMatch (" bar ", Ġ" bar ", Ġ 0 . 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġis Gain Metric Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġmatches Ġ= ĠMat ches ( listOf ( match 1 , Ġmatch 2 ), Ġis Gain Metric ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( is Gain Metric , Ġmatches . is Gain Metric ) ĊĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġmatches . iterator () ĊĠĠĠĠĠĠĠ ĠassertTrue ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( match 1 , Ġiterator . next ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( match 2 , Ġiterator . next ()) ĊĠĠĠĠĠĠĠ ĠassertFalse ( iterator . hasNext ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest From () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġiterable Ġ= ĠlistOf (" foo ", Ġ" bar ", Ġ" foobar ") ĊĠĠĠĠĠĠĠ Ġval Ġmatches Ġ= ĠMat ches . from ( iterable , Ġ" f ", ĠMatcher . startsWith ()) ĊĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġmatches . iterator () ĊĠĠĠĠĠĠĠ ĠassertTrue ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Match (" foo ", Ġ" f ", Ġ 1 . 0 ), Ġiterator . next ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Match (" foobar ", Ġ" f ", Ġ 1 . 0 ), Ġiterator . next ()) ĊĠĠĠĠĠĠĠ ĠassertFalse ( iterator . hasNext ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Match Best If No Matches Available () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatches Ġ= ĠMat ches < String , ĠString >( emptyList (), Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġbest Match Ġ= Ġmatches . get Best Match () ĊĠĠĠĠĠĠĠ ĠassertNull ( best Match ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Best Match If One Match Available () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= ĠMatch (" foo ", Ġ" foo ", Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġmatches Ġ= ĠMat ches ( listOf ( match ), Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġbest Match Ġ= Ġmatches . get Best Match () ĊĠĠĠĠĠĠĠ ĠassertEquals ( match , Ġbest Match ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Best Match If Gain Metric () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatch 1 Ġ= ĠMatch (" foo ", Ġ" foo ", Ġ 0 . 2 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġmatch 2 Ġ= ĠMatch (" bar ", Ġ" bar ", Ġ 0 . 7 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġmatch 3 Ġ= ĠMatch (" foobar ", Ġ" foobar ", Ġ 0 . 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġmatches Ġ= ĠMat ches ( listOf ( match 1 , Ġmatch 2 , Ġmatch 3 ), Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġbest Match Ġ= Ġmatches . get Best Match () ĊĠĠĠĠĠĠĠ ĠassertEquals ( match 2 , Ġbest Match ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Best Match If Loss Metric () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatch 1 Ġ= ĠMatch (" foo ", Ġ" foo ", Ġ 0 . 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġmatch 2 Ġ= ĠMatch (" bar ", Ġ" bar ", Ġ 0 . 2 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġmatch 3 Ġ= ĠMatch (" foobar ", Ġ" foobar ", Ġ 0 . 7 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġmatches Ġ= ĠMat ches ( listOf ( match 1 , Ġmatch 2 , Ġmatch 3 ), Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġbest Match Ġ= Ġmatches . get Best Match () ĊĠĠĠĠĠĠĠ ĠassertEquals ( match 2 , Ġbest Match ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Best Match Using T ie Breaker () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatch 1 Ġ= ĠMatch (" foo ", Ġ" foo ", Ġ 0 . 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġmatch 2 Ġ= ĠMatch (" bar ", Ġ" bar ", Ġ 0 . 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġmatches Ġ= ĠMat ches ( listOf ( match 1 , Ġmatch 2 ), Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġbest Match Ġ= Ġmatches . get Best Match ( object Ġ: ĠT ie Breaker < Match < String , ĠString >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinvoke ( p 1 : ĠMatch < String , ĠString >, Ġp 2 : ĠMatch < String , ĠString >) Ġ= Ġp 2 ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠassertEquals ( match 2 , Ġbest Match ) ĊĠĠĠ Ġ} Ċ Ċ }