@@ -857,3 +857,42 @@ def test_json_serialization(self, icf_path):
857
857
858
858
assert isinstance (schema2 .dimensions ["variants" ], vcz .VcfZarrDimension )
859
859
assert isinstance (schema2 .dimensions ["samples" ], vcz .VcfZarrDimension )
860
+
861
+
862
+ class TestDimensionSizes :
863
+ data_path = "tests/data/vcf/field_type_combos.vcf.gz"
864
+
865
+ @pytest .fixture (scope = "class" )
866
+ def icf (self , tmp_path_factory ):
867
+ out = tmp_path_factory .mktemp ("data" ) / "example.exploded"
868
+ return icf_mod .explode (out , [self .data_path ])
869
+
870
+ @pytest .fixture (scope = "class" )
871
+ def schema (self , icf ):
872
+ return icf .generate_schema ()
873
+
874
+ @pytest .mark .parametrize (
875
+ ("vcf_number" , "dimensions" , "field" ),
876
+ [
877
+ ("A" , "alt_alleles" , "FORMAT/FIA" ),
878
+ ("R" , "alleles" , "FORMAT/FIR" ),
879
+ ("G" , "genotypes" , "FORMAT/FIG" ),
880
+ ],
881
+ )
882
+ def test_max_number_exceeds_dimension_size (
883
+ self , icf , schema , vcf_number , dimensions , field
884
+ ):
885
+ vcf_field = icf .fields [field ].vcf_field
886
+ assert vcf_field .vcf_number == vcf_number
887
+ # this should not fail
888
+ vcz .ZarrArraySpec .from_field (vcf_field , schema )
889
+
890
+ # change max number to be bigger than that allowed by vcf number
891
+ max_number = schema .dimensions [dimensions ].size + 1
892
+ vcf_field .summary .max_number = max_number
893
+
894
+ # creating an array spec should now fail
895
+ with pytest .raises (
896
+ ValueError , match = f"Max number of values { max_number } exceeds max"
897
+ ):
898
+ vcz .ZarrArraySpec .from_field (vcf_field , schema )
0 commit comments