< prev index next >

test/jdk/jdk/incubator/vector/MethodOverideTest.java

Print this page
rev 55590 : added missing javadocs, changed jtreg test
rev 55594 : tests and benchmark changes


  44 import java.lang.reflect.Modifier;
  45 import java.util.ArrayList;
  46 import java.util.List;
  47 import java.util.stream.Collectors;
  48 import java.util.stream.Stream;
  49 
  50 public class MethodOverideTest {
  51 
  52     @DataProvider
  53     public static Object[][] vectorClassesProvider() {
  54         return Stream.of(
  55                 ByteVector.class,
  56                 ShortVector.class,
  57                 IntVector.class,
  58                 FloatVector.class,
  59                 DoubleVector.class).
  60                 map(c -> new Object[]{c}).
  61                 toArray(Object[][]::new);
  62     }
  63 
  64     @DataProvider
  65     public static Object[][] speciesClassesProvider() {
  66         return Stream.of(
  67                 ByteVector.ByteSpecies.class,
  68                 ShortVector.ShortSpecies.class,
  69                 IntVector.IntSpecies.class,
  70                 FloatVector.FloatSpecies.class,
  71                 DoubleVector.DoubleSpecies.class).
  72                 map(c -> new Object[]{c}).
  73                 toArray(Object[][]::new);
  74     }
  75 
  76     static List<Object> getConcreteSpeciesInstances(Class<?> primitiveVectorClass) {
  77         try {
  78             Method species = primitiveVectorClass.getMethod("species", Shape.class);
  79 
  80             List<Object> csis = new ArrayList<>();
  81             for (Field sf : Shape.class.getFields()) {
  82                 if (Shape.class.isAssignableFrom(sf.getType())) {
  83                     Shape s = (Shape) sf.get(null);
  84                     Object speciesInstance = species.invoke(null, s);
  85 
  86                     csis.add(speciesInstance);
  87                 }
  88             }
  89             return csis;
  90         }
  91         catch (ReflectiveOperationException e) {
  92             throw new InternalError(e);
  93         }
  94     }
  95 
  96     static List<Class<?>> getConcreteSpeciesClasses(Class<?> primitiveSpeciesClass) {
  97         return getConcreteSpeciesInstances(primitiveSpeciesClass.getEnclosingClass()).stream().
  98                 map(Object::getClass).
  99                 collect(Collectors.toList());
 100     }
 101 
 102     static List<Class<?>> getConcreteVectorClasses(Class<?> primitiveVectorClass) {
 103         try {
 104             List<Class<?>> cvcs = new ArrayList<>();
 105             for (Object speciesInstance : getConcreteSpeciesInstances(primitiveVectorClass)) {
 106                     Method zero = speciesInstance.getClass().getSuperclass().getMethod("zero");
 107                     Object vectorInstance = zero.invoke(speciesInstance);
 108 
 109                     cvcs.add(vectorInstance.getClass());
 110             }
 111             return cvcs;
 112         }
 113         catch (ReflectiveOperationException e) {
 114             throw new InternalError(e);
 115         }
 116     }
 117 
 118     static List<Method> getDeclaredPublicAndNonAbstractMethods(Class<?> c) {
 119         return Stream.of(c.getDeclaredMethods()).
 120                 filter(cc -> Modifier.isPublic(cc.getModifiers())).
 121                 filter(cc -> !Modifier.isAbstract(cc.getModifiers())).
 122                 filter(cc -> !Modifier.isFinal(cc.getModifiers())).
 123                 filter(cc -> !cc.isSynthetic()).
 124                 collect(Collectors.toList());
 125     }
 126 
 127     static int checkMethods(Class<?> primitiveClass, List<Class<?>> concreteClasses) {


 147             }
 148 
 149             System.out.println(cc.getName() + " <- " + primitiveClass.getName());
 150             System.out.println("--Methods overridden that can be abstract");
 151             overriddenMethods.stream().forEach(m -> System.out.println("    " + m));
 152 
 153             System.out.println("--Methods not overridden that may need to be so and use intrinsics");
 154             notOverriddenMethods.stream().forEach(m -> System.out.println("    " + m));
 155             notOverriddenMethodsCount += notOverriddenMethods.size();
 156         }
 157 
 158         return notOverriddenMethodsCount;
 159     }
 160 
 161     @Test(dataProvider = "vectorClassesProvider")
 162     public void checkMethodsOnPrimitiveVector(Class<?> primitiveVector) {
 163         int nonIntrinsicMethods = checkMethods(primitiveVector, getConcreteVectorClasses(primitiveVector));
 164 
 165 //        Assert.assertEquals(nonIntrinsicMethods, 0);
 166     }
 167 
 168     @Test(dataProvider = "speciesClassesProvider")
 169     public void checkMethodsOnPrimitiveSpecies(Class<?> primitiveSpecies) {
 170         int nonIntrinsicMethods = checkMethods(primitiveSpecies, getConcreteSpeciesClasses(primitiveSpecies));
 171 
 172 //        Assert.assertEquals(nonIntrinsicMethods, 0);
 173     }
 174 
 175 }


  44 import java.lang.reflect.Modifier;
  45 import java.util.ArrayList;
  46 import java.util.List;
  47 import java.util.stream.Collectors;
  48 import java.util.stream.Stream;
  49 
  50 public class MethodOverideTest {
  51 
  52     @DataProvider
  53     public static Object[][] vectorClassesProvider() {
  54         return Stream.of(
  55                 ByteVector.class,
  56                 ShortVector.class,
  57                 IntVector.class,
  58                 FloatVector.class,
  59                 DoubleVector.class).
  60                 map(c -> new Object[]{c}).
  61                 toArray(Object[][]::new);
  62     }
  63 












  64     static List<Object> getConcreteSpeciesInstances(Class<?> primitiveVectorClass) {
  65         try {


  66             List<Object> csis = new ArrayList<>();
  67             for (Field sf : primitiveVectorClass.getFields()) {
  68                 if (Vector.Species.class.isAssignableFrom(sf.getType())) {
  69                     csis.add(sf.get(null));



  70                 }
  71             }
  72             return csis;
  73         }
  74         catch (ReflectiveOperationException e) {
  75             throw new InternalError(e);
  76         }
  77     }
  78 






  79     static List<Class<?>> getConcreteVectorClasses(Class<?> primitiveVectorClass) {
  80         try {
  81             List<Class<?>> cvcs = new ArrayList<>();
  82             for (Object speciesInstance : getConcreteSpeciesInstances(primitiveVectorClass)) {
  83                     Method zero = primitiveVectorClass.getMethod("zero", Vector.Species.class);
  84                     Object vectorInstance = zero.invoke(null, speciesInstance);
  85 
  86                     cvcs.add(vectorInstance.getClass());
  87             }
  88             return cvcs;
  89         }
  90         catch (ReflectiveOperationException e) {
  91             throw new InternalError(e);
  92         }
  93     }
  94 
  95     static List<Method> getDeclaredPublicAndNonAbstractMethods(Class<?> c) {
  96         return Stream.of(c.getDeclaredMethods()).
  97                 filter(cc -> Modifier.isPublic(cc.getModifiers())).
  98                 filter(cc -> !Modifier.isAbstract(cc.getModifiers())).
  99                 filter(cc -> !Modifier.isFinal(cc.getModifiers())).
 100                 filter(cc -> !cc.isSynthetic()).
 101                 collect(Collectors.toList());
 102     }
 103 
 104     static int checkMethods(Class<?> primitiveClass, List<Class<?>> concreteClasses) {


 124             }
 125 
 126             System.out.println(cc.getName() + " <- " + primitiveClass.getName());
 127             System.out.println("--Methods overridden that can be abstract");
 128             overriddenMethods.stream().forEach(m -> System.out.println("    " + m));
 129 
 130             System.out.println("--Methods not overridden that may need to be so and use intrinsics");
 131             notOverriddenMethods.stream().forEach(m -> System.out.println("    " + m));
 132             notOverriddenMethodsCount += notOverriddenMethods.size();
 133         }
 134 
 135         return notOverriddenMethodsCount;
 136     }
 137 
 138     @Test(dataProvider = "vectorClassesProvider")
 139     public void checkMethodsOnPrimitiveVector(Class<?> primitiveVector) {
 140         int nonIntrinsicMethods = checkMethods(primitiveVector, getConcreteVectorClasses(primitiveVector));
 141 
 142 //        Assert.assertEquals(nonIntrinsicMethods, 0);
 143     }








 144 }
< prev index next >