/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 - 2 0 2 1 ĠThe ĠDevelopers . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License ") Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . github . o he ger . location t eller . map Ċ Ċ import Ġio . kot est . core . spec . style . Word Spec Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġkotlin . math . pow Ċ Ċ class ĠTime Delta Alpha Calculator Spec Ġ: ĠWord Spec ({ ĊĠĠĠ Ġ" Constant Time Delta Alpha Calculator " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġ" return Ġthe Ġconstant Ġalpha Ġvalue " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalpha Ġ= Ġ 0 . 7 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalculator Ġ= ĠConstant Time Delta Alpha Calculator ( alpha ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġ 2 0 ). map Ġ{ Ġ 2 f . pow ( it ). to Long () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġcalculator . calculate Alpha ( it ) ĠshouldBe Ġalpha Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ" Range Time Delta Alpha Calculator " Ġshould Ġ{ ĊĠĠĠĠĠĠĠ Ġ" return Ġthe Ġminimum Ġalpha Ġif Ġno Ġranges Ġare Ġprovided " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalpha Ġ= Ġ 0 . 4 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalculator Ġ= ĠRange Time Delta Alpha Calculator ( emptyList (), Ġalpha ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculator . calculate Alpha ( 4 2 ) ĠshouldBe Ġalpha ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" return Ġthe Ġminimum Ġalpha Ġif Ġthe Ġmaximum Ġtime Ġof Ġthe Ġlast Ġrange Ġis Ġexceeded " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalpha Ġ= Ġ 0 . 2 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalculator Ġ= ĠRange Time Delta Alpha Calculator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlpha Range ( 1 f , Ġ 0 . 7 f , Ġ 1 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlpha Range ( 0 . 6 f , Ġ 0 . 5 f , Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġalpha ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculator . calculate Alpha ( 1 0 0 0 ) ĠshouldBe Ġalpha ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" return Ġthe Ġmaximum Ġalpha Ġon Ġthe Ġstart Ġtime Ġof Ġa Ġrange " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalpha Ġ= Ġ 0 . 7 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalculator Ġ= ĠRange Time Delta Alpha Calculator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlpha Range ( 1 f , Ġ 0 . 8 f , Ġ 1 0 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlpha Range ( alpha , Ġ 0 . 5 f , Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculator . calculate Alpha ( 1 0 0 ) ĠshouldBe Ġalpha ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" return Ġa Ġcorrect Ġalpha Ġvalue Ġin Ġthe Ġrelative Ġposition Ġof Ġa Ġrange " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrange Ġ= ĠAlpha Range ( 1 f , Ġ 0 . 5 f , Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalculator Ġ= ĠRange Time Delta Alpha Calculator ( listOf ( range ), Ġ 0 f ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculator . calculate Alpha ( 5 ) ĠshouldBe Ġ 0 . 7 5 f ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ