@@ -25,6 +25,7 @@ import zio.test._
25
25
object JsonCodecSpec extends ZIOSpecDefault {
26
26
27
27
case class Person (name : String , age : Int )
28
+
28
29
val personSchema : Schema [Person ] = DeriveSchema .gen[Person ]
29
30
30
31
def spec : Spec [TestEnvironment , Any ] =
@@ -1696,14 +1697,15 @@ object JsonCodecSpec extends ZIOSpecDefault {
1696
1697
assertDecodes(Schema [Command ], Command .Cash , charSequenceToByteChunk(""" {"type":"Cash","extraField":1}""" )) &>
1697
1698
assertDecodes(Schema [Command ], Command .Cash , charSequenceToByteChunk(""" {"extraField":1,"type":"Cash"}""" ))
1698
1699
),
1699
- suite(" of case objects" )(
1700
+ suite(" of case objects with less than 64 cases " )(
1700
1701
test(" without annotation" )(
1701
1702
assertEncodesThenDecodes(Schema [Color ], Color .Red )
1702
1703
),
1703
1704
test(" with caseName" )(
1704
1705
assertEncodesThenDecodes(Schema [Color ], Color .Grass ) &>
1705
1706
assertEncodesJson(Schema [Color ], Color .Grass , " \" Green\" " ) &>
1706
- assertDecodes(Schema [Color ], Color .Grass , charSequenceToByteChunk(" \" Green\" " ))
1707
+ assertDecodes(Schema [Color ], Color .Grass , charSequenceToByteChunk(" \" Green\" " )) &>
1708
+ assertDecodesToError(Schema [Color ], " \" Grass\" " , JsonError .Message (" unrecognized string" ) :: Nil )
1707
1709
),
1708
1710
test(" with caseAliases" )(
1709
1711
assertEncodesThenDecodes(Schema [Color ], Color .Blue ) &>
@@ -1715,6 +1717,24 @@ object JsonCodecSpec extends ZIOSpecDefault {
1715
1717
test(" invalid case" )(
1716
1718
assertDecodesToError(Schema [Color ], " \" not a color\" " , JsonError .Message (" unrecognized string" ) :: Nil )
1717
1719
)
1720
+ ),
1721
+ suite(" of case objects with 64 cases or more" )(
1722
+ test(" without annotation" )(
1723
+ assertEncodesThenDecodes(Schema [BigEnum ], BigEnum .Case69 )
1724
+ ),
1725
+ test(" with caseName" )(
1726
+ assertEncodesThenDecodes(Schema [BigEnum ], BigEnum .Case00 ) &>
1727
+ assertEncodesJson(Schema [BigEnum ], BigEnum .Case00 , " \" Case_00\" " ) &>
1728
+ assertDecodes(Schema [BigEnum ], BigEnum .Case00 , charSequenceToByteChunk(" \" Case_00\" " )) &>
1729
+ assertDecodesToError(Schema [BigEnum ], " \" Case00\" " , JsonError .Message (" unrecognized string" ) :: Nil )
1730
+ ),
1731
+ test(" with caseAliases" )(
1732
+ assertEncodesThenDecodes(Schema [BigEnum ], BigEnum .Case00 ) &>
1733
+ assertDecodes(Schema [BigEnum ], BigEnum .Case00 , charSequenceToByteChunk(" \" Case-00\" " ))
1734
+ ),
1735
+ test(" invalid case" )(
1736
+ assertDecodesToError(Schema [BigEnum ], " \" CaseXX\" " , JsonError .Message (" unrecognized string" ) :: Nil )
1737
+ )
1718
1738
)
1719
1739
),
1720
1740
suite(" transform" )(
@@ -2202,8 +2222,11 @@ object JsonCodecSpec extends ZIOSpecDefault {
2202
2222
)
2203
2223
2204
2224
sealed trait OneOf
2205
- case class StringValue (value : String ) extends OneOf
2206
- case class IntValue (value : Int ) extends OneOf
2225
+
2226
+ case class StringValue (value : String ) extends OneOf
2227
+
2228
+ case class IntValue (value : Int ) extends OneOf
2229
+
2207
2230
case class BooleanValue (value : Boolean ) extends OneOf
2208
2231
2209
2232
object OneOf {
@@ -2218,9 +2241,13 @@ object JsonCodecSpec extends ZIOSpecDefault {
2218
2241
2219
2242
@ discriminatorName(" _type" )
2220
2243
sealed trait OneOf2
2221
- case class StringValue2 (value : String ) extends OneOf2
2222
- case class IntValue2 (value : Int ) extends OneOf2
2223
- case class BooleanValue2 (value : Boolean ) extends OneOf2
2244
+
2245
+ case class StringValue2 (value : String ) extends OneOf2
2246
+
2247
+ case class IntValue2 (value : Int ) extends OneOf2
2248
+
2249
+ case class BooleanValue2 (value : Boolean ) extends OneOf2
2250
+
2224
2251
case class `StringValue2-Backticked` (value1 : String , value2 : String ) extends OneOf2
2225
2252
2226
2253
case class Enumeration2 (oneOf : OneOf2 )
@@ -2231,11 +2258,16 @@ object JsonCodecSpec extends ZIOSpecDefault {
2231
2258
2232
2259
@ noDiscriminator
2233
2260
sealed trait OneOf3
2234
- case class StringValue3 (value : String ) extends OneOf3
2235
- case class IntValue3 (value : Int ) extends OneOf3
2236
- case class BooleanValue3 (value : Boolean ) extends OneOf3
2261
+
2262
+ case class StringValue3 (value : String ) extends OneOf3
2263
+
2264
+ case class IntValue3 (value : Int ) extends OneOf3
2265
+
2266
+ case class BooleanValue3 (value : Boolean ) extends OneOf3
2267
+
2237
2268
case class `StringValue3-Backticked` (value1 : String , value2 : String ) extends OneOf3
2238
- case class Nested (oneOf : OneOf3 ) extends OneOf3
2269
+
2270
+ case class Nested (oneOf : OneOf3 ) extends OneOf3
2239
2271
2240
2272
case class Enumeration3 (oneOf : OneOf3 )
2241
2273
@@ -2262,19 +2294,22 @@ object JsonCodecSpec extends ZIOSpecDefault {
2262
2294
2263
2295
object Command {
2264
2296
case class Buy (credits : Int ) extends Command
2265
- case object Cash extends Command
2297
+
2298
+ case object Cash extends Command
2266
2299
2267
2300
implicit val schema : Schema [Command ] = DeriveSchema .gen[Command ]
2268
2301
}
2269
2302
2270
2303
case object Singleton
2304
+
2271
2305
implicit val schemaObject : Schema [Singleton .type ] = DeriveSchema .gen[Singleton .type ]
2272
2306
2273
2307
case class Key (name : String , index : Int )
2274
2308
2275
2309
object Key {
2276
2310
implicit lazy val schema : Schema [Key ] = DeriveSchema .gen[Key ]
2277
2311
}
2312
+
2278
2313
case class Value (first : Int , second : Boolean )
2279
2314
2280
2315
object Value {
@@ -2326,10 +2361,12 @@ object JsonCodecSpec extends ZIOSpecDefault {
2326
2361
object Order {
2327
2362
implicit lazy val schema : Schema [Order ] = DeriveSchema .gen[Order ]
2328
2363
}
2364
+
2329
2365
@ noDiscriminator sealed trait Prompt
2330
2366
2331
2367
object Prompt {
2332
- final case class Single (value : String ) extends Prompt
2368
+ final case class Single (value : String ) extends Prompt
2369
+
2333
2370
final case class Multiple (value : List [String ]) extends Prompt
2334
2371
2335
2372
implicit lazy val schema : Schema [Prompt ] = DeriveSchema .gen[Prompt ]
@@ -2505,7 +2542,8 @@ object JsonCodecSpec extends ZIOSpecDefault {
2505
2542
object Enum23Cases {
2506
2543
implicit lazy val schema : Schema [Enum23Cases ] = DeriveSchema .gen[Enum23Cases ]
2507
2544
2508
- @ caseName(" NumberOne" ) @ caseNameAliases(" One" ) case class Case1 (value : String ) extends Enum23Cases
2545
+ @ caseName(" NumberOne" )
2546
+ @ caseNameAliases(" One" ) case class Case1 (value : String ) extends Enum23Cases
2509
2547
2510
2548
case class Case2 (value : Int ) extends Enum23Cases
2511
2549
@@ -2563,4 +2601,84 @@ object JsonCodecSpec extends ZIOSpecDefault {
2563
2601
object BacktickedFieldName {
2564
2602
implicit val schema : Schema [BacktickedFieldName ] = DeriveSchema .gen
2565
2603
}
2604
+
2605
+ sealed trait BigEnum
2606
+
2607
+ object BigEnum {
2608
+
2609
+ @ caseName(" Case_00" )
2610
+ @ caseNameAliases(" Case-00" )
2611
+ case object Case00 extends BigEnum
2612
+ case object Case01 extends BigEnum
2613
+ case object Case02 extends BigEnum
2614
+ case object Case03 extends BigEnum
2615
+ case object Case04 extends BigEnum
2616
+ case object Case05 extends BigEnum
2617
+ case object Case06 extends BigEnum
2618
+ case object Case07 extends BigEnum
2619
+ case object Case08 extends BigEnum
2620
+ case object Case09 extends BigEnum
2621
+ case object Case10 extends BigEnum
2622
+ case object Case11 extends BigEnum
2623
+ case object Case12 extends BigEnum
2624
+ case object Case13 extends BigEnum
2625
+ case object Case14 extends BigEnum
2626
+ case object Case15 extends BigEnum
2627
+ case object Case16 extends BigEnum
2628
+ case object Case17 extends BigEnum
2629
+ case object Case18 extends BigEnum
2630
+ case object Case19 extends BigEnum
2631
+ case object Case20 extends BigEnum
2632
+ case object Case21 extends BigEnum
2633
+ case object Case22 extends BigEnum
2634
+ case object Case23 extends BigEnum
2635
+ case object Case24 extends BigEnum
2636
+ case object Case25 extends BigEnum
2637
+ case object Case26 extends BigEnum
2638
+ case object Case27 extends BigEnum
2639
+ case object Case28 extends BigEnum
2640
+ case object Case29 extends BigEnum
2641
+ case object Case30 extends BigEnum
2642
+ case object Case31 extends BigEnum
2643
+ case object Case32 extends BigEnum
2644
+ case object Case33 extends BigEnum
2645
+ case object Case34 extends BigEnum
2646
+ case object Case35 extends BigEnum
2647
+ case object Case36 extends BigEnum
2648
+ case object Case37 extends BigEnum
2649
+ case object Case38 extends BigEnum
2650
+ case object Case39 extends BigEnum
2651
+ case object Case40 extends BigEnum
2652
+ case object Case41 extends BigEnum
2653
+ case object Case42 extends BigEnum
2654
+ case object Case43 extends BigEnum
2655
+ case object Case44 extends BigEnum
2656
+ case object Case45 extends BigEnum
2657
+ case object Case46 extends BigEnum
2658
+ case object Case47 extends BigEnum
2659
+ case object Case48 extends BigEnum
2660
+ case object Case49 extends BigEnum
2661
+ case object Case50 extends BigEnum
2662
+ case object Case51 extends BigEnum
2663
+ case object Case52 extends BigEnum
2664
+ case object Case53 extends BigEnum
2665
+ case object Case54 extends BigEnum
2666
+ case object Case55 extends BigEnum
2667
+ case object Case56 extends BigEnum
2668
+ case object Case57 extends BigEnum
2669
+ case object Case58 extends BigEnum
2670
+ case object Case59 extends BigEnum
2671
+ case object Case60 extends BigEnum
2672
+ case object Case61 extends BigEnum
2673
+ case object Case62 extends BigEnum
2674
+ case object Case63 extends BigEnum
2675
+ case object Case64 extends BigEnum
2676
+ case object Case65 extends BigEnum
2677
+ case object Case66 extends BigEnum
2678
+ case object Case67 extends BigEnum
2679
+ case object Case68 extends BigEnum
2680
+ case object Case69 extends BigEnum
2681
+
2682
+ implicit val schema : Schema [BigEnum ] = DeriveSchema .gen
2683
+ }
2566
2684
}
0 commit comments