/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ġandroidx . compose . foundation . text . selection Ċ Ċ import Ġandroidx . compose . ui . text . Text Range Ċ import Ġandroidx . compose . ui . text . style . Resolved Text Direction Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . JUnit 4 Ċ Ċ @ RunWith ( JUnit 4 :: class ) Ċ class ĠSelection Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġanchor Info _ constructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdirection Ġ= ĠResolved Text Direction . L tr ĊĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġselect able : ĠSelect able Ġ= Ġmock () ĊĊĠĠĠĠĠĠĠ Ġval Ġanchor Ġ= ĠSelection . Anchor Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Ġ= Ġdirection , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġoffset , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect able Ġ= Ġselect able ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( anchor . direction ). isEqualTo ( direction ) ĊĠĠĠĠĠĠĠ ĠassertThat ( anchor . offset ). isEqualTo ( offset ) ĊĠĠĠĠĠĠĠ ĠassertThat ( anchor . selectable ). isEqualTo ( selectable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġselection _ constructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Offset Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġend Offset Ġ= Ġ 6 ĊĠĠĠĠĠĠĠ Ġval Ġselect able : ĠSelect able Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġval Ġstart Anchor Ġ= ĠSelection . Anchor Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Ġ= ĠResolved Text Direction . L tr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġstart Offset , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect able Ġ= Ġselect able ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġend Anchor Ġ= ĠSelection . Anchor Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Ġ= ĠResolved Text Direction . L tr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġend Offset , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect able Ġ= Ġselect able ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġhandle C ros sed Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= ĠSelection ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġstart Anchor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġend Anchor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandles C ros sed Ġ= Ġhandle C ros sed ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( selection . start ). isEqualTo ( start Anchor ) ĊĠĠĠĠĠĠĠ ĠassertThat ( selection . end ). isEqualTo ( end Anchor ) ĊĠĠĠĠĠĠĠ ĠassertThat ( selection . handles C ros sed ). isEqualTo ( handle C ros sed ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġselection _ merge _ handles _ not _ cross () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Offset 1 Ġ= Ġ 9 ĊĠĠĠĠĠĠĠ Ġval Ġend Offset 1 Ġ= Ġ 2 0 ĊĠĠĠĠĠĠĠ Ġval Ġselect able 1 : ĠSelect able Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġval Ġstart Anchor 1 Ġ= ĠSelection . Anchor Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Ġ= ĠResolved Text Direction . L tr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġstart Offset 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect able Ġ= Ġselect able 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġend Anchor 1 Ġ= ĠSelection . Anchor Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Ġ= ĠResolved Text Direction . L tr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġend Offset 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect able Ġ= Ġselect able 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġselection 1 Ġ= ĠSelection ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġstart Anchor 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġend Anchor 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandles C ros sed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġstart Offset 2 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġend Offset 2 Ġ= Ġ 3 0 ĊĠĠĠĠĠĠĠ Ġval Ġselect able 2 : ĠSelect able Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġval Ġstart Anchor 2 Ġ= ĠSelection . Anchor Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Ġ= ĠResolved Text Direction . L tr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġstart Offset 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect able Ġ= Ġselect able 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġend Anchor 2 Ġ= ĠSelection . Anchor Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Ġ= ĠResolved Text Direction . L tr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġend Offset 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect able Ġ= Ġselect able 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġselection 2 Ġ= ĠSelection ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġstart Anchor 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġend Anchor 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandles C ros sed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= Ġselection 1 . merge ( selection 2 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( selection . start . offset ). isEqualTo ( start Offset 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( selection . end . offset ). isEqualTo ( end Offset 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( selection . start . selectable ). isEqualTo ( selectable 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( selection . end . selectable ). isEqualTo ( selectable 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( selection . handles C ros sed ). isFalse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġselection _ merge _ handles _ cross () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Offset 1 Ġ= Ġ 2 0 ĊĠĠĠĠĠĠĠ Ġval Ġend Offset 1 Ġ= Ġ 9 ĊĠĠĠĠĠĠĠ Ġval Ġselect able 1 : ĠSelect able Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġval Ġstart Anchor 1 Ġ= ĠSelection . Anchor Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Ġ= ĠResolved Text Direction . L tr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġstart Offset 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect able Ġ= Ġselect able 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġend Anchor 1 Ġ= ĠSelection . Anchor Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Ġ= ĠResolved Text Direction . L tr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġend Offset 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect able Ġ= Ġselect able 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġselection 1 Ġ= ĠSelection ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġstart Anchor 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġend Anchor 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandles C ros sed Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġstart Offset 2 Ġ= Ġ 3 0 ĊĠĠĠĠĠĠĠ Ġval Ġend Offset 2 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġselect able 2 : ĠSelect able Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġval Ġstart Anchor 2 Ġ= ĠSelection . Anchor Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Ġ= ĠResolved Text Direction . L tr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġstart Offset 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect able Ġ= Ġselect able 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġend Anchor 2 Ġ= ĠSelection . Anchor Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Ġ= ĠResolved Text Direction . L tr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġend Offset 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect able Ġ= Ġselect able 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġselection 2 Ġ= ĠSelection ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġstart Anchor 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġend Anchor 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandles C ros sed Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= Ġselection 1 . merge ( selection 2 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( selection . start . offset ). isEqualTo ( start Offset 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( selection . end . offset ). isEqualTo ( end Offset 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( selection . start . selectable ). isEqualTo ( selectable 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( selection . end . selectable ). isEqualTo ( selectable 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( selection . handles C ros sed ). isTrue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġselection _ to Text Range _ handles _ not _ cross () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Offset Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġend Offset Ġ= Ġ 6 ĊĠĠĠĠĠĠĠ Ġval Ġstart Anchor Ġ= ĠSelection . Anchor Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Ġ= ĠResolved Text Direction . L tr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġstart Offset , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect able Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġend Anchor Ġ= ĠSelection . Anchor Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Ġ= ĠResolved Text Direction . L tr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġend Offset , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect able Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= ĠSelection ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġstart Anchor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġend Anchor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandles C ros sed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtext Range Ġ= Ġselection . to Text Range () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( text Range ). isEqualTo ( Text Range ( start Offset , Ġend Offset )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġselection _ to Text Range _ handles _ cross () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Offset Ġ= Ġ 6 ĊĠĠĠĠĠĠĠ Ġval Ġend Offset Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġstart Anchor Ġ= ĠSelection . Anchor Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Ġ= ĠResolved Text Direction . L tr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġstart Offset , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect able Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġend Anchor Ġ= ĠSelection . Anchor Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdirection Ġ= ĠResolved Text Direction . L tr , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġend Offset , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect able Ġ= Ġmock () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= ĠSelection ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġstart Anchor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġend Anchor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandles C ros sed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtext Range Ġ= Ġselection . to Text Range () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( text Range ). isEqualTo ( Text Range ( start Offset , Ġend Offset )) ĊĠĠĠ Ġ} Ċ } Ċ