@@ -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 ),
@@ -41,6 +45,9 @@ object SchemaSpec extends ZIOSpecDefault {
4145 )
4246 assert(Schema (long1).doc)(equalTo(Doc (" Long (positive)" )))
4347 },
48+ test(" updates primitive documentation" ) {
49+ assert(Schema [Int ].doc(" Int (updated)" ).doc)(equalTo(Doc (" Int (updated)" )))
50+ },
4451 test(" has access to primitive examples" ) {
4552 val long1 = Primitive (
4653 primitiveType = PrimitiveType .Long (Validation .Numeric .Positive ),
@@ -50,6 +57,9 @@ object SchemaSpec extends ZIOSpecDefault {
5057 modifiers = Nil
5158 )
5259 assert(Schema (long1).examples)(equalTo(List (1L , 2L , 3L )))
60+ },
61+ test(" updates primitive examples" ) {
62+ assert(Schema [Int ].examples(1 , 2 , 3 ).examples)(equalTo(List (1 , 2 , 3 )))
5363 }
5464 ),
5565 suite(" Reflect.Record" )(
@@ -110,6 +120,10 @@ object SchemaSpec extends ZIOSpecDefault {
110120 assert(record3.registers(0 ).usedRegisters)(equalTo(RegisterOffset (objects = 1 ))) &&
111121 assert(record3.usedRegisters)(equalTo(record3.registers.foldLeft(0 )(_ + _.usedRegisters)))
112122 },
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+ },
113127 test(" has access to record documentation" ) {
114128 assert(Record .schema.doc)(equalTo(Doc (" Record with 2 fields" )))
115129 },
@@ -158,6 +172,10 @@ object SchemaSpec extends ZIOSpecDefault {
158172 assert(Schema (variant4))(not(equalTo(Variant .schema))) &&
159173 assert(Schema (variant5))(not(equalTo(Variant .schema)))
160174 },
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+ },
161179 test(" has access to variant documentation" ) {
162180 assert(Variant .schema.doc)(equalTo(Doc (" Variant with 2 cases" )))
163181 },
@@ -205,6 +223,10 @@ object SchemaSpec extends ZIOSpecDefault {
205223 assert(Schema (sequence4))(not(equalTo(Schema [List [Double ]]))) &&
206224 assert(Schema (sequence5))(not(equalTo(Schema [List [Double ]])))
207225 },
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+ },
208230 test(" has access to sequence documentation" ) {
209231 val sequence1 = Reflect .Sequence [Binding , Double , List ](
210232 element = Reflect .double,
@@ -305,6 +327,12 @@ object SchemaSpec extends ZIOSpecDefault {
305327 assert(Schema (map5))(not(equalTo(Schema [Map [Short , Float ]]))) &&
306328 assert(Schema (map6))(not(equalTo(Schema [Map [Short , Float ]])))
307329 },
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+ },
308336 test(" has access to map documentation" ) {
309337 val map1 = Reflect .Map [Binding , Int , Long , Map ](
310338 key = Reflect .int,
@@ -429,6 +457,23 @@ object SchemaSpec extends ZIOSpecDefault {
429457 assert(Schema (dynamic3))(not(equalTo(Schema (dynamic1)))) &&
430458 assert(Schema (dynamic4))(not(equalTo(Schema (dynamic1))))
431459 },
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+ },
432477 test(" has access to dynamic documentation" ) {
433478 val dynamic1 = Reflect .Dynamic [Binding ](
434479 dynamicBinding = Binding .Dynamic (),
@@ -447,11 +492,11 @@ object SchemaSpec extends ZIOSpecDefault {
447492 },
448493 test(" has access to dynamic examples" ) {
449494 val dynamic1 = Reflect .Dynamic [Binding ](
450- dynamicBinding = Binding .Dynamic (),
451- doc = Doc ( " Dynamic " ) ,
495+ dynamicBinding = Binding .Dynamic (examples = DynamicValue . Primitive ( PrimitiveValue . Int ( 0 )) :: Nil ),
496+ doc = Doc . Empty ,
452497 modifiers = Nil
453498 )
454- assert(Schema (dynamic1).examples)(equalTo(Nil ))
499+ assert(Schema (dynamic1).examples)(equalTo(DynamicValue . Primitive ( PrimitiveValue . Int ( 0 )) :: Nil ))
455500 },
456501 test(" updates dynamic examples" ) {
457502 val dynamic1 = Reflect .Dynamic [Binding ](
@@ -481,6 +526,19 @@ object SchemaSpec extends ZIOSpecDefault {
481526 assert(Schema (deferred4))(not(equalTo(Schema (deferred1)))) &&
482527 assert(Schema (deferred5))(not(equalTo(Schema (deferred1))))
483528 },
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+ },
484542 test(" has access to deferred documentation" ) {
485543 val deferred1 = Reflect .Deferred [Binding , Int ] { () =>
486544 Primitive (
0 commit comments