package Ġcom . sk sam uel . avro 4 k . encoder Ċ Ċ import Ġcom . sk sam uel . avro 4 k . Av ro Ċ import Ġcom . sk sam uel . avro 4 k . List Record Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . kot est . core . spec . style . Word Spec Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġorg . apache . avro . generic . Generic Data Ċ import Ġorg . apache . avro . util . Utf 8 Ċ Ċ class ĠArray Encoder Test Ġ: ĠWord Spec ({ ĊĊĠĠ Ġ" Encoder " Ġshould Ġ{ ĊĠĠĠĠĠ Ġ" generate ĠGeneric Data . Array Ġfor Ġan ĠArray < Boolean >" Ġ{ ĊĠĠĠĠĠĠĠĠ Ġ@ Serializable ĊĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠTest ( val Ġa : ĠArray < Boolean >) ĊĊĠĠĠĠĠĠĠĠ Ġval Ġschema Ġ= ĠAv ro . default . schema ( Test . serializer ()) ĊĠĠĠĠĠĠĠĠ Ġval Ġarray Schema Ġ= Ġschema . getField (" a "). schema () ĊĠĠĠĠĠĠĠĠ Ġval Ġrecord Ġ= ĠAv ro . default . to Record ( Test . serializer (), ĠTest ( array Of ( true , Ġfalse , Ġtrue ))) ĊĠĠĠĠĠĠĠĠ Ġrecord ĠshouldBe ĠList Record ( schema , ĠlistOf ( Generic Data . Array ( array Schema , ĠlistOf ( true , Ġfalse , Ġtrue )))) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" support ĠGeneric Data . Array Ġfor Ġan ĠArray < Boolean > Ġwith Ġother Ġfields " Ġ{ ĊĠĠĠĠĠĠĠĠ Ġ@ Serializable ĊĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠTest ( val Ġa : ĠString , Ġval Ġb : ĠArray < Boolean >, Ġval Ġc : ĠLong ) ĊĊĠĠĠĠĠĠĠĠ Ġval Ġschema Ġ= ĠAv ro . default . schema ( Test . serializer ()) ĊĠĠĠĠĠĠĠĠ Ġval Ġarray Schema Ġ= Ġschema . getField (" b "). schema () ĊĠĠĠĠĠĠĠĠ Ġval Ġrecord Ġ= ĠAv ro . default . to Record ( Test . serializer (), ĠTest (" foo ", ĠarrayOf ( true , Ġfalse , Ġtrue ), Ġ 1 2 3 L )) ĊĠĠĠĠĠĠĠĠ Ġrecord ĠshouldBe ĠList Record ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschema , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtf 8 (" foo "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGeneric Data . Array ( array Schema , ĠlistOf ( true , Ġfalse , Ġtrue )), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 2 3 L ĊĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" generate ĠGeneric Data . Array Ġfor Ġa ĠList < String >" Ġ{ ĊĠĠĠĠĠĠĠĠ Ġ@ Serializable ĊĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠTest ( val Ġa : ĠList < String >) ĊĊĠĠĠĠĠĠĠĠ Ġval Ġschema Ġ= ĠAv ro . default . schema ( Test . serializer ()) ĊĠĠĠĠĠĠĠĠ Ġval Ġarray Schema Ġ= Ġschema . getField (" a "). schema () ĊĠĠĠĠĠĠĠĠ Ġval Ġrecord Ġ= ĠAv ro . default . to Record ( Test . serializer (), ĠTest ( listOf (" we 2 3 ", Ġ" 5 4 z "))) ĊĠĠĠĠĠĠĠĠ Ġrecord ĠshouldBe ĠList Record ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschema , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Generic Data . Array ( array Schema , ĠlistOf ( Utf 8 (" we 2 3 "), ĠUtf 8 (" 5 4 z ")) )) ĊĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" generate ĠGeneric Data . Array Ġfor Ġa ĠSet < Long >" Ġ{ ĊĠĠĠĠĠĠĠĠ Ġ@ Serializable ĊĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠTest ( val Ġa : ĠSet < Long >) ĊĊĠĠĠĠĠĠĠĠ Ġval Ġschema Ġ= ĠAv ro . default . schema ( Test . serializer ()) ĊĠĠĠĠĠĠĠĠ Ġval Ġarray Schema Ġ= Ġschema . getField (" a "). schema () ĊĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠList Record ( schema , ĠlistOf ( Generic Data . Array ( array Schema , ĠlistOf ( 1 2 3 L , Ġ 6 4 3 L , Ġ 9 1 2 )))) ĊĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= ĠAv ro . default . to Record ( Test . serializer (), ĠTest ( set Of ( 1 2 3 L , Ġ 6 4 3 L , Ġ 9 1 2 L ))) ĊĠĠĠĠĠĠĠĠ Ġactual ĠshouldBe Ġexpected ĊĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ" generate Ġarray Ġfor Ġan ĠArray Ġof Ġrecords " Ġ{ Ċ // ĠĠĠĠĠ Ġ@ Serializable Ċ // ĠĠĠĠĠ Ġdata Ġclass ĠNested ( val Ġg oo : ĠString ) Ċ // Ċ // ĠĠĠĠĠ Ġ@ Serializable Ċ // ĠĠĠĠĠ Ġdata Ġclass ĠTest ( val Ġarray : ĠArray < Nested >) Ċ // Ċ // ĠĠĠĠĠ Ġval Ġschema Ġ= ĠAv ro . default . schema ( Test . serializer ()) Ċ // ĠĠĠĠĠ Ġval Ġnested Schema Ġ= ĠAv ro . default . schema ( Nested . serializer ()) Ċ // Ċ // ĠĠĠĠĠ Ġval Ġrecord Ġ= ĠAv ro . default . to Record ( Test . serializer (), ĠTest ( array Of ( Nested (" q we "), ĠNested (" df sg ")) )) Ċ // ĠĠĠĠĠ Ġrecord ĠshouldBe ĠImmutable Record ( Ċ // ĠĠĠĠĠĠĠĠĠ Ġschema , Ċ // ĠĠĠĠĠĠĠĠĠ Ġarray ListOf ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray ListOf ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImmutable Record ( nested Schema , Ġarray ListOf ( Utf 8 (" q we ")) ), Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImmutable Record ( nested Schema , Ġarray ListOf ( Utf 8 (" df sg "))) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠ Ġ) Ċ // ĠĠĠ Ġ} Ċ // ĠĠĠ Ġ" generate Ġarray Ġfor Ġa ĠList Ġof Ġrecords " Ġ{ Ċ // ĠĠĠĠĠ Ġ@ Serializable Ċ // ĠĠĠĠĠ Ġdata Ġclass ĠNested ( val Ġg oo : ĠString ) Ċ // Ċ // ĠĠĠĠĠ Ġ@ Serializable Ċ // ĠĠĠĠĠ Ġdata Ġclass ĠTest ( val Ġlist : ĠList < Nested >) Ċ // Ċ // ĠĠĠĠĠ Ġval Ġschema Ġ= ĠAv ro . default . schema ( Test . serializer ()) Ċ // ĠĠĠĠĠ Ġval Ġnested Schema Ġ= ĠAv ro . default . schema ( Nested . serializer ()) Ċ // Ċ // ĠĠĠĠĠ Ġval Ġrecord Ġ= ĠAv ro . default . to Record ( Test . serializer (), ĠTest ( listOf ( Nested (" q we "), ĠNested (" df sg ")) )) Ċ // ĠĠĠĠĠ Ġrecord ĠshouldBe ĠImmutable Record ( Ċ // ĠĠĠĠĠĠĠĠĠ Ġschema , Ċ // ĠĠĠĠĠĠĠĠĠ Ġarray ListOf ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray ListOf ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImmutable Record ( nested Schema , Ġarray ListOf ( Utf 8 (" q we ")) ), Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImmutable Record ( nested Schema , Ġarray ListOf ( Utf 8 (" df sg "))) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠ Ġ) Ċ // ĠĠĠ Ġ} Ċ // ĠĠĠ Ġ" generate Ġarray Ġfor Ġa ĠSet Ġof Ġrecords " Ġ{ Ċ // ĠĠĠĠĠ Ġ@ Serializable Ċ // ĠĠĠĠĠ Ġdata Ġclass ĠNested ( val Ġg oo : ĠString ) Ċ // Ċ // ĠĠĠĠĠ Ġ@ Serializable Ċ // ĠĠĠĠĠ Ġdata Ġclass ĠTest ( val Ġset : ĠSet < Nested >) Ċ // Ċ // ĠĠĠĠĠ Ġval Ġschema Ġ= ĠAv ro . default . schema ( Test . serializer ()) Ċ // ĠĠĠĠĠ Ġval Ġnested Schema Ġ= ĠAv ro . default . schema ( Nested . serializer ()) Ċ // Ċ // ĠĠĠĠĠ Ġval Ġrecord Ġ= ĠAv ro . default . to Record ( Test . serializer (), ĠTest ( set Of ( Nested (" q we "), ĠNested (" df sg ")) )) Ċ // ĠĠĠĠĠ Ġrecord ĠshouldBe ĠImmutable Record ( Ċ // ĠĠĠĠĠĠĠĠĠ Ġschema , Ċ // ĠĠĠĠĠĠĠĠĠ Ġarray ListOf ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarray ListOf ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImmutable Record ( nested Schema , Ġarray ListOf ( Utf 8 (" q we ")) ), Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImmutable Record ( nested Schema , Ġarray ListOf ( Utf 8 (" df sg "))) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠ Ġ) Ċ // ĠĠĠ Ġ} ĊĠĠ Ġ} Ċ }) ĊĊ