2727
2828import java .io .IOException ;
2929import java .util .ArrayList ;
30+ import java .util .Arrays ;
3031import java .util .HashMap ;
3132import java .util .List ;
3233import java .util .Map ;
@@ -43,16 +44,35 @@ public static TestModel createRandomInstance() {
4344 }
4445
4546 public static TestModel createRandomInstance (TaskType taskType ) {
46- return createRandomInstance (taskType , null );
47+ return createRandomInstance (taskType , null , null );
4748 }
4849
49- public static TestModel createRandomInstance (TaskType taskType , List <SimilarityMeasure > excludedSimilarities ) {
50+ public static TestModel createRandomInstance (
51+ TaskType taskType ,
52+ List <DenseVectorFieldMapper .ElementType > excludedElementTypes ,
53+ List <SimilarityMeasure > excludedSimilarities
54+ ) {
5055 // Use a max dimension count that has a reasonable probability of being compatible with BBQ
51- return createRandomInstance (taskType , excludedSimilarities , BBQ_MIN_DIMS * 2 );
56+ return createRandomInstance (taskType , excludedElementTypes , excludedSimilarities , BBQ_MIN_DIMS * 2 );
5257 }
5358
54- public static TestModel createRandomInstance (TaskType taskType , List <SimilarityMeasure > excludedSimilarities , int maxDimensions ) {
55- var elementType = taskType == TaskType .TEXT_EMBEDDING ? randomFrom (DenseVectorFieldMapper .ElementType .values ()) : null ;
59+ public static TestModel createRandomInstance (
60+ TaskType taskType ,
61+ List <DenseVectorFieldMapper .ElementType > excludedElementTypes ,
62+ List <SimilarityMeasure > excludedSimilarities ,
63+ int maxDimensions
64+ ) {
65+ List <DenseVectorFieldMapper .ElementType > supportedElementTypes = new ArrayList <>(
66+ Arrays .asList (DenseVectorFieldMapper .ElementType .values ())
67+ );
68+ if (excludedElementTypes != null ) {
69+ supportedElementTypes .removeAll (excludedElementTypes );
70+ if (supportedElementTypes .isEmpty ()) {
71+ throw new IllegalArgumentException ("No supported element types with excluded element types " + excludedElementTypes );
72+ }
73+ }
74+
75+ var elementType = taskType == TaskType .TEXT_EMBEDDING ? randomFrom (supportedElementTypes ) : null ;
5676 var dimensions = taskType == TaskType .TEXT_EMBEDDING
5777 ? DenseVectorFieldMapperTestUtils .randomCompatibleDimensions (elementType , maxDimensions )
5878 : null ;
0 commit comments