package Ġcom . mic key 3 0 5 . foundation . kot ext . v 3 Ċ Ċ import Ġcom . mic key 3 0 5 . foundation . kot ext . v 3 . lang . I Se qu encer Ċ import Ġcom . mic key 3 0 5 . foundation . v 3 . util . Log Ċ import Ġorg . apache . commons . lang 3 . tuple . Pair Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġjava . util . ArrayList Ċ Ċ class ĠExtensions Test Ġ: ĠI Se qu encer Ġ{ ĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun ĠtestCase _ 0 1 _ 0 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġleft : Ġinput Ġdata , Ġright : Ġoutput Ġdata ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= ĠArrayList < Pair < String , ĠString >>() ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" test ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" Ġtest Ġ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" test Ġ Ġ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" Ġ Ġtest ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" ãĢĢ test ãĢĢ ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" test ãĢĢ ãĢĢ ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" ãĢĢ ãĢĢ test ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" test ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ t test \ t ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" test \ t \ t ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ t \ t test ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ nt est \ n ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" test \ n \ n ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n \ nt est ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ r test \ r ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" test \ r \ r ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ r \ r test ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ r \ nt est \ r \ n ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" test \ r \ n \ r \ n ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ r \ n \ r \ nt est ", Ġ" test ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" te Ġst ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" Ġte Ġst Ġ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" te Ġst Ġ Ġ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" Ġ Ġte Ġst ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" ãĢĢ te Ġst ãĢĢ ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" te Ġst ãĢĢ ãĢĢ ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" ãĢĢ ãĢĢ te Ġst ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ tte Ġst \ t ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" te Ġst \ t \ t ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ t \ tte Ġst ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n te Ġst \ n ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" te Ġst \ n \ n ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n \ n te Ġst ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ rte Ġst \ r ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" te Ġst \ r \ r ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ r \ rte Ġst ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ r \ n te Ġst \ r \ n ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" te Ġst \ r \ n \ r \ n ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ r \ n \ r \ n te Ġst ", Ġ" te Ġst ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" te ãĢĢ st ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" Ġte ãĢĢ st Ġ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" te ãĢĢ st Ġ Ġ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" Ġ Ġte ãĢĢ st ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" ãĢĢ te ãĢĢ st ãĢĢ ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" te ãĢĢ st ãĢĢ ãĢĢ ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" ãĢĢ ãĢĢ te ãĢĢ st ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ tte ãĢĢ st \ t ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" te ãĢĢ st \ t \ t ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ t \ tte ãĢĢ st ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n te ãĢĢ st \ n ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" te ãĢĢ st \ n \ n ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n \ n te ãĢĢ st ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ rte ãĢĢ st \ r ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" te ãĢĢ st \ r \ r ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ r \ rte ãĢĢ st ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ r \ n te ãĢĢ st \ r \ n ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of (" te ãĢĢ st \ r \ n \ r \ n ", Ġ" te ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ r \ n \ r \ n te ãĢĢ st ", Ġ" te ãĢĢ st ")) ĊĊĠĠĠĠĠĠĠ Ġ// Ġcomplex Ġdata ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" t \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r æ¤ľ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" æ¤ľ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r ï¿ ¡ ï¿ ¦ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" ï¿ ¡ ï¿ ¦ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r æ¤ľ è¨¼ ï¸ ¥ ï ¹Ħ ï¸ ¸ ï¸ © ï¸ ¹ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" æ¤ľ è¨¼ ï¸ ¥ ï ¹Ħ ï¸ ¸ ï¸ © ï¸ ¹ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r æ¤ľ â º Ģ é ¿ ķ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" æ¤ľ â º Ģ é ¿ ķ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r æ¤ľ ã Ĳ Ģ íŀ £ íŀ ¹ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" æ¤ľ ã Ĳ Ģ íŀ £ íŀ ¹ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r æ¤ľ ï ¤ Ģ ï © Ń è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" æ¤ľ ï ¤ Ģ ï © Ń è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r æ¤ľ ï» Ħ ï º ¶ ï º ¶ ï º ¶ ï º ¶ ï º ¶ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" æ¤ľ ï» Ħ ï º ¶ ï º ¶ ï º ¶ ï º ¶ ï º ¶ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r æ¤ľ ðŁ Ī ĵ ðŁ Ī ¤ ðŁ Ī ¤ ðŁ Ī ª è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" æ¤ľ ðŁ Ī ĵ ðŁ Ī ¤ ðŁ Ī ¤ ðŁ Ī ª è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r æ¤ľ ðŁĺ Ģ ðŁ ĺĲ ðŁĺ · ðŁĺ · ðŁĺ © è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" æ¤ľ ðŁĺ Ģ ðŁ ĺĲ ðŁĺ · ðŁĺ · ðŁĺ © è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r æ¤ľ ðŁ ľ Ĵ ðŁ ľ ĵ ðŁ ľ Ļ ðŁ ľ Ľ ðŁ ľ · ðŁ ľ ³ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" æ¤ľ ðŁ ľ Ĵ ðŁ ľ ĵ ðŁ ľ Ļ ðŁ ľ Ľ ðŁ ľ · ðŁ ľ ³ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r æ¤ľ ðŁ ļ Ħ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" æ¤ľ ðŁ ļ Ħ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r æ¤ľ ðŁ ļ ± è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" æ¤ľ ðŁ ļ ± è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r æ¤ľ ðŁ ļ ² è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" æ¤ľ ðŁ ļ ² è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r æ¤ľ ðŁ ļ ° è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" æ¤ľ ðŁ ļ ° è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r æ¤ľ ðŁ ļ ³ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" æ¤ľ ðŁ ļ ³ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r æ¤ľ ðŁ ļ ´ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" æ¤ľ ðŁ ļ ´ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r æ¤ľ ðŁ ļ µ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" æ¤ľ ðŁ ļ µ è¨¼ \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĠĠĠĠĠĠĠ ĠtestData . add ( Pair . of ("\ n Ġ ãĢĢ \ n Ġ\ t Ġ Ġ\ r \ n \ r ðŁ ļ ¶ ðŁ ļ · \ nt \ t \ r \ ne ãĢĢ ãĢĢ st \ n \ r ĠĠ ãĢĢ ", Ġ" ðŁ ļ ¶ ðŁ ļ · \ nt \ t \ r \ ne ãĢĢ ãĢĢ st ")) ĊĊĠĠĠĠĠĠĠ Ġ// Ġmethod Ġtest ĊĠĠĠĠĠĠĠ Ġfor Ġ(( i , Ġdata ) Ġin ĠtestData . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdata . left . fast Trim () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals (" stopped Ġdata [$ i ]", Ġdata . right , Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġmethod Ġbenchmark ĊĠĠĠĠĠĠĠ Ġval Ġlist 1 Ġ= Ġmutable ListOf < Long >() ĊĠĠĠĠĠĠĠ Ġval Ġlist 2 Ġ= Ġmutable ListOf < Long >() ĊĠĠĠĠĠĠĠ Ġvar Ġstart : ĠLong ĊĠĠĠĠĠĠĠ Ġvar Ġend : ĠLong ĊĠĠĠĠĠĠĠĠ 1 0 0 . times Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= ĠSystem . nano Time () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( data Ġin ĠtestData ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . left . fast Trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= ĠSystem . nano Time () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist 1 . add ( end Ġ- Ġstart ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" iteration [$ it ] Ġfast Trim : Ġ" Ġ+ Ġ( end Ġ- Ġstart )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= ĠSystem . nano Time () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( data Ġin ĠtestData ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . left . trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= ĠSystem . nano Time () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist 2 . add ( end Ġ- Ġstart ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" iteration [$ it ] Ġtrim : ĠĠĠĠ Ġ" Ġ+ Ġ( end Ġ- Ġstart )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠLog . d (" fast Trim : Ġ" Ġ+ Ġ( list 1 . average () Ġ/ Ġ 1 0 0 0 ). to Long () Ġ+ Ġ"[ ms ]") ĊĠĠĠĠĠĠĠ ĠLog . d (" trim : ĠĠĠĠ Ġ" Ġ+ Ġ( list 2 . average () Ġ/ Ġ 1 0 0 0 ). to Long () Ġ+ Ġ"[ ms ]") ĊĠĠĠ Ġ} Ċ Ċ } Ċ