/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġcore Ċ Ċ import Ġtest . assert Static And Runtime Type Is Ċ import Ġtest . assert Static Type Is Ċ import Ġkotlin . js . Promise Ċ import Ġkotlin . test .* Ċ Ċ class ĠPromise Test Ġ{ ĊĊĠĠĠ Ġ// ĠTo Ġbe Ġsure Ġthat Ġsome Ġbase Ġcases Ġcan Ġbe Ġwritten Ġin ĠKotlin ĊĠĠĠ Ġfun Ġs moke Test ( p : ĠPromise < Int >, Ġps : ĠPromise < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Static Type Is < Promise < Int >>( p . then Ġ{ Ġ 1 Ġ}) ĊĊĠĠĠĠĠĠĠ Ġassert Static Type Is < Promise < Int >>( p . then ({ Ġ 1 Ġ})) ĊĊĠĠĠĠĠĠĠ Ġval Ġf : Ġ( Int ) Ġ-> ĠInt Ġ= Ġ{ Ġ 1 Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġft : Ġ( Throwable ) Ġ-> ĠInt Ġ= Ġ{ Ġ 1 Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Static Type Is < Promise < Int >>( p . then ( f , Ġft )) ĊĊĠĠĠĠĠĠĠ Ġassert Static Type Is < Promise < Int >>( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp . then ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġassert Static Type Is < Promise < Int >>( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp . then ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġassert Static Type Is < Promise < Int >>( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp . then ( on Ful filled Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġassert Static Type Is < Promise < Int >>( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp . then ( on Ful filled Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġp . then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġps ĊĠĠĠĠĠĠĠ Ġ}. then Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Static And Runtime Type Is < String >( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġps ĊĠĠĠĠĠĠĠ Ġ}. then ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert Static And Runtime Type Is < String >( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }