private static Collection<UDFArguments> generateArguments() {
    List<UDFArguments> arguments = new ArrayList<>();

    List<ObjectInspector> primitives = new ArrayList<>();
    for (PrimitiveObjectInspector.PrimitiveCategory l : PrimitiveObjectInspector.PrimitiveCategory.values()) {
      if (l == PrimitiveObjectInspector.PrimitiveCategory.UNKNOWN) {
        continue;
      }
      primitives.add(PrimitiveObjectInspectorFactory.getPrimitiveJavaObjectInspector(l));
    }

    List<ObjectInspector> nonPrimitives = new ArrayList<>();
    for (ObjectInspector i : primitives) {
      nonPrimitives.add(getStandardListObjectInspector(i));
      nonPrimitives.add(getStandardStructObjectInspector(Arrays.asList("field1", "field2"), Arrays.asList(i, i)));
      nonPrimitives.add(getStandardUnionObjectInspector(Arrays.asList(i, i)));
      nonPrimitives.add(getStandardMapObjectInspector(i, i));
    }

    List<ObjectInspector> allTypes = new ArrayList<>(primitives);
    allTypes.addAll(nonPrimitives);
    for (ObjectInspector firstArgInspector : allTypes) {
      for (ObjectInspector secondArgInspector : allTypes) {
        arguments.add(new UDFArguments(firstArgInspector, secondArgInspector));
      }
    }
    return arguments;
  }
Tests for {@link GenericUDF#initialize(ObjectInspector[])} on the most common equality/comparison operators when 
arguments of various types are provided.

The tests cover positive and negative cases for the following operators:
<ul>
<li>{@link GenericUDFOPEqual}</li>
<li>{@link GenericUDFOPEqualNS}</li>
<li>{@link GenericUDFOPNotEqual}</li>
<li>{@link GenericUDFOPNotEqualNS}</li>
<li>{@link GenericUDFOPGreaterThan}</li>
<li>{@link GenericUDFOPEqualOrGreaterThan}</li>
<li>{@link GenericUDFOPLessThan}</li>
<li>{@link GenericUDFOPEqualOrLessThan}</li>
<li>{@link GenericUDFIn}</li>
</ul>
ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFInitializeOnCompareUDF.java