// ĠCopyright Ġ 2 0 0 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġcom . intellij . openapi . project Roots . impl . jdk Downloader Ċ Ċ import Ġcom . intellij . idea . Test For Ċ import Ġcom . intellij . test Framework . fixtures . Base Platform TestCase Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Test Ċ import Ġjava . lang . RuntimeException Ċ Ċ class ĠJ dk Downloader IntegrationTest Ġ: ĠBase Platform TestCase () Ġ{ ĊĠ Ġ@ Test ĊĠ Ġfun Ġ` test Ġdefault Ġmodel Ġcan Ġbe Ġdownloaded Ġand Ġparsed `() Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġlast Error : ĠThrowable ĊĠĠĠ Ġrepeat ( 5 ) Ġ{ ĊĠĠĠĠĠ Ġval Ġresult Ġ= Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠJ dk List Downloader . getInstance (). download For UI ( null ) ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( data . isNotEmpty ()) ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( data . all Ġ{ Ġit . shared Index Aliases . isNotEmpty () Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// IDE A - 2 5 3 5 3 3 ĊĠĠĠĠĠĠĠ Ġbuild J dk Downloader Model ( data ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( result . is Success ) Ġreturn ĊĠĠĠĠĠ Ġlast Error Ġ= Ġresult . exception OrNull () !! ĊĊĠĠĠĠĠ Ġif Ġ( last Error . message ?. startsWith (" Failed Ġto Ġdownload Ġlist Ġof Ġavailable ĠJDK s ") Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ ĠThread . sleep ( 5 0 0 0 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġthrow Ġlast Error ĊĠĠĠ Ġ} ĊĠĠĠ Ġthrow ĠRuntimeException (" Failed Ġto Ġdownload ĠJDK Ġlist Ġwithin Ġseveral Ġtries ", Ġlast Error ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` test Ġdefault Ġmodel Ġshould Ġhave ĠJ BR `() Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġlast Error : ĠThrowable ĊĠĠĠ Ġrepeat ( 5 ) Ġ{ ĊĠĠĠĠĠ Ġval Ġresult Ġ= Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠJ dk List Downloader . getInstance (). download Model For J dk Installer ( null ) ĊĠĠĠĠĠĠĠ Ġval Ġj br Ġ= Ġdata . filter Ġ{ Ġit . matches Vendor (" j br ") Ġ} ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( j br . isNotEmpty ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( result . is Success ) Ġreturn ĊĠĠĠĠĠ Ġlast Error Ġ= Ġresult . exception OrNull () !! ĊĊĠĠĠĠĠ Ġif Ġ( last Error . message ?. startsWith (" Failed Ġto Ġdownload Ġlist Ġof Ġavailable ĠJDK s ") Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ ĠThread . sleep ( 5 0 0 0 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġthrow Ġlast Error ĊĠĠĠ Ġ} ĊĠĠĠ Ġthrow ĠRuntimeException (" Failed Ġto Ġdownload ĠJDK Ġlist Ġwithin Ġseveral Ġtries ", Ġlast Error ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` test Ġdefault Ġnon - UI Ġ Ġmodel Ġis Ġcached `() Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġlast Error : ĠThrowable ĊĠĠĠ Ġrepeat ( 5 ) Ġ{ ĊĊĠĠĠĠĠ Ġval Ġdown loader Ġ= ĠJ dk List Downloader . getInstance () ĊĠĠĠĠĠ Ġval Ġpack s Ġ= ĠList ( 1 0 ) Ġ{ Ġrun Catch ing Ġ{ Ġdown loader . download Model For J dk Installer ( null ) Ġ}. get OrNull () Ġ}. filter NotNull () ĊĊĠĠĠĠĠ Ġif Ġ( packs . size Ġ< Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn @ repeat ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ// must Ġreturn Ġcached ĠJ dk Item Ġobjects ĊĠĠĠĠĠ Ġpack s . forEach Ġ{ Ġp 1 Ġ-> ĊĠĠĠĠĠĠĠ Ġpack s . forEach Ġ{ Ġp 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( p 1 . size , Ġp 2 . size ) ĊĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġp 1 . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertSame ( p 1 [ i ], Ġp 2 [ i ]) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġthrow ĠRuntimeException (" Failed Ġto Ġdownload ĠJDK Ġlist Ġwithin Ġseveral Ġtries ", Ġlast Error ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġ@ Test For ( issues Ġ= Ġ[" IDE A - 2 5 2 2 3 7 "]) ĊĠ Ġfun Ġ` test Ġdefault Ġmodel Ġfor Ġui Ġis Ġnot Ġcached `() Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġlast Error : ĠThrowable ĊĠĠĠ Ġrepeat ( 5 ) Ġ{ ĊĊĠĠĠĠĠ Ġval Ġdown loader Ġ= ĠJ dk List Downloader . getInstance () ĊĠĠĠĠĠ Ġval Ġpack s Ġ= ĠList ( 2 ) Ġ{ Ġrun Catch ing Ġ{ Ġdown loader . download For UI ( null ) Ġ}. get OrNull () Ġ}. filter NotNull () ĊĊĠĠĠĠĠ Ġif Ġ( packs . size Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn @ repeat ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ// must Ġnot Ġreturn Ġcached ĠJ dk Item Ġobjects ĊĠĠĠĠĠ Ġpack s . forEach Ġ{ Ġp 1 Ġ-> ĊĠĠĠĠĠĠĠ Ġpack s . forEach Ġ{ Ġp 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( p 1 Ġ!== Ġp 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( p 1 . size , Ġp 2 . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġp 1 . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertNot Same ( p 1 [ i ], Ġp 2 [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( p 1 [ i ], Ġp 2 [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġthrow ĠRuntimeException (" Failed Ġto Ġdownload ĠJDK Ġlist Ġwithin Ġseveral Ġtries ", Ġlast Error ) ĊĠ Ġ} Ċ } Ċ