package Ġlt . new orld . spanner Ċ Ċ import Ġandroid . text . Sp ann able Ċ import Ġlt . new orld . spanner . Spans . bold Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . ro bo lectric . Ro bo lectric TestRunner Ċ import Ġjava . lang . StringBuilder Ċ Ċ /** Ċ Ġ* Ġ@ author ĠAnd ri us ĠSem ion ov as Ċ Ġ* Ġ@ since Ġ 2 0 1 7 - 0 8 - 0 1 Ċ Ġ*/ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠSp anner Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġbuilder Ġ= ĠSp anner () ĊĠĠĠĠĠĠĠ ĠassertEquals ("", Ġbuilder . toString ()) ĊĊĠĠĠĠĠĠĠ Ġbuilder Ġ= ĠSp anner (" test ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" test ", Ġbuilder . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġappend () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠSp anner (" test Ġ") ĊĠĠĠĠĠĠĠ Ġbuilder . append (" foo ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" test Ġfoo ", Ġbuilder . toString ()) ĊĊĠĠĠĠĠĠĠ Ġbuilder . append (' Ġ') ĊĠĠĠĠĠĠĠ ĠassertEquals (" test Ġfoo Ġ", Ġbuilder . toString ()) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġappend _ with Span () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠSp anner (" test Ġ") ĊĊĠĠĠĠĠĠĠ Ġbuilder . append (" bar ", Ġbold ()) ĊĠĠĠĠĠĠĠ ĠassertEquals (" test Ġbar ", Ġbuilder . toString ()) ĊĠĠĠĠĠĠĠ Ġassert Spans (" test Ġ< Style Span > bar </ Style Span >", Ġbuilder ) ĊĊĠĠĠĠĠĠĠ Ġbuilder . append (" Ġabc Ġ", Ġ 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" test Ġbar a ", Ġbuilder . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġinsert () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠSp anner (" ab ") ĊĊĠĠĠĠĠĠĠ Ġbuilder . insert ( 1 , Ġ" Ġfoo Ġ", Ġbold ()) ĊĠĠĠĠĠĠĠ ĠassertEquals (" a Ġfoo Ġb ", Ġbuilder . toString ()) ĊĠĠĠĠĠĠĠ Ġassert Spans (" a < Style Span > Ġfoo Ġ</ Style Span > b ", Ġbuilder ) ĊĊĠĠĠĠĠĠĠ Ġbuilder . insert ( 1 , Ġ" Ġbar ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" a Ġbar Ġfoo Ġb ", Ġbuilder . toString ()) ĊĊĠĠĠĠĠĠĠ Ġbuilder . insert ( 1 , Ġ" abc ", Ġ 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" ab Ġbar Ġfoo Ġb ", Ġbuilder . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreplace () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠSp anner (" faa Ġ{ replace }") ĊĊĠĠĠĠĠĠĠ Ġbuilder . replace ( 1 , Ġ 3 , Ġ" oo ", Ġbold ()) ĊĠĠĠĠĠĠĠ ĠassertEquals (" foo Ġ{ replace }", Ġbuilder . toString ()) ĊĠĠĠĠĠĠĠ Ġassert Spans (" f < Style Span > oo </ Style Span > Ġ{ replace }", Ġbuilder ) ĊĊĠĠĠĠĠĠĠ Ġbuilder . replace ("{ replace }", Ġ" bar ", Ġbold ()) ĊĠĠĠĠĠĠĠ ĠassertEquals (" foo Ġbar ", Ġbuilder . toString ()) ĊĊĠĠĠĠĠĠĠ Ġassert Spans (" f < Style Span > oo </ Style Span > Ġ< Style Span > bar </ Style Span >", Ġbuilder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġnon Existing Replace () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠSp anner (" foo Ġbar ") ĊĊĠĠĠĠĠĠĠ Ġbuilder . replace (" not Ġexist ", Ġ" good Ġtext ", Ġbold ()) ĊĠĠĠĠĠĠĠ ĠassertEquals (" foo Ġbar ", Ġbuilder . toString ()) ĊĠĠĠĠĠĠĠ Ġassert Spans (" foo Ġbar ", Ġbuilder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġappend Null () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠSp anner (" foo ") ĊĊĠĠĠĠĠĠĠ Ġbuilder . append ( null ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" foo ", Ġbuilder . toString ()) ĊĊĠĠĠĠĠĠĠ Ġbuilder . append ( null , Ġbold ()) ĊĠĠĠĠĠĠĠ ĠassertEquals (" foo ", Ġbuilder . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreplace With Null () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠSp anner (" bar ") ĊĊĠĠĠĠĠĠĠ Ġbuilder . replace ( 1 , Ġ 3 , Ġnull , Ġbold ()) ĊĠĠĠĠĠĠĠ ĠassertEquals (" b ", Ġbuilder . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġspan _ text () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Spans ("", ĠSp anner (). span ("", Ġbold ())) ĊĠĠĠĠĠĠĠ Ġassert Spans ("< Style Span > foo </ Style Span >", ĠSp anner (). append (" foo "). span ("", Ġbold ())) ĊĠĠĠĠĠĠĠ Ġassert Spans (" foo Ġ< Style Span > bar </ Style Span >", ĠSp anner (). append (" foo Ġbar "). span (" bar ", Ġbold ())) ĊĠĠĠĠĠĠĠ Ġassert Spans (" foo ", ĠSp anner (). append (" foo "). span (" bar ", Ġbold ())) ĊĠĠĠĠĠĠĠ Ġassert Spans ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< Style Span > bar </ Style Span > Ġfoo Ġ< Style Span > bar </ Style Span >", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSp anner (). append (" bar Ġfoo Ġbar "). span (" bar ", Ġbold ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreplace _ multiple () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsp anner Ġ= ĠSp anner (" foo Ġbar Ġfoo ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" foo ", Ġ" bar ", Ġbold ()) ĊĊĠĠĠĠĠĠĠ Ġassert Spans ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< Style Span > bar </ Style Span > Ġbar Ġ< Style Span > bar </ Style Span >", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsp anner ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġassert Spans ( expected : ĠString , Ġactual : ĠSp anner ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġactual . debug Spans ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠSp ann able . debug Spans (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġall Ġ= Ġget Spans () ĊĊĠĠĠĠĠĠĠ Ġval Ġdebug Text Ġ= ĠStringBuilder ( toString ()) ĊĊĠĠĠĠĠĠĠ Ġvar Ġdelta Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġfun Ġinsert ( index : ĠInt , Ġtext : ĠCharSequence ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Text . insert ( index Ġ+ Ġdelta , Ġtext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelta Ġ+= Ġtext . length ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġall . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġget Span Start ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Ġ= Ġget Span End ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġit . java Class . simple Name ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinsert ( start , Ġ"< $ name >") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinsert ( end , Ġ"</ $ name >") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdebug Text . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠSp ann able . get Spans () Ġ= Ġget Spans ( 0 , Ġlength Ġ- Ġ 1 ) ĊĊĠĠĠ Ġfun ĠSp ann able . get Spans ( start : ĠInt , Ġend : ĠInt ) Ġ= Ġget Spans ( start , Ġend , ĠAny :: class . java ) !! Ċ }