/* Ċ Ġ* ĠCopyright ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 . Ċ Ġ*/ Ċ Ċ package Ġserde . ec 2 Ċ Ċ import ĠTest Context Ċ import Ġdefault Settings Ċ import ĠgetFile Contents Ċ import Ġio . kot est . matchers . string . should Contain Only Once Ċ import Ġmocks . Mock Http EC 2 Query Protocol Generator Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġshould Synt actic San ity Check Ċ Ċ class ĠEc 2 Query Name Tests Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` 0 0 1 Ġencode Ġsimple Ġtypes `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġsetup Tests (" Is olated / ec 2 / query - simple . smithy ", Ġ" aws . protocol tests . ec 2 # Aws Ec 2 ") ĊĠĠĠĠĠĠĠ Ġval Ġcontents Ġ= ĠgetFile Contents ( context . manifest , Ġ"/ Example / models / Ec 2 Simple Input Params Input + En codable . swift ") ĊĠĠĠĠĠĠĠ Ġcontents . should Synt actic San ity Check () ĊĠĠĠĠĠĠĠ Ġval Ġexpected Contents Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextension ĠEc 2 Simple Input Params Input : ĠSwift . En codable , ĠClient Runtime . Reflection Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġfunc Ġencode ( to Ġencoder : ĠSwift . Encoder ) Ġthrows Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcontainer Ġ= Ġencoder . container ( keyed By : ĠClient Runtime . Key . self ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġlet Ġb am Int Ġ= Ġb am Int Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġcontainer . encode ( bam Int , Ġfor Key : ĠClient Runtime . Key (" B am Int ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġlet Ġbar String Ġ= Ġbar String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġcontainer . encode ( bar String , Ġfor Key : ĠClient Runtime . Key (" Bar String ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġlet Ġbaz Boolean Ġ= Ġbaz Boolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġcontainer . encode ( baz Boolean , Ġfor Key : ĠClient Runtime . Key (" B az Boolean ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġlet Ġb oo Double Ġ= Ġb oo Double Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġcontainer . encode ( b oo Double , Ġfor Key : ĠClient Runtime . Key (" B oo Double ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġlet Ġf zz Enum Ġ= Ġf zz Enum Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġcontainer . encode ( f zz Enum , Ġfor Key : ĠClient Runtime . Key (" F zz Enum ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġlet Ġhas Query And Xml Name String Ġ= Ġhas Query And Xml Name String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġcontainer . encode ( has Query And Xml Name String , Ġfor Key : ĠClient Runtime . Key (" B ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġlet Ġhas Query Name String Ġ= Ġhas Query Name String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġcontainer . encode ( has Query Name String , Ġfor Key : ĠClient Runtime . Key (" A ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġlet Ġqu xB lob Ġ= Ġqu xB lob Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġcontainer . encode ( qu xB lob . base 6 4 Encoded String (), Ġfor Key : ĠClient Runtime . Key (" Qu xB lob ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġlet Ġuses Xml Name String Ġ= Ġuses Xml Name String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġcontainer . encode ( uses Xml Name String , Ġfor Key : ĠClient Runtime . Key (" C ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġcontainer . encode (" Ec 2 Simple Input Params ", Ġfor Key : Client Runtime . Key (" Action ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġcontainer . encode (" 2 0 2 0 - 0 1 - 0 8 ", Ġfor Key : Client Runtime . Key (" Version ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġcontents . should Contain Only Once ( expected Contents ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġsetup Tests ( smithy File : ĠString , Ġservice Shape Id : ĠString ): ĠTest Context Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠTest Context . init Context From ( smithy File , Ġservice Shape Id , ĠMock Http EC 2 Query Protocol Generator ()) Ġ{ Ġmodel Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . default Settings ( service Shape Id , Ġ" Example ", Ġ" 2 0 2 0 - 0 1 - 0 8 ", Ġ" Ec 2 Ġquery Ġprotocol ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcontext . generator . generate Cod able Con formance For Nested Types ( context . generation Ctx ) ĊĠĠĠĠĠĠĠ Ġcontext . generator . generate Serial izers ( context . generation Ctx ) ĊĠĠĠĠĠĠĠ Ġcontext . generation Ctx . deleg ator . flush Writ ers () ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext ĊĠĠĠ Ġ} Ċ } Ċ