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

VersionTest.pudu

Pudu27 lines1.2 KB

GitHub ↗
1/** @Test.Domain.Version.Suite — the protocol version a request is sent with */2module PuduLangHttpClient.Domain.VersionTest34import Std.Http as Http5import Std.Io as Io6import Std.Test as Test7import PuduLangHttpClient.Domain.Version as Version89/// The version sent for each requested version under a policy.10fn under(policy: Version.Policy) -> Array[Option[Http.Version]] {11  [Http.Http10, Http.Http11, Http.Http2, Http.Http3].map(|version: Http.Version| Version.negotiate(&version, &policy))12}1314/// Runs the suite.15fn main() -> Int {16  let checks = Test.suite("Domain.Version", &[17      Test.equals("or-lower sends the highest version spoken at or below the request", &under(Version.OrLower), &[Some(Http.Http10), Some(Http.Http11), Some(Http.Http11), Some(Http.Http11)]),18      Test.equals("exact sends only a version spoken", &under(Version.Exact), &[Some(Http.Http10), Some(Http.Http11), None, None]),19      Test.equals("or-higher sends the highest version spoken at or above the request", &under(Version.OrHigher), &[Some(Http.Http11), Some(Http.Http11), None, None])20    ])21  let ran = Test.run(&checks)22  for failure in Test.failuresOf(&ran) {23    let _reported = Io.writeErrorLine(failure)24  }25  Test.report(&ran)26}27