package Ġpl . m are k lang iew ic z . my utils Ċ Ċ import Ġorg . junit . Ignore Ċ import Ġorg . junit . Test Ċ import Ġpl . m are k lang iew ic z . up ue . Assert Ċ import Ġpl . m are k lang iew ic z . up ue . Is EqualTo Ċ import Ġpl . m are k lang iew ic z . up ue . That Ċ import Ġjava . lang . String . format Ċ import Ġjava . lang . System . currentTimeMillis Ċ import Ġjava . util .* Ċ import Ġjava . util . regex . Pattern Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠM are k ĠLang iew ic z Ġon Ġ 2 9 . 0 9 . 1 5 . Ċ Ġ*/ Ċ class ĠMy Commands Test Ġ{ ĊĊĠĠĠ Ġval Ġlog Ġ= ĠMy System Logger () ĊĊĠĠĠ Ġ@ Ignore Ġ@ Test Ġfun Ġtest Something () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġd 1 Ġ= ĠDate () ĊĠĠĠĠĠĠĠ Ġval Ġd 2 Ġ= ĠDate () ĊĠĠĠĠĠĠĠ Ġlog . i ( d 1 . str ) ĊĠĠĠĠĠĠĠ Ġlog . i ( d 2 . str ) ĊĠĠĠĠĠĠĠ Ġlog . i ( format ("% b ", Ġd 1 Ġ== Ġd 2 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġl 1 Ġ= ĠcurrentTime Millis () ĊĠĠĠĠĠĠĠ Ġval Ġl 2 Ġ= ĠcurrentTime Millis () ĊĠĠĠĠĠĠĠ Ġlog . i ( format ("% d ", Ġl 1 )) ĊĠĠĠĠĠĠĠ Ġlog . i ( format ("% d ", Ġl 2 )) ĊĠĠĠĠĠĠĠ Ġlog . i ( format ("% b ", Ġl 1 Ġ== Ġl 2 )) ĊĠĠĠĠĠĠĠ ĠAssert ĠThat Ġl 1 ĠIs EqualTo Ġl 2 ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġtest RE ( re : ĠString , Ġgroup Count : ĠInt , Ġmatch Whole String : ĠBoolean , Ġshould Match : ĠBoolean , Ġvar arg Ġstrings : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpattern Ġ= ĠPattern . compile ( re ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( s Ġin Ġstrings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= Ġpattern . matcher ( s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatches Ġ= Ġif Ġ( match Whole String ) Ġmatcher . matches () Ġelse Ġmatcher . looking At () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . d (" RE :\" $ re \" Ġ${ if Ġ( matches ) Ġ" matches " Ġelse Ġ" does Ġnot Ġmatch "} Ġ${ if Ġ( match Whole String ) Ġ" whole " Ġelse Ġ" looking Ġat "} Ġtext : Ġ\"$ s \" ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert ĠThat Ġmatcher . group Count () ĠIs EqualTo Ġgroup Count . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert ĠThat Ġmatches ĠIs EqualTo Ġshould Match ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( matches ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. group Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . d ( format (" ĠĠ Ġgroup Ġ% d : Ġ\"% s \"", Ġi , Ġmatcher . group ( i ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest Simple RE () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġre Ġ= Ġ"^ activity Ġ(? = \\ S * \\ .) ([ _ \\ ./ a - zA - Z 0 - 9 ]*) " ĊĠĠĠĠĠĠĠ Ġtest RE ( re , Ġ 1 , Ġtrue , Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" activity Ġ. My Activity ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" activity Ġ. My / Activity ") ĊĠĠĠĠĠĠĠ Ġtest RE ( re , Ġ 1 , Ġtrue , Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" activity ĠMy Activity ") ĊĊĠĠĠĠĠĠĠ Ġval Ġar ule Ġ= ĠRE _ ACTIVITY _ GROUP . rules [ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġar ule . apply (" activity Ġ. My Activity ", Ġlog ) ĊĠĠĠĠĠĠĠ Ġlog . w (" Result : Ġ$ result ") ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest RE _ ID () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest RE ( RE _ ID , Ġ 1 , Ġtrue , Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fd js kl ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" RR 9 8 9 d la ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"_ 2 2 2 z ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"_ ") ĊĠĠĠĠĠĠĠ Ġtest RE ( RE _ ID , Ġ 1 , Ġtrue , Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġfd js kl ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" a Ġb ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 9 RR 9 8 9 d la ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest RE _ MULTI _ ID () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtest RE ( RE _ MULTI _ ID , Ġ 4 , Ġtrue , Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fd js kl / fd j ks ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fd js kl . fd j ks ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" RR 9 8 9 d la ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" a / b / c . d . e . f ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ". RR 9 8 9 d la ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"_ 2 2 2 z . a . a . a . b . d ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ._ ") ĊĠĠĠĠĠĠĠ Ġtest RE ( RE _ MULTI _ ID , Ġ 4 , Ġtrue , Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġfd js kl ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" aaa .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ d la ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" a Ġb ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ". 2 f jd sk l ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest RE _ EXTRA _ TYPE () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtest RE ( RE _ EXTRA _ TYPE , Ġ 1 , Ġtrue , Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" string ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" integer ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" short ") ĊĠĠĠĠĠĠĠ Ġtest RE ( RE _ EXTRA _ TYPE , Ġ 1 , Ġtrue , Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" object ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" integer . string ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest RE _ KEYWORD () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtest RE ( RE _ KEYWORD , Ġ 1 , Ġtrue , Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" start ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" category ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" extra ") ĊĠĠĠĠĠĠĠ Ġtest RE ( RE _ KEYWORD , Ġ 1 , Ġtrue , Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" object ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" action Ġstart ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest RE _ VALUE () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġwe Ġwill Ġtry Ġto Ġshow Ġthat Ġour ĠRE _ VALUE Ġis Ġnot Ġg reedy .. ĊĠĠĠĠĠĠĠ Ġval Ġtxt Ġ= Ġ" yyyy R yyyy R yyyy R yyyy R yyyy " ĊĠĠĠĠĠĠĠ Ġval Ġg val Ġ= Ġ"( .* )" ĊĠĠĠĠĠĠĠ Ġval Ġl val = ĠRE _ VALUE ĊĠĠĠĠĠĠĠ Ġtest RE ( g val Ġ+ Ġ" R " Ġ+ Ġg val Ġ+ Ġ" R " Ġ+ Ġg val , Ġ 3 , Ġfalse , Ġtrue , Ġtxt ) ĊĠĠĠĠĠĠĠ Ġtest RE ( l val Ġ+ Ġ" R " Ġ+ Ġl val Ġ+ Ġ" R " Ġ+ Ġl val , Ġ 3 , Ġfalse , Ġtrue , Ġtxt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Ignore Ġ@ Test Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġtest RE _ END () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// TODO ĠSO MED AY ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest RE _ SEGMENT () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtest RE ( RE _ SEGMENT , Ġ 4 , Ġfalse , Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" extra Ġb la Ġble Ġble ee ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" extra Ġb la Ġaction Ġx ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" extra Ġb la Ġact on Ġx ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" extra Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" action Ġxxx Ġcomponent Ġa . b . c ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" component Ġa / b . c . d Ġble ee ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" component Ġa / b . c . d Ġstart Ġservice ") ĊĠĠĠĠĠĠĠ Ġtest RE ( RE _ SEGMENT , Ġ 4 , Ġfalse , Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" extr rr a Ġb la Ġble Ġble ee ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" extra ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest RE _ EXTRA _ ELEM () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtest RE ( RE _ EXTRA _ ELEM , Ġ 7 , Ġtrue , Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" integer Ġb la Ġble Ġble ee ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" string Ġaction Ġx ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" integer Ġval Ġ 7 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" float Ġf Ġ 2 2 2 . 3 3 3 ") ĊĠĠĠĠĠĠĠ Ġtest RE ( RE _ EXTRA _ ELEM , Ġ 7 , Ġtrue , Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" extr rr a Ġb la Ġble Ġble ee ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" extra Ġinteger Ġval Ġ 7 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" integer Ġ 7 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest RE _ EXTRA _ ELEM _ TYPE _ AND _ KEY () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtest RE ( RE _ EXTRA _ ELEM _ TYPE _ AND _ KEY , Ġ 6 , Ġtrue , Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" integer Ġb la ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" string Ġk ke ey y ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" integer Ġval ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" float Ġf lf ") ĊĠĠĠĠĠĠĠ Ġtest RE ( RE _ EXTRA _ ELEM _ TYPE _ AND _ KEY , Ġ 6 , Ġtrue , Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" integer Ġb la Ġble ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" extr rr a Ġb la Ġble Ġble ee ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" integer Ġval Ġ 7 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" integer Ġ 7 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"") ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test Ġfun Ġtest RE _ R ULES () Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . i ( RE _ R ULES [ 0 ]. str ) ĊĠĠĠĠĠĠĠ Ġlog . i ( RE _ R ULES [ 1 ]. str ) ĊĠĠĠĠĠĠĠ Ġlog . i ( RE _ R ULES [ 2 ]. str ) ĊĠĠĠĠĠĠĠ Ġlog . i ( RE _ R ULES [ 3 ]. str ) ĊĠĠĠĠĠĠĠ Ġlog . i ( RE _ R ULES [ 4 ]. str ) ĊĠĠĠĠĠĠĠ Ġlog . i ( RE _ R ULES [ 5 ]. str ) ĊĠĠĠĠĠĠĠ Ġlog . i ( RE _ R ULES [ 6 ]. str ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġtest Apply All R ER ules ( input : ĠString , Ġexpected : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcommand Ġ= ĠRE _ R ULES . apply All Groups ( input , Ġlog ) ĊĠĠĠĠĠĠĠ ĠAssert ĠThat Ġcommand ĠIs EqualTo Ġexpected ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmulti Test Apply All R ER ules ( inputs : ĠList < String >, Ġexpected : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( input Ġin Ġinputs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Apply All R ER ules ( input , Ġexpected ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test Ġfun Ġtest Alarm Rules () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġexpected Ġ= Ġ" action Ġandroid . intent . action . SET _ ALARM Ġextra Ġinteger Ġandroid . intent . extra . alarm . HOUR Ġ 1 Ġextra Ġinteger Ġandroid . intent . extra . alarm . MIN UTES Ġ 0 " ĊĠĠĠĠĠĠĠ Ġvar Ġcommands Ġ= ĠArrays . asList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set Ġalarm Ġat Ġ 1 Ġ 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set Ġan Ġalarm Ġat Ġ 1 Ġ 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set Ġan Ġalarm ; for Ġ 1 ; 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set Ġalarm Ġto Ġ 1 : 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set ; an ; alarm ; to ; 1 ; 0 ") ĊĊĠĠĠĠĠĠĠ Ġmulti Test Apply All R ER ules ( commands , Ġexpected ) ĊĊĊĠĠĠĠĠĠĠ Ġexpected Ġ= Ġ" action Ġandroid . intent . action . SET _ ALARM Ġextra Ġinteger Ġandroid . intent . extra . alarm . HOUR Ġ 2 Ġextra Ġinteger Ġandroid . intent . extra . alarm . MIN UTES Ġ 5 9 Ġextra Ġboolean Ġandroid . intent . extra . alarm . SKIP _ UI Ġtrue " ĊĠĠĠĠĠĠĠ Ġcommands Ġ= ĠArrays . asList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set Ġalarm Ġat Ġ 2 Ġ 5 9 Ġquickly ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set Ġan Ġalarm ; for Ġ 2 ; 5 9 Ġquickly ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set ; an ; alarm ; to ; 2 ; 5 9 ; quick ly ") ĊĊĠĠĠĠĠĠĠ Ġmulti Test Apply All R ER ules ( commands , Ġexpected ) ĊĊĠĠĠĠĠĠĠ Ġexpected Ġ= Ġ" action Ġandroid . intent . action . SET _ ALARM Ġextra Ġinteger Ġandroid . intent . extra . alarm . HOUR Ġ 2 Ġextra Ġinteger Ġandroid . intent . extra . alarm . MIN UTES Ġ 5 9 Ġextra Ġstring Ġandroid . intent . extra . alarm . MESSAGE Ġb la Ġb lee " ĊĠĠĠĠĠĠĠ Ġcommands Ġ= ĠArrays . asList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set Ġalarm Ġat Ġ 2 Ġ 5 9 Ġwith Ġmessage Ġb la Ġb lee ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set Ġan Ġalarm ; for Ġ 2 ; 5 9 Ġwith Ġmessage Ġb la Ġb lee ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set ; an ; alarm ; to ; 2 ; 5 9 ; Ġwith ; message ; bl a ; ble e ") ĊĊĠĠĠĠĠĠĠ Ġmulti Test Apply All R ER ules ( commands , Ġexpected ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest Timer Rules () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ" action Ġandroid . intent . action . SET _ TIMER Ġextra Ġinteger Ġandroid . intent . extra . alarm . LENGTH Ġ 3 0 " ĊĠĠĠĠĠĠĠ Ġval Ġcommands Ġ= ĠArrays . asList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set Ġtimer Ġat Ġ 3 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set Ġa Ġtimer Ġfor Ġ 3 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set ; a ; timer ; for ; 3 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" set Ġtimer Ġto Ġ 3 0 Ġseconds ") ĊĊĠĠĠĠĠĠĠ Ġmulti Test Apply All R ER ules ( commands , Ġexpected ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest Activity Rules () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtest Apply All R ER ules (" start Ġactivity Ġcomponent ĠMy Activity ", Ġ" start Ġactivity Ġcomponent ĠMy Activity ") ĊĠĠĠĠĠĠĠ Ġtest Apply All R ER ules (" start Ġactivity Ġcomponent Ġb la . My Activity ", Ġ" start Ġactivity Ġcomponent Ġb la . My Activity ") ĊĠĠĠĠĠĠĠ Ġtest Apply All R ER ules (" start Ġactivity Ġcomponent Ġ. My Activity ", Ġ" start Ġactivity Ġcomponent Ġ. My Activity ") ĊĠĠĠĠĠĠĠ Ġtest Apply All R ER ules (" start Ġactivity ĠMy Activity ", Ġ" start Ġactivity ĠMy Activity ") Ġ// WARNING : Ġwe Ġdo ĠNOT Ġrecognize Ġthis Ġkind Ġof Ġshortcut ! ĊĠĠĠĠĠĠĠ Ġtest Apply All R ER ules (" activity Ġcomponent ĠMy Activity ", Ġ" start Ġactivity Ġcomponent ĠMy Activity ") ĊĠĠĠĠĠĠĠ Ġtest Apply All R ER ules (" activity Ġdata Ġhttp :// bl ab la ", Ġ" start Ġactivity Ġdata Ġhttp :// bl ab la ") ĊĠĠĠĠĠĠĠ Ġtest Apply All R ER ules (" activity Ġ. My Activity ", Ġ" start Ġactivity Ġcomponent Ġ. My Activity ") ĊĠĠĠĠĠĠĠ Ġtest Apply All R ER ules (" activity Ġb . la Ġaction Ġview ", Ġ" start Ġactivity Ġcomponent Ġb . la Ġaction Ġandroid . intent . action . VIEW ") ĊĠĠĠĠĠĠĠ Ġtest Apply All R ER ules (" activity Ġaction Ġview ", Ġ" start Ġactivity Ġaction Ġandroid . intent . action . VIEW ") ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test Ġfun Ġtest Fragment Rules () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtest Apply All R ER ules (" start Ġfragment Ġcomponent Ġa . b . c . My X Fragment ", Ġ" start Ġfragment Ġcomponent Ġa . b . c . My X Fragment ") ĊĠĠĠĠĠĠĠ Ġtest Apply All R ER ules (" fragment Ġa . b . c . My X Fragment ", Ġ" start Ġfragment Ġcomponent Ġa . b . c . My X Fragment ") ĊĠĠĠĠĠĠĠ Ġtest Apply All R ER ules (" fragment Ġ. bl a Ġaction Ġview ", Ġ" start Ġfragment Ġcomponent Ġ. bl a Ġaction Ġandroid . intent . action . VIEW ") ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġtest My Command Parsing () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcommands Ġ= ĠArrays . asList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" action Ġb Ġdata Ġd ;", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" action Ġx . y . z ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" extra Ġinteger Ġa . b . c . d Ġ 6 6 7 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" action Ġsend Ġdata Ġhttp :// bl ab la . bl ab la . com / path / to / something Ġextra Ġboolean Ġchecked Ġtrue ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" action Ġa . b . X . Y Ġextra Ġstring Ġb la Ġbl ab la Ġextra Ġinteger Ġs atan Ġ 6 6 6 Ġtask Ġhe ll ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( command Ġin Ġcommands ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . i (" ######## ####### Ġparsing Ġcommand : Ġ$ command ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy cmd Ġ= ĠMy Command ( command , ĠRE _ R ULES , Ġlog ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . i (" ######## ####### Ġresult : Ġ${ my cmd . str }") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĊĠĠĠĠĠĠĠ Ġ@ Test ( expected Ġ= ĠIllegalArgumentException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġtest My Command Parsing Error () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextra Ġ= Ġ" extra Ġunt iger Ġandroid . intent . extra . alarm . LENGTH Ġ 5 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy cmd Ġ= ĠMy Command ( extra , ĠRE _ R ULES , Ġlog ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . w ( my cmd . str ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊ Ċ }