package Ġio . is land time . internal Ċ Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assert Fails With Ċ Ċ class ĠMath Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` plus Exact Ġin fix Ġthrows Ġan Ġexception Ġwhen Ġadding ĠLong s Ġresults Ġin Ġoverflow `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠLong . MAX _ VALUE Ġplus Exact Ġ 1 Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠLong . MAX _ VALUE Ġplus Exact ĠLong . MAX _ VALUE Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠLong . MIN _ VALUE Ġplus Exact Ġ(- 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠLong . MIN _ VALUE Ġplus Exact ĠLong . MIN _ VALUE Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` plus Exact Ġin fix Ġadds ĠLong s Ġwhen Ġthe Ġresult Ġfits Ġin Ġa ĠLong `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Long . MAX _ VALUE , ĠLong . MAX _ VALUE Ġ- Ġ 1 Ġplus Exact Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Long . MIN _ VALUE , ĠLong . MIN _ VALUE Ġ+ Ġ 1 Ġplus Exact Ġ(- 1 )) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` plus Exact Ġin fix Ġthrows Ġan Ġexception Ġwhen Ġadding ĠIn ts Ġresults Ġin Ġoverflow `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠInt . MAX _ VALUE Ġplus Exact Ġ 1 Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠInt . MAX _ VALUE Ġplus Exact ĠInt . MAX _ VALUE Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠInt . MIN _ VALUE Ġplus Exact Ġ(- 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠInt . MIN _ VALUE Ġplus Exact ĠInt . MIN _ VALUE Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` plus Exact Ġin fix Ġadds ĠIn ts Ġwhen Ġthe Ġresult Ġfits Ġin Ġan ĠInt `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int . MAX _ VALUE , ĠInt . MAX _ VALUE Ġ- Ġ 1 Ġplus Exact Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int . MIN _ VALUE , ĠInt . MIN _ VALUE Ġ+ Ġ 1 Ġplus Exact Ġ(- 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` minus Exact Ġin fix Ġthrows Ġan Ġexception Ġwhen Ġsubtract ing ĠLong s Ġresults Ġin Ġoverflow `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠLong . MIN _ VALUE Ġminus Exact Ġ 1 Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠLong . MIN _ VALUE Ġminus Exact ĠLong . MAX _ VALUE Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠLong . MAX _ VALUE Ġminus Exact Ġ(- 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠLong . MAX _ VALUE Ġminus Exact ĠLong . MIN _ VALUE Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` minus Exact Ġin fix Ġsubtract s ĠLong s Ġwhen Ġthe Ġresult Ġfits Ġin Ġa ĠLong `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Long . MIN _ VALUE , ĠLong . MIN _ VALUE Ġ+ Ġ 1 Ġminus Exact Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Long . MAX _ VALUE , ĠLong . MAX _ VALUE Ġ- Ġ 1 Ġminus Exact Ġ(- 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` minus Exact Ġin fix Ġthrows Ġan Ġexception Ġwhen Ġsubtract ing ĠIn ts Ġresults Ġin Ġoverflow `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠInt . MIN _ VALUE Ġminus Exact Ġ 1 Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠInt . MIN _ VALUE Ġminus Exact ĠInt . MAX _ VALUE Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠInt . MAX _ VALUE Ġminus Exact Ġ(- 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠInt . MAX _ VALUE Ġminus Exact ĠInt . MIN _ VALUE Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` minus Exact Ġin fix Ġsubtract s ĠIn ts Ġwhen Ġthe Ġresult Ġfits Ġin Ġa ĠInt `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int . MIN _ VALUE , ĠInt . MIN _ VALUE Ġ+ Ġ 1 Ġminus Exact Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int . MAX _ VALUE , ĠInt . MAX _ VALUE Ġ- Ġ 1 Ġminus Exact Ġ(- 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` times Exact Ġin fix Ġthrows Ġan Ġexception Ġwhen Ġmultiply ing ĠLong s Ġresults Ġin Ġoverflow `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġ( Long . MAX _ VALUE Ġ/ Ġ 2 Ġ+ Ġ 1 ) Ġtimes Exact ĠĠ 2 Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠLong . MAX _ VALUE Ġtimes Exact ĠLong . MAX _ VALUE Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠLong . MIN _ VALUE Ġtimes Exact ĠLong . MIN _ VALUE Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠLong . MIN _ VALUE Ġtimes Exact ĠLong . MAX _ VALUE Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠLong . MIN _ VALUE Ġtimes Exact Ġ(- 1 ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` times Exact Ġin fix Ġmultip lies ĠLong s Ġwhen Ġthe Ġresult Ġfits Ġin Ġa ĠLong `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Long . MAX _ VALUE , ĠLong . MAX _ VALUE Ġtimes Exact Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Long . MAX _ VALUE Ġ- Ġ 1 , ĠLong . MAX _ VALUE Ġ/ Ġ 2 Ġtimes Exact Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Long . MIN _ VALUE , ĠLong . MIN _ VALUE Ġtimes Exact Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Long . MIN _ VALUE , ĠLong . MIN _ VALUE Ġ/ Ġ 2 Ġtimes Exact Ġ 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` times Exact Ġin fix Ġthrows Ġan Ġexception Ġwhen Ġmultiply ing ĠIn ts Ġresults Ġin Ġoverflow `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġ( Int . MAX _ VALUE Ġ/ Ġ 2 Ġ+ Ġ 1 ) Ġtimes Exact ĠĠ 2 Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠInt . MAX _ VALUE Ġtimes Exact ĠInt . MAX _ VALUE Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠInt . MIN _ VALUE Ġtimes Exact ĠInt . MIN _ VALUE Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠInt . MIN _ VALUE Ġtimes Exact ĠInt . MAX _ VALUE Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ ĠInt . MIN _ VALUE Ġtimes Exact Ġ(- 1 ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` times Exact Ġin fix Ġmultip lies ĠIn ts Ġwhen Ġthe Ġresult Ġfits Ġin Ġa ĠInt `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int . MAX _ VALUE , ĠInt . MAX _ VALUE Ġtimes Exact Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int . MAX _ VALUE Ġ- Ġ 1 , ĠInt . MAX _ VALUE Ġ/ Ġ 2 Ġtimes Exact Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int . MIN _ VALUE , ĠInt . MIN _ VALUE Ġtimes Exact Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int . MIN _ VALUE , ĠInt . MIN _ VALUE Ġ/ Ġ 2 Ġtimes Exact Ġ 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Long _ toInt Exact () Ġthrows Ġan Ġexception Ġwhen Ġthe Ġconversion Ġoverflow s `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġ( Int . MAX _ VALUE Ġ+ Ġ 1 L ). toInt Exact () Ġ} ĊĠĠĠĠĠĠĠ Ġassert Fails With < Arithmetic Exception > Ġ{ Ġ( Int . MIN _ VALUE Ġ- Ġ 1 L ). toInt Exact () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Long _ toInt Exact () Ġconverts Ġa ĠLong Ġto Ġan ĠInt Ġwhen Ġit Ġfits Ġwithout Ġoverflow `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int . MAX _ VALUE , Ġ( Int . MAX _ VALUE . to Long ()). toInt Exact ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Int . MIN _ VALUE , Ġ( Int . MIN _ VALUE . to Long ()). toInt Exact ()) ĊĠĠĠ Ġ} Ċ }