package Ġcom . android . samples . kotlin Ċ Ċ import Ġcom . android . samples . kotlin . basic . grammar .* Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . Argument Captor Ċ Ċ /** Ċ Ġ* Author : lin hu Ċ Ġ* Email : lh zh eng @ grand stream . cn Ċ Ġ* Date : 1 9 - 2 - 2 5 Ċ Ġ*/ Ċ class ĠMockito Kotlin Helpers Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns ĠArgument Captor . capture () Ġas Ġnullable Ġtype Ġto Ġavoid Ġjava . lang . IllegalStateException ĊĠĠĠĠ Ġ* Ġwhen Ġnull Ġis Ġreturned . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġcapture ( argument Captor : ĠArgument Captor < T >): ĠT Ġ= Ġargument Captor . capture () ĊĊĠĠĠ Ġvar Ġlang Pr ac : ĠLess on 0 1 _ Basic Lang Grammar Ġ= ĠLess on 0 1 _ Basic Lang Grammar . getInstance () ĊĊĠĠĠ Ġvar ĠdataType : ĠLess on 0 2 _ Basic DataType Ġ= ĠLess on 0 2 _ Basic DataType . getInstance () ĊĊĠĠĠ Ġvar Ġcondition And Loop : ĠLess on 0 3 _ Condition And Loop Ġ= ĠLess on 0 3 _ Condition And Loop . getInstance () ĊĊĠĠĠ Ġvar Ġclass And Obj : ĠLess on 0 4 _ Class And Object Ġ= ĠLess on 0 4 _ Class And Object . getInstance () ĊĊĠĠĠ Ġvar Ġclass Inheritance And Interface : ĠLess on 0 5 _ Class Inheritance And Interface Ġ= ĠLess on 0 5 _ Class Inheritance And Interface . getInstance () ĊĊĠĠĠ Ġvar Ġkotlin Extend : ĠLess on 0 6 _ Kotlin Extend Ġ= ĠLess on 0 6 _ Kotlin Extend . getInstance () ĊĊĠĠĠ Ġvar Ġdata Class : ĠLess on 0 7 _ Data Class And Se aled CL ass Ġ= ĠLess on 0 7 _ Data Class And Se aled CL ass . getInstance () ĊĊĠĠĠ Ġvar Ġgeneric Type : ĠLess on 0 8 _ GenericType Ġ= ĠLess on 0 8 _ GenericType . getInstance () ĊĊĠĠĠ Ġvar Ġenum Class : ĠLess on 0 9 _ Enum Class Ġ= ĠLess on 0 9 _ Enum Class . getInstance () ĊĊĠĠĠ Ġvar Ġcoroutine : ĠLess on 1 2 _ Coroutine Ġ= ĠLess on 1 2 _ Coroutine . getInstance () ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġprint (" before Ġtest \ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 1 . Ġ åŁºæľ¬ è¯Ńæ³ķ æµĭè¯ķ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Main (){ ĊĠĠĠĠĠĠĠ Ġ// [ 1 , 2 , 3 ] ĊĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠarrayOf ( 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġa ) Ġprint (" a Ġitem Ġ= Ġ$ item Ġ\ n ") ĊĠĠĠĠĠĠĠ Ġ// [ 0 , 2 , 4 ] ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠArray ( 3 , Ġ{ Ġi Ġ-> Ġ( i Ġ* Ġ 2 ) Ġ}) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġb . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" b Ġarray Ġitem Ġ= Ġ"+ ( b [ i ]) +"\ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġstr Ġ= ĠarrayOf (" 1 2 3 ", Ġ" 4 5 6 ", Ġ" 7 8 9 ") ĊĠĠĠĠĠĠĠ Ġlang Pr ac . main ( str ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 2 . Ġåĩ½æķ° å®ļä¹ī æµĭè¯ķ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Vars () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlang Pr ac . vars ( 1 , 2 , 4 , 6 ) ĊĠĠĠĠĠĠĠ Ġprint ("\ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Sum (){ ĊĠĠĠĠĠĠĠ Ġlang Pr ac . sum Lambda Test ( 3 , Ġ 6 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 5 . å¸¸ éĩı ä¸İ åıĺéĩı ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Const And Var (){ ĊĠĠĠĠĠĠĠ Ġlang Pr ac . const And Var () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 6 . Ġ åŃĹç¬¦ä¸² æ¨¡æĿ¿ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest String Template (){ ĊĠĠĠĠĠĠĠ Ġlang Pr ac . string Template () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 7 . ĠNULL æ£ĢæŁ¥ æľºåĪ¶ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Null (){ ĊĠĠĠĠĠĠĠ Ġ// lang Pr ac . test Null ( null ) ĠæĬ Ľ åĩº NullPointerException ĊĠĠĠĠĠĠĠ Ġ// lang Pr ac . test Null (" abc ") ĠæĬ Ľ åĩº ĠNumber FormatException ĊĠĠĠĠĠĠĠ Ġlang Pr ac . test Null (" 1 2 3 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Return Null (){ ĊĠĠĠĠĠĠĠ Ġval ĠintArray Ġ= ĠarrayOf (" 1 2 ", Ġ" 3 4 ") ĊĠĠĠĠĠĠĠ Ġlang Pr ac . return Null ( int Array )// æŃ£å¸¸ ĊĊĠĠĠĠĠĠĠ Ġval ĠstringArray Ġ= ĠarrayOf (" 1 2 ab ", Ġ" 3 4 ab ") ĊĠĠĠĠĠĠĠ Ġlang Pr ac . return Null ( string Array )// æĬĽ åĩº Number FormatException ĊĊĠĠĠĠĠĠĠ Ġ// lang Pr ac . return Null ( array Of ( null , Ġ" 3 4 ab ")) // æŃ£å¸¸ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 8 . Ġ ç±»åŀĭ æ£Ģæµĭ åıĬ èĩªåĬ¨ ç±»åŀĭ è½¬æį¢ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠgetString Length (){ ĊĠĠĠĠĠĠĠ Ġlang Pr ac . getString Length (" abc ") ĊĠĠĠĠĠĠĠ Ġlang Pr ac . getString Length 1 ( 1 0 ) ĊĠĠĠĠĠĠĠ Ġlang Pr ac . getString Length 2 (' a ') ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 9 . åĮº éĹ´ æµĭè¯ķ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrange Test (){ ĊĠĠĠĠĠĠĠ Ġlang Pr ac . range Sample () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 1 0 . Ġ æķ°åŃĹ æ¯Ķè¾ĥ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġnum Compare Test (){ ĊĠĠĠĠĠĠĠ ĠdataType . num Compare () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 1 1 . Ġ ç±»åŀĭ è½¬æį¢ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtype Switch Test (){ ĊĠĠĠĠĠĠĠ ĠdataType . type Switch () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 1 2 . Ġ ä½į æĵįä½ľ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġbits Oper ate Test (){ ĊĠĠĠĠĠĠĠ ĠdataType . bits Oper ate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 1 3 . Ġ åŃĹç¬¦ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdecimal Digit Value Test (){ ĊĠĠĠĠĠĠĠ ĠdataType . decimal Digit Value (' a ') ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 1 4 . Ġ éĢ»è¾ĳ æĵįä½ľ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġbool Op Test (){ ĊĠĠĠĠĠĠĠ ĠdataType . bool Op () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 1 5 . æķ°ç»Ħ æĵįä½ľ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġarray Op Test (){ ĊĠĠĠĠĠĠĠ ĠdataType . array Op () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 1 6 . åŃĹç¬¦ä¸² æĵįä½ľ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġstring Op Sample Test (){ ĊĠĠĠĠĠĠĠ ĠdataType . string Sample () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 1 7 . Ġ åŃĹç¬¦ä¸² æ¨¡æĿ¿ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġstring Temp a lete (){ ĊĠĠĠĠĠĠĠ ĠdataType . string Template Sample () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 1 8 . Ġif æĿ¡ä»¶ åĪ¤æĸŃ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcondition Test (){ ĊĠĠĠĠĠĠĠ Ġcondition And Loop . if Condition ( 3 , 2 ) ĊĠĠĠĠĠĠĠ Ġcondition And Loop . when Condition () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 1 9 . Ġfor å¾ªçİ¯ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfor Loop Test (){ ĊĠĠĠĠĠĠĠ Ġcondition And Loop . sample For Loop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 2 0 . Ġwhile Ġ&& Ġdo ... while å¾ªçİ¯ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhile Loop Test (){ ĊĠĠĠĠĠĠĠ Ġcondition And Loop . sample For While () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 2 1 . ĠBreak ĠåĴĮ Continue ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreturn And Break Test (){ ĊĠĠĠĠĠĠĠ Ġcondition And Loop . return And Break () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 2 2 . ĠLabel Ġè¿ĶåĽŀ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlabel Sample Test (){ ĊĠĠĠĠĠĠĠ Ġcondition And Loop . label Sample () ĊĠĠĠĠĠĠĠ Ġcondition And Loop . label Return Sample () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 2 3 . Ġ æŀĦéĢł åĩ½æķ° ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconstructor Test (){ ĊĠĠĠĠĠĠĠ Ġclass And Obj . test Constructor () ĊĠĠĠĠĠĠĠ Ġclass And Obj . test Constructor 2 () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 2 4 . Ġ åĮ ¿ åĲį åĨħéĥ¨ ç±» ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġanonymous Class Test (){ ĊĠĠĠĠĠĠĠ Ġclass And Obj . anonymous Class () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 2 5 . Ġ ç»§æī¿ åŃĲ ç±» æľī ä¸» æŀĦéĢł åĩ½æķ° ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġclass In her i Test (){ ĊĠĠĠĠĠĠĠ Ġclass Inheritance And Interface . class Inheritance Test 1 () ĊĠĠĠĠĠĠĠ Ġclass Inheritance And Interface . test No Main Constr utor () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 2 6 . Ġ ç»§æī¿ å¤ļä¸ª ç±»çļĦ åĲĮ ä¸Ģä¸ª æĸ¹æ³ķ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Multi Fun (){ ĊĠĠĠĠĠĠĠ Ġclass Inheritance And Interface . extends Multi Class () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 2 7 . Ġ å¤į åĨĻ ç±» å±ŀæĢ§ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest File d Override (){ ĊĠĠĠĠĠĠĠ Ġclass Inheritance And Interface . test For Attr Override () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 2 8 . æİ¥åı£ æµĭè¯ķ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Interface (){ ĊĠĠĠĠĠĠĠ Ġclass Inheritance And Interface . main Interface () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 2 9 . Ġ æİ¥åı£ å±ŀæĢ§ æµĭè¯ķ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Interface Attr (){ ĊĠĠĠĠĠĠĠ Ġclass Inheritance And Interface . main Test Inter f Attr () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 3 0 . Ġ æİ¥åı£ åĩ½æķ° éĩį åĨĻ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Method Override (){ ĊĠĠĠĠĠĠĠ Ġclass Inheritance And Interface . main TestMethod Override () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 3 1 . ĠKotlin æī©å±ķ åĩ½æķ° ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Kotlin Extend (){ ĊĠĠĠĠĠĠĠ Ġ// user ç±» æ·»åĬł æī©å±ķ åĩ½æķ° ĊĠĠĠĠĠĠĠ Ġkotlin Extend . user Extend () ĊĠĠĠĠĠĠĠ Ġ// ä¸º Mutable List æ·»åĬł æī©å±ķ åĩ½æķ° ĊĠĠĠĠĠĠĠ Ġkotlin Extend . mutable List Extend () ĊĠĠĠĠĠĠĠ Ġ// æī©å±ķ åĩ½æķ° æĺ¯ éĿĻæĢģ è§£æŀĲ çļĦ ĊĠĠĠĠĠĠĠ Ġkotlin Extend . static Parse () ĊĠĠĠĠĠĠĠ Ġ// æī©å±ķ åĩ½æķ° åĴĮ æĪĲåĳĺ åĩ½æķ° åĲĮ åĲį ï¼Į åĪĻ æľī éĻĲ è°ĥçĶ¨ æĪĲåĳĺ åĩ½æķ° ĊĠĠĠĠĠĠĠ Ġkotlin Extend . extend Fun Same With Mem Fun () ĊĠĠĠĠĠĠĠ Ġ// æī©å±ķ ä¸Ģä¸ª ç©º å¯¹è±¡ ĊĠĠĠĠĠĠĠ Ġkotlin Extend . extend Null Obj () ĊĠĠĠĠĠĠĠ Ġ// æī©å±ķ å±ŀæĢ§ ĊĠĠĠĠĠĠĠ Ġkotlin Extend . extend Property () ĊĠĠĠĠĠĠĠ Ġ// æī©å±ķ ä¼ ´ çĶŁ å¯¹è±¡ ĊĠĠĠĠĠĠĠ Ġkotlin Extend . comp anion Obj Extend () ĊĊĠĠĠĠĠĠĠ Ġ// æī©å±ķ å£°æĺİ ä¸º æĪĲåĳĺ ĊĠĠĠĠĠĠĠ Ġkotlin Extend . extend Declare Mem () ĊĊĠĠĠĠĠĠĠ Ġ// æī©å±ķ å£°æĺİ ä¸º æĪĲåĳĺ ï¼Į å¯¹ åĪĨ åıĳ æİ¥åıĹ èĢħ æĺ¯ èĻļæĭŁ çļĦ ĊĠĠĠĠĠĠĠ Ġkotlin Extend . test Extend Open () ĊĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 3 2 . Ġ ä¼ ´ éļı ç±»çļĦ è¡¥ åħħ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Kotlin Sup ple (){ ĊĠĠĠĠĠĠĠ Ġkotlin Extend . test Class Comp () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 3 3 . æķ°æį® ç±» å®ŀçİ° ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestData Class (){ ĊĠĠĠĠĠĠĠ Ġdata Class . testData Class () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// 4 0 . Ġæµ ĭ è¯ķ åįı ç¨ĭ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Coroutine (){ ĊĠĠĠĠĠĠĠ Ġcoroutine . first Coroutine Program () ĊĊĠĠĠĠĠĠĠ Ġcoroutine . test Thread And Sleep () ĊĊĠĠĠĠĠĠĠ Ġcoroutine . test Block () ĊĊĠĠĠĠĠĠĠ Ġcoroutine . delegate Main Fun () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// 4 1 . Ġ ä½ľçĶ¨ åŁŁ æŀĦå»º åĻ¨ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Scope Builder (){ ĊĠĠĠĠĠĠĠ Ġcoroutine . test Scope Builder () ĊĊĠĠĠĠĠĠĠ Ġ// åįı ç¨ĭ å¾Ī è½» éĩı ĊĠĠĠĠĠĠĠ Ġcoroutine . test Light Coroutine () ĊĊĠĠĠĠĠĠĠ Ġ// åħ¨å±Ģ åįı ç¨ĭ ï¼Į å®Ī æĬ¤ çº¿ç¨ĭ ĊĠĠĠĠĠĠĠ Ġcoroutine . test Global Coroutine () ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun Ġafter Test (){ ĊĠĠĠĠĠĠĠ Ġprint (" after Ġtest Ġ") ĊĠĠĠ Ġ} ĊĊ Ċ }