@@ -154,6 +154,12 @@ def test_dump_retry
154
154
end
155
155
156
156
class OpenAI ::Test ::EnumModelTest < Minitest ::Test
157
+ class E0
158
+ include OpenAI ::Internal ::Type ::Enum
159
+
160
+ def initialize ( *values ) = ( @values = values )
161
+ end
162
+
157
163
module E1
158
164
extend OpenAI ::Internal ::Type ::Enum
159
165
@@ -183,6 +189,10 @@ module E4
183
189
184
190
def test_coerce
185
191
cases = {
192
+ [ E0 . new , "one" ] => [ { no : 1 } , "one" ] ,
193
+ [ E0 . new ( :one ) , "one" ] => [ { yes : 1 } , :one ] ,
194
+ [ E0 . new ( :two ) , "one" ] => [ { maybe : 1 } , "one" ] ,
195
+
186
196
# rubocop:disable Lint/BooleanSymbol
187
197
[ E1 , true ] => [ { yes : 1 } , true ] ,
188
198
[ E1 , false ] => [ { no : 1 } , false ] ,
@@ -432,8 +442,10 @@ def test_accessors
432
442
end
433
443
434
444
class OpenAI ::Test ::UnionTest < Minitest ::Test
435
- module U0
436
- extend OpenAI ::Internal ::Type ::Union
445
+ class U0
446
+ include OpenAI ::Internal ::Type ::Union
447
+
448
+ def initialize ( *variants ) = variants . each { variant ( _1 ) }
437
449
end
438
450
439
451
module U1
@@ -519,6 +531,11 @@ def test_coerce
519
531
cases = {
520
532
[ U0 , :"" ] => [ { no : 1 } , 0 , :"" ] ,
521
533
534
+ [ U0 . new ( Integer , Float ) , "one" ] => [ { no : 1 } , 2 , "one" ] ,
535
+ [ U0 . new ( Integer , Float ) , 1.0 ] => [ { yes : 1 } , 2 , 1.0 ] ,
536
+ [ U0 . new ( { const : :a } ) , "a" ] => [ { yes : 1 } , 1 , :a ] ,
537
+ [ U0 . new ( { const : :a } ) , "2" ] => [ { maybe : 1 } , 1 , "2" ] ,
538
+
522
539
[ U1 , "a" ] => [ { yes : 1 } , 1 , :a ] ,
523
540
[ U1 , "2" ] => [ { maybe : 1 } , 2 , "2" ] ,
524
541
[ U1 , :b ] => [ { maybe : 1 } , 2 , :b ] ,
@@ -556,6 +573,12 @@ def test_coerce
556
573
end
557
574
558
575
class OpenAI ::Test ::BaseModelQoLTest < Minitest ::Test
576
+ class E0
577
+ include OpenAI ::Internal ::Type ::Enum
578
+
579
+ def initialize ( *values ) = ( @values = values )
580
+ end
581
+
559
582
module E1
560
583
extend OpenAI ::Internal ::Type ::Enum
561
584
@@ -575,6 +598,26 @@ module E3
575
598
B = 3
576
599
end
577
600
601
+ class U0
602
+ include OpenAI ::Internal ::Type ::Union
603
+
604
+ def initialize ( *variants ) = variants . each { variant ( _1 ) }
605
+ end
606
+
607
+ module U1
608
+ extend OpenAI ::Internal ::Type ::Union
609
+
610
+ variant String
611
+ variant Integer
612
+ end
613
+
614
+ module U2
615
+ extend OpenAI ::Internal ::Type ::Union
616
+
617
+ variant String
618
+ variant Integer
619
+ end
620
+
578
621
class M1 < OpenAI ::Internal ::Type ::BaseModel
579
622
required :a , Integer
580
623
end
@@ -592,8 +635,15 @@ def test_equality
592
635
[ OpenAI ::Internal ::Type ::Unknown , OpenAI ::Internal ::Type ::Unknown ] => true ,
593
636
[ OpenAI ::Internal ::Type ::Boolean , OpenAI ::Internal ::Type ::Boolean ] => true ,
594
637
[ OpenAI ::Internal ::Type ::Unknown , OpenAI ::Internal ::Type ::Boolean ] => false ,
638
+ [ E0 . new ( :a , :b ) , E0 . new ( :a , :b ) ] => true ,
639
+ [ E0 . new ( :a , :b ) , E0 . new ( :b , :a ) ] => true ,
640
+ [ E0 . new ( :a , :b ) , E0 . new ( :b , :c ) ] => false ,
595
641
[ E1 , E2 ] => true ,
596
642
[ E1 , E3 ] => false ,
643
+ [ U0 . new ( String , Integer ) , U0 . new ( String , Integer ) ] => true ,
644
+ [ U0 . new ( String , Integer ) , U0 . new ( Integer , String ) ] => false ,
645
+ [ U0 . new ( String , Float ) , U0 . new ( String , Integer ) ] => false ,
646
+ [ U1 , U2 ] => true ,
597
647
[ M1 , M2 ] => false ,
598
648
[ M1 , M3 ] => true
599
649
}
0 commit comments