/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 Ġ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 Ġcom . android . man if mer ger Ċ Ċ import Ġcom . android . ide . common . bl ame . SourceFile Position . UNKNOWN Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . junit . Assert . fail Ċ Ċ import Ġcom . android . man if mer ger . Deep Link . Deep Link Exception Ċ import Ġorg . junit . Test Ċ Ċ /** ĠTesting Ġ[ Deep Link ]. Ġ Ġ*/ Ċ class ĠDeep Link Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Schemes () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" https :// www . example . com ", ĠUNKNOWN , Ġfalse ). sche mes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Exactly (" https ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" www . example . com ", ĠUNKNOWN , Ġfalse ). sche mes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Exactly (" http ", Ġ" https ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" file :/// foo ", ĠUNKNOWN , Ġfalse ). sche mes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Exactly (" file ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" file :/ foo ", ĠUNKNOWN , Ġfalse ). sche mes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Exactly (" file ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" file :/ c :/ foo ", ĠUNKNOWN , Ġfalse ). sche mes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Exactly (" file ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġtest Ġsupport Ġfor Ġ'+', Ġ'-', Ġand Ġ'.' Ġas Ġper Ġhttps :// tools . ietf . org / html / rfc 3 9 8 6 # section - 3 . 1 ĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" a + -. :// www . example . com ", ĠUNKNOWN , Ġfalse ). sche mes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. contains Exactly (" a +- .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Schemes Exceptions () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link . from Uri (" http .* :// www . example . com ", ĠUNKNOWN , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Expecting ĠDeep Link Exception ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDeep Link Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshould Ġthrow ĠDeep Link Exception Ġbecause Ġwild cards Ġnot Ġallowed Ġin Ġscheme ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link . from Uri ("% http :// www . example . com ", ĠUNKNOWN , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Expecting ĠDeep Link Exception ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDeep Link Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshould Ġthrow ĠDeep Link Exception Ġbecause Ġof Ġinvalid ĠURI Ġsyntax ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Host () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" https :// foo : bar @ www . example . com / baz ", ĠUNKNOWN , Ġfalse ). host ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo (" www . example . com ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" www . example . com ", ĠUNKNOWN , Ġfalse ). host ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo (" www . example . com ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" www . example . com / c :/ foo ", ĠUNKNOWN , Ġfalse ). host ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo (" www . example . com ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri ("\ ${ application Id }", ĠUNKNOWN , Ġfalse ). host ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ("\ ${ application Id }") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" .* . example . com ", ĠUNKNOWN , Ġfalse ). host ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo (" *. example . com ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" *. example . com ", ĠUNKNOWN , Ġfalse ). host ). isNull () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" file :/// foo ", ĠUNKNOWN , Ġfalse ). host ). isNull () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" file :/ foo ", ĠUNKNOWN , Ġfalse ). host ). isNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Host Exceptions () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link . from Uri (" http :// www .{ placeholder }. com ", ĠUNKNOWN , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Expecting ĠDeep Link Exception ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDeep Link Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshould Ġthrow ĠDeep Link Exception Ġbecause Ġhost Ġwild cards Ġmust Ġbe Ġat Ġbeginning Ġof Ġhost ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link . from Uri (" http :// www .{ . com ", ĠUNKNOWN , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Expecting ĠDeep Link Exception ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDeep Link Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshould Ġthrow ĠDeep Link Exception Ġbecause Ġof Ġinvalid ĠURI Ġsyntax ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Port () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" https :// foo : bar @ www . example . com : 2 0 0 / baz ", ĠUNKNOWN , Ġfalse ). port ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 2 0 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" www . example . com : 2 0 1 ", ĠUNKNOWN , Ġfalse ). port ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( 2 0 1 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" www . example . com ", ĠUNKNOWN , Ġfalse ). port ). isEqualTo (- 1 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" www . example . com : foo ", ĠUNKNOWN , Ġfalse ). port ). isEqualTo (- 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Path () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link . from Uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// foo : bar @ www . example . com / baz ? query # fragment ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUNKNOWN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ("/ baz ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" www . example . com ", ĠUNKNOWN , Ġfalse ). path ). isEqualTo ("/") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" www . example . com / c :/ foo ", ĠUNKNOWN , Ġfalse ). path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ("/ c :/ foo ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri ("/ foo ", ĠUNKNOWN , Ġfalse ). path ). isEqualTo ("/ foo ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri ("/ c :/ foo ", ĠUNKNOWN , Ġfalse ). path ). isEqualTo ("/ c :/ foo ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" file :/// foo ", ĠUNKNOWN , Ġfalse ). path ). isEqualTo ("/ foo ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" file :/ foo ", ĠUNKNOWN , Ġfalse ). path ). isEqualTo ("/ foo ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" file :/ foo .* ", ĠUNKNOWN , Ġfalse ). path ). isEqualTo ("/ foo .* ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" file :/ foo { placeholder }", ĠUNKNOWN , Ġfalse ). path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ("/ foo .* ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" file :/ foo \ ${ application Id }", ĠUNKNOWN , Ġfalse ). path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ("/ foo \ ${ application Id }") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" file : /{ 1 } foo { 2 }", ĠUNKNOWN , Ġfalse ). path ). isEqualTo ("/ .* foo .* ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Path Exceptions () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link . from Uri (" http :// www . example . com /{{ nested }} ", ĠUNKNOWN , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Expecting ĠDeep Link Exception ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDeep Link Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshould Ġthrow ĠDeep Link Exception Ġbecause Ġof Ġinvalid ĠURI Ġsyntax ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link . from Uri (" http :// www . example . com / h anging {", ĠUNKNOWN , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Expecting ĠDeep Link Exception ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDeep Link Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshould Ġthrow ĠDeep Link Exception Ġbecause Ġof Ġinvalid ĠURI Ġsyntax ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link . from Uri (" http :// www . example . com / nested / h anging {{ }", ĠUNKNOWN , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Expecting ĠDeep Link Exception ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDeep Link Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshould Ġthrow ĠDeep Link Exception Ġbecause Ġof Ġinvalid ĠURI Ġsyntax ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest SourceFile Position () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" http :// www . example . com ", ĠUNKNOWN , Ġfalse ). source File Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( UNKNOWN ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Auto Verify () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" http :// www . example . com ", ĠUNKNOWN , Ġfalse ). is Auto Verify ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isFalse () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( Deep Link . from Uri (" http :// www . example . com ", ĠUNKNOWN , Ġtrue ). is Auto Verify ). isTrue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Choose Encoder () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġencoder Ġ= ĠDeep Link . Deep Link Uri ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. choose Encoder (" http :// www . example . com ", Ġ' w ', Ġ' x ') ĊĠĠĠĠĠĠĠ ĠassertThat ( encoder ). isEqualTo (" ww ww x ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Choose Encoder Exceptions () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDeep Link . Deep Link Uri . choose Encoder (" file :/// foo ", Ġ' a ', Ġ' a ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Expecting ĠIllegalArgumentException ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshould Ġthrow ĠIllegalArgumentException Ġbecause Ġchar 1 Ġand Ġchar 2 Ġmust Ġbe Ġdifferent ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ