Pudu programming language
Menu
Package

@chrismichaelps / pudu-lang-httpclient

Named HTTP clients for Pudu: a client factory, delegating handlers, pooled keep-alive connections, handler lifetimes, logging, and resilience

0.1.1Apache-2.01

InstallClose

ExpiryTest.pudu

Pudu24 lines1.3 KB

GitHub ↗
1/** @Test.Domain.Expiry.Suite — lifetimes, idle limits, and deadlines */2module PuduLangHttpClient.Domain.ExpiryTest34import Std.Io as Io5import Std.Test as Test6import PuduLangHttpClient.Constants.Defaults as Defaults7import PuduLangHttpClient.Domain.Expiry as Expiry89/// Runs the suite.10fn main() -> Int {11  let checks = Test.suite("Domain.Expiry", &[12      Test.that("a lifetime runs out exactly when it has elapsed", Expiry.elapsed(100, 50, 150) && !Expiry.elapsed(100, 50, 149)),13      Test.that("a lifetime of zero has already run out", Expiry.elapsed(100, 0, 100)),14      Test.not("an infinite lifetime never runs out", Expiry.elapsed(0, Defaults.INFINITE, Defaults.UNLIMITED)),15      Test.equals("what remains of a deadline never falls below zero", &[Expiry.remaining(Some(150), 100), Expiry.remaining(Some(100), 100), Expiry.remaining(Some(50), 100), Expiry.remaining(None, 100)], &[Some(50), Some(0), Some(0), None]),16      Test.equals("the earlier deadline wins and an absent one loses", &[Expiry.earliest(Some(5), Some(3)), Expiry.earliest(Some(3), Some(5)), Expiry.earliest(Some(4), Some(4)), Expiry.earliest(Some(5), None), Expiry.earliest(None, Some(5)), Expiry.earliest(None, None)], &[Some(3), Some(3), Some(4), Some(5), Some(5), None])17    ])18  let ran = Test.run(&checks)19  for failure in Test.failuresOf(&ran) {20    let _reported = Io.writeErrorLine(failure)21  }22  Test.report(&ran)23}24