@@ -31,6 +31,10 @@ object SchemaSpec extends ZIOSpecDefault {
3131 assert(Schema (long4))(not(equalTo(Schema [Long ]))) &&
3232 assert(Schema (long5))(not(equalTo(Schema [Long ])))
3333 },
34+ test(" updates primitive default value" ) {
35+ assert(Schema [Int ].reflect.binding.defaultValue)(isNone) &&
36+ assert(Schema [Int ].defaultValue(1 ).reflect.binding.defaultValue.get.apply())(equalTo(1 ))
37+ },
3438 test(" has access to primitive documentation" ) {
3539 val long1 = Primitive (
3640 primitiveType = PrimitiveType .Long (Validation .None ),
@@ -116,6 +120,10 @@ object SchemaSpec extends ZIOSpecDefault {
116120 assert(record3.registers(0 ).usedRegisters)(equalTo(RegisterOffset (objects = 1 ))) &&
117121 assert(record3.usedRegisters)(equalTo(record3.registers.foldLeft(0 )(_ + _.usedRegisters)))
118122 },
123+ test(" updates record default value" ) {
124+ assert(Record .schema.reflect.binding.defaultValue)(isNone) &&
125+ assert(Record .schema.defaultValue(Record (1 , 2 )).reflect.binding.defaultValue.get.apply())(equalTo(Record (1 , 2 )))
126+ },
119127 test(" has access to record documentation" ) {
120128 assert(Record .schema.doc)(equalTo(Doc (" Record with 2 fields" )))
121129 },
@@ -164,6 +172,10 @@ object SchemaSpec extends ZIOSpecDefault {
164172 assert(Schema (variant4))(not(equalTo(Variant .schema))) &&
165173 assert(Schema (variant5))(not(equalTo(Variant .schema)))
166174 },
175+ test(" updates variant default value" ) {
176+ assert(Variant .schema.reflect.binding.defaultValue)(isNone) &&
177+ assert(Variant .schema.defaultValue(Case1 (1.0 )).reflect.binding.defaultValue.get.apply())(equalTo(Case1 (1.0 )))
178+ },
167179 test(" has access to variant documentation" ) {
168180 assert(Variant .schema.doc)(equalTo(Doc (" Variant with 2 cases" )))
169181 },
@@ -211,6 +223,10 @@ object SchemaSpec extends ZIOSpecDefault {
211223 assert(Schema (sequence4))(not(equalTo(Schema [List [Double ]]))) &&
212224 assert(Schema (sequence5))(not(equalTo(Schema [List [Double ]])))
213225 },
226+ test(" updates sequence default value" ) {
227+ assert(Schema [List [Int ]].reflect.binding.defaultValue)(isNone) &&
228+ assert(Schema [List [Int ]].defaultValue(Nil ).reflect.binding.defaultValue.get.apply())(equalTo(Nil ))
229+ },
214230 test(" has access to sequence documentation" ) {
215231 val sequence1 = Reflect .Sequence [Binding , Double , List ](
216232 element = Reflect .double,
@@ -311,6 +327,12 @@ object SchemaSpec extends ZIOSpecDefault {
311327 assert(Schema (map5))(not(equalTo(Schema [Map [Short , Float ]]))) &&
312328 assert(Schema (map6))(not(equalTo(Schema [Map [Short , Float ]])))
313329 },
330+ test(" updates map default value" ) {
331+ assert(Schema [Map [Int , Long ]].reflect.binding.defaultValue)(isNone) &&
332+ assert(Schema [Map [Int , Long ]].defaultValue(Map .empty).reflect.binding.defaultValue.get.apply())(
333+ equalTo(Map .empty[Int , Long ])
334+ )
335+ },
314336 test(" has access to map documentation" ) {
315337 val map1 = Reflect .Map [Binding , Int , Long , Map ](
316338 key = Reflect .int,
@@ -435,6 +457,23 @@ object SchemaSpec extends ZIOSpecDefault {
435457 assert(Schema (dynamic3))(not(equalTo(Schema (dynamic1)))) &&
436458 assert(Schema (dynamic4))(not(equalTo(Schema (dynamic1))))
437459 },
460+ test(" updates dynamic default value" ) {
461+ val dynamic1 = Reflect .Dynamic [Binding ](
462+ dynamicBinding = Binding .Dynamic (),
463+ doc = Doc .Empty ,
464+ modifiers = Nil
465+ )
466+ assert(Schema (dynamic1).reflect.binding.defaultValue)(isNone) &&
467+ assert(
468+ Schema (dynamic1)
469+ .defaultValue(DynamicValue .Primitive (PrimitiveValue .Int (0 )))
470+ .reflect
471+ .binding
472+ .defaultValue
473+ .get
474+ .apply()
475+ )(equalTo(DynamicValue .Primitive (PrimitiveValue .Int (0 ))))
476+ },
438477 test(" has access to dynamic documentation" ) {
439478 val dynamic1 = Reflect .Dynamic [Binding ](
440479 dynamicBinding = Binding .Dynamic (),
@@ -453,11 +492,11 @@ object SchemaSpec extends ZIOSpecDefault {
453492 },
454493 test(" has access to dynamic examples" ) {
455494 val dynamic1 = Reflect .Dynamic [Binding ](
456- dynamicBinding = Binding .Dynamic (),
457- doc = Doc ( " Dynamic " ) ,
495+ dynamicBinding = Binding .Dynamic (examples = DynamicValue . Primitive ( PrimitiveValue . Int ( 0 )) :: Nil ),
496+ doc = Doc . Empty ,
458497 modifiers = Nil
459498 )
460- assert(Schema (dynamic1).examples)(equalTo(Nil ))
499+ assert(Schema (dynamic1).examples)(equalTo(DynamicValue . Primitive ( PrimitiveValue . Int ( 0 )) :: Nil ))
461500 },
462501 test(" updates dynamic examples" ) {
463502 val dynamic1 = Reflect .Dynamic [Binding ](
@@ -487,6 +526,19 @@ object SchemaSpec extends ZIOSpecDefault {
487526 assert(Schema (deferred4))(not(equalTo(Schema (deferred1)))) &&
488527 assert(Schema (deferred5))(not(equalTo(Schema (deferred1))))
489528 },
529+ test(" updates deferred default value" ) {
530+ val deferred1 = Reflect .Deferred [Binding , Int ] { () =>
531+ Primitive (
532+ PrimitiveType .Int (Validation .Numeric .Positive ),
533+ Binding .Primitive .int,
534+ TypeName .int,
535+ Doc .Empty ,
536+ Nil
537+ )
538+ }
539+ assert(Schema (deferred1).reflect.binding.defaultValue)(isNone) &&
540+ assert(Schema (deferred1).defaultValue(1 ).reflect.binding.defaultValue.get.apply())(equalTo(1 ))
541+ },
490542 test(" has access to deferred documentation" ) {
491543 val deferred1 = Reflect .Deferred [Binding , Int ] { () =>
492544 Primitive (
0 commit comments