/* Ċ Ġ* ĠCopyright ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 . Ċ Ġ*/ Ċ package Ġsoftware . amazon . smithy . swift . codegen . integration Ċ Ċ import Ġsoftware . amazon . smithy . codegen . core . Symbol Provider Ċ import Ġsoftware . amazon . smithy . model . Model Ċ import Ġsoftware . amazon . smithy . model . shapes . Operation Shape Ċ import Ġsoftware . amazon . smithy . protocol tests . traits . Http Message TestCase Ċ import Ġsoftware . amazon . smithy . swift . codegen . Swift Writer Ċ import Ġsoftware . amazon . smithy . swift . codegen . middleware . Operation Middleware Ċ Ċ /** Ċ Ġ* ĠAbstract Ġbase Ġimplementation Ġfor Ġprotocol Ġtest Ġgenerators Ġto Ġextend Ġin Ġorder Ġto Ġgenerate ĠHttp Message TestCase Ċ Ġ* Ġspecific Ġprotocol Ġtests . Ċ Ġ* Ċ Ġ* Ġ@ param ĠT ĠSpecific ĠHttp Message TestCase Ġthe Ġprotocol Ġtest Ġgenerator Ġis Ġfor . Ċ Ġ*/ Ċ abstract Ġclass ĠHttp Protocol UnitTest Generator < T Ġ: ĠHttp Message TestCase > Ċ protected Ġconstructor ( builder : ĠBuilder < T >) Ġ{ ĊĊĠĠĠ Ġprotected Ġval Ġsymbol Provider : ĠSymbol Provider Ġ= Ġbuilder . symbol Provider !! ĊĠĠĠ Ġprotected Ġvar Ġmodel : ĠModel Ġ= Ġbuilder . model !! ĊĠĠĠ Ġprivate Ġval Ġtest Cases : ĠList < T > Ġ= Ġbuilder . test Cases !! ĊĠĠĠ Ġprotected Ġval Ġoperation : ĠOperation Shape Ġ= Ġbuilder . operation !! ĊĠĠĠ Ġprotected Ġval Ġwriter : ĠSwift Writer Ġ= Ġbuilder . writer !! ĊĠĠĠ Ġprotected Ġval Ġhttp Protocol Custom izable Ġ= Ġbuilder . http Protocol Custom izable !! ĊĠĠĠ Ġprotected Ġval Ġoperation Middleware Ġ= Ġbuilder . operation Middleware !! ĊĠĠĠ Ġprotected Ġval Ġhttp Binding Resolver Ġ= Ġbuilder . http Binding Resolver !! ĊĠĠĠ Ġprotected Ġval Ġserde Context Ġ= Ġbuilder . serde Context !! ĊĠĠĠ Ġprotected Ġval ĠserviceName : ĠString Ġ= Ġbuilder . serviceName !! ĊĠĠĠ Ġabstract Ġval Ġbase Test ClassName : ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRender Ġa Ġtest Ġclass Ġand Ġunit Ġtests Ġfor Ġthe Ġspecified Ġ[ test Cases ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrender TestClass ( test ClassName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwriter . write ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. open Block (" class Ġ$ test ClassName : Ġ$ base Test ClassName Ġ{ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. call Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( test Ġin Ġtest Cases ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender Test Function ( test ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. close Block (" }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWrite Ġa Ġsingle Ġunit Ġtest Ġfunction Ġusing Ġthe Ġgiven Ġ[ writer ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġrender Test Function ( test : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtest . documentation . if Present Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write Docs ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwriter . open Block (" func Ġtest ${ test . id }() Ġthrows Ġ{ ", Ġ" }") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender Test Body ( test ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRender Ġthe Ġbody Ġof Ġa Ġunit Ġtest ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġrender Test Body ( test : ĠT ) ĊĊĠĠĠ Ġdata Ġclass ĠSer de Context ( ĊĠĠĠĠĠĠĠ Ġval Ġprotocol Encoder : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġprotocol Decoder : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġdefault Timestamp Format : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġabstract Ġclass ĠBuilder < T Ġ: ĠHttp Message TestCase > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġsymbol Provider : ĠSymbol Provider ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġmodel : ĠModel ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġtest Cases : ĠList < T >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġoperation : ĠOperation Shape ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġwriter : ĠSwift Writer ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar ĠserviceName : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġhttp Protocol Custom izable : ĠHttp Protocol Custom izable ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġoperation Middleware : ĠOperation Middleware ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġhttp Binding Resolver : ĠHttp Binding Resolver ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġserde Context : ĠSer de Context ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġsymbol Provider ( provider : ĠSymbol Provider ): ĠBuilder < T > Ġ= Ġapply Ġ{ Ġthis . symbol Provider Ġ= Ġprovider Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġmodel ( model : ĠModel ): ĠBuilder < T > Ġ= Ġapply Ġ{ Ġthis . model Ġ= Ġmodel Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġtest Cases ( test Cases : ĠList < T >): ĠBuilder < T > Ġ= Ġapply Ġ{ Ġthis . test Cases Ġ= Ġtest Cases Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġoperation ( operation : ĠOperation Shape ): ĠBuilder < T > Ġ= Ġapply Ġ{ Ġthis . operation Ġ= Ġoperation Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġwriter ( writer : ĠSwift Writer ): ĠBuilder < T > Ġ= Ġapply Ġ{ Ġthis . writer Ġ= Ġwriter Ġ} ĊĠĠĠĠĠĠĠ Ġfun ĠserviceName ( serviceName : ĠString ): ĠBuilder < T > Ġ= Ġapply Ġ{ Ġthis . serviceName Ġ= ĠserviceName Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġhttp Protocol Custom izable ( http Protocol Custom izable : ĠHttp Protocol Custom izable ): ĠBuilder < T > Ġ= Ġapply Ġ{ Ġthis . http Protocol Custom izable Ġ= Ġhttp Protocol Custom izable Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġoperation Middleware ( operation Middleware : ĠOperation Middleware ): ĠBuilder < T > Ġ= Ġapply Ġ{ Ġthis . operation Middleware Ġ= Ġoperation Middleware Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġhttp Binding Resolver ( http Binding Resolver : ĠHttp Binding Resolver ): ĠBuilder < T > Ġ= Ġapply Ġ{ Ġthis . http Binding Resolver Ġ= Ġhttp Binding Resolver Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġserde Context ( serde Context : ĠSer de Context ): ĠBuilder < T > Ġ= Ġapply Ġ{ Ġthis . serde Context Ġ= Ġserde Context Ġ} ĊĠĠĠĠĠĠĠ Ġabstract Ġfun Ġbuild (): ĠHttp Protocol UnitTest Generator < T > ĊĠĠĠ Ġ} Ċ } Ċ