You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2019/06/18 13:17:18 UTC

[commons-numbers] 33/34: Add Generics in test classes of commons-numbers-field

This is an automated email from the ASF dual-hosted git repository.

erans pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-numbers.git

commit b1a114f406e90b2432b6e925cfcc2497477ce339
Author: Schamschi <he...@gmx.at>
AuthorDate: Sun Jun 16 17:44:28 2019 +0200

    Add Generics in test classes of commons-numbers-field
    
    Improve type safety by imposing equality constraints with type parameters
---
 .../commons/numbers/field/FieldParametricTest.java | 118 ++++++++++-----------
 .../commons/numbers/field/FieldTestData.java       |  28 ++---
 .../apache/commons/numbers/field/FieldsList.java   |   6 +-
 3 files changed, 71 insertions(+), 81 deletions(-)

diff --git a/commons-numbers-field/src/test/java/org/apache/commons/numbers/field/FieldParametricTest.java b/commons-numbers-field/src/test/java/org/apache/commons/numbers/field/FieldParametricTest.java
index 319edf2..4658a01 100644
--- a/commons-numbers-field/src/test/java/org/apache/commons/numbers/field/FieldParametricTest.java
+++ b/commons-numbers-field/src/test/java/org/apache/commons/numbers/field/FieldParametricTest.java
@@ -27,115 +27,105 @@ import java.util.stream.Stream;
  */
 public class FieldParametricTest {
 
-    private static Stream<FieldTestData> getList() {
+    private static Stream<FieldTestData<?>> getList() {
         return FieldsList.list().stream();
     }
 
     @ParameterizedTest
     @MethodSource("getList")
-    public void testAdditionAssociativity(FieldTestData data) {
-        Field field = data.getField();
-        Object a = data.getA();
-        Object b = data.getB();
-        Object c = data.getC();
-        final Object r1 = field.add(field.add(a, b), c);
-        final Object r2 = field.add(a, field.add(b, c));
+    public <T> void testAdditionAssociativity(FieldTestData<T> data) {
+        Field<T> field = data.getField();
+        T a = data.getA();
+        T b = data.getB();
+        T c = data.getC();
+        final T r1 = field.add(field.add(a, b), c);
+        final T r2 = field.add(a, field.add(b, c));
         assertEquals(r1, r2);
     }
 
     @ParameterizedTest
     @MethodSource("getList")
-    public void testAdditionCommutativity(FieldTestData data) {
-        Field field = data.getField();
-        Object a = data.getA();
-        Object b = data.getB();
-        Object c = data.getC();
-        final Object r1 = field.add(a, b);
-        final Object r2 = field.add(b, a);
+    public <T> void testAdditionCommutativity(FieldTestData<T> data) {
+        Field<T> field = data.getField();
+        T a = data.getA();
+        T b = data.getB();
+        final T r1 = field.add(a, b);
+        final T r2 = field.add(b, a);
         assertEquals(r1, r2);
     }
 
     @ParameterizedTest
     @MethodSource("getList")
-    public void testAdditiveIdentity(FieldTestData data) {
-        Field field = data.getField();
-        Object a = data.getA();
-        Object b = data.getB();
-        Object c = data.getC();
-        final Object r1 = field.add(a, field.zero());
-        final Object r2 = a;
+    public <T> void testAdditiveIdentity(FieldTestData<T> data) {
+        Field<T> field = data.getField();
+        T a = data.getA();
+        final T r1 = field.add(a, field.zero());
+        final T r2 = a;
         assertEquals(r1, r2);
     }
 
     @ParameterizedTest
     @MethodSource("getList")
-    public void testAdditiveInverse(FieldTestData data) {
-        Field field = data.getField();
-        Object a = data.getA();
-        Object b = data.getB();
-        Object c = data.getC();
-        final Object r1 = field.add(a, field.negate(a));
-        final Object r2 = field.zero();
+    public <T> void testAdditiveInverse(FieldTestData<T> data) {
+        Field<T> field = data.getField();
+        T a = data.getA();
+        final T r1 = field.add(a, field.negate(a));
+        final T r2 = field.zero();
         assertEquals(r1, r2);
     }
 
     @ParameterizedTest
     @MethodSource("getList")
-    public void testMultiplicationAssociativity(FieldTestData data) {
-        Field field = data.getField();
-        Object a = data.getA();
-        Object b = data.getB();
-        Object c = data.getC();
-        final Object r1 = field.multiply(field.multiply(a, b), c);
-        final Object r2 = field.multiply(a, field.multiply(b, c));
+    public <T> void testMultiplicationAssociativity(FieldTestData<T> data) {
+        Field<T> field = data.getField();
+        T a = data.getA();
+        T b = data.getB();
+        T c = data.getC();
+        final T r1 = field.multiply(field.multiply(a, b), c);
+        final T r2 = field.multiply(a, field.multiply(b, c));
         assertEquals(r1, r2);
     }
 
     @ParameterizedTest
     @MethodSource("getList")
-    public void testMultiplicationCommutativity(FieldTestData data) {
-        Field field = data.getField();
-        Object a = data.getA();
-        Object b = data.getB();
-        Object c = data.getC();
-        final Object r1 = field.multiply(a, b);
-        final Object r2 = field.multiply(b, a);
+    public <T> void testMultiplicationCommutativity(FieldTestData<T> data) {
+        Field<T> field = data.getField();
+        T a = data.getA();
+        T b = data.getB();
+        final T r1 = field.multiply(a, b);
+        final T r2 = field.multiply(b, a);
         assertEquals(r1, r2);
     }
 
     @ParameterizedTest
     @MethodSource("getList")
-    public void testMultiplicativeIdentity(FieldTestData data) {
-        Field field = data.getField();
-        Object a = data.getA();
-        Object b = data.getB();
-        Object c = data.getC();
-        final Object r1 = field.multiply(a, field.one());
-        final Object r2 = a;
+    public <T> void testMultiplicativeIdentity(FieldTestData<T> data) {
+        Field<T> field = data.getField();
+        T a = data.getA();
+        final T r1 = field.multiply(a, field.one());
+        final T r2 = a;
         assertEquals(r1, r2);
     }
 
     @ParameterizedTest
     @MethodSource("getList")
-    public void testMultiplicativeInverse(FieldTestData data) {
-        Field field = data.getField();
-        Object a = data.getA();
-        Object b = data.getB();
-        Object c = data.getC();
-        final Object r1 = field.multiply(a, field.reciprocal(a));
-        final Object r2 = field.one();
+    public <T> void testMultiplicativeInverse(FieldTestData<T> data) {
+        Field<T> field = data.getField();
+        T a = data.getA();
+        final T r1 = field.multiply(a, field.reciprocal(a));
+        final T r2 = field.one();
         assertEquals(r1, r2);
     }
 
     @ParameterizedTest
     @MethodSource("getList")
-    public void testDistributivity(FieldTestData data) {
-        Field field = data.getField();
-        Object a = data.getA();
-        Object b = data.getB();
-        Object c = data.getC();
-        final Object r1 = field.multiply(a, field.add(b, c));
-        final Object r2 = field.add(field.multiply(a, b), field.multiply(a, c));
+    public <T> void testDistributivity(FieldTestData<T> data) {
+        Field<T> field = data.getField();
+        T a = data.getA();
+        T b = data.getB();
+        T c = data.getC();
+        final T r1 = field.multiply(a, field.add(b, c));
+        final T r2 = field.add(field.multiply(a, b), field.multiply(a, c));
         assertEquals(r1, r2);
     }
 
diff --git a/commons-numbers-field/src/test/java/org/apache/commons/numbers/field/FieldTestData.java b/commons-numbers-field/src/test/java/org/apache/commons/numbers/field/FieldTestData.java
index 82dc1a0..0a2b1cd 100644
--- a/commons-numbers-field/src/test/java/org/apache/commons/numbers/field/FieldTestData.java
+++ b/commons-numbers-field/src/test/java/org/apache/commons/numbers/field/FieldTestData.java
@@ -21,35 +21,35 @@ import java.util.Arrays;
 /**
  * Data store for {@link FieldParametricTest}.
  */
-class FieldTestData {
-    private final Field<?> field;
-    private final Object a;
-    private final Object b;
-    private final Object c;
-
-    public FieldTestData(Field<?> field,
-                         Object a,
-                         Object b,
-                         Object c) {
+class FieldTestData<T> {
+    private final Field<T> field;
+    private final T a;
+    private final T b;
+    private final T c;
+
+    public FieldTestData(Field<T> field,
+                         T a,
+                         T b,
+                         T c) {
         this.field = field;
         this.a = a;
         this.b = b;
         this.c = c;
     }
 
-    public Field<?> getField() {
+    public Field<T> getField() {
         return field;
     }
 
-    public Object getA() {
+    public T getA() {
         return a;
     }
 
-    public Object getB() {
+    public T getB() {
         return b;
     }
 
-    public Object getC() {
+    public T getC() {
         return c;
     }
 
diff --git a/commons-numbers-field/src/test/java/org/apache/commons/numbers/field/FieldsList.java b/commons-numbers-field/src/test/java/org/apache/commons/numbers/field/FieldsList.java
index 396c83f..76a15cd 100644
--- a/commons-numbers-field/src/test/java/org/apache/commons/numbers/field/FieldsList.java
+++ b/commons-numbers-field/src/test/java/org/apache/commons/numbers/field/FieldsList.java
@@ -28,7 +28,7 @@ import org.apache.commons.numbers.fraction.Fraction;
  */
 final class FieldsList {
     /** List of all fields implemented in the library. */
-    private static final List<FieldTestData> LIST =
+    private static final List<FieldTestData<?>> LIST =
             new ArrayList<>();
 
     static {
@@ -62,7 +62,7 @@ final class FieldsList {
                                 T a,
                                 T b,
                                 T c) {
-        LIST.add(new FieldTestData(field, a, b, c));
+        LIST.add(new FieldTestData<>(field, a, b, c));
     }
 
     /**
@@ -71,7 +71,7 @@ final class FieldsList {
      *
      * @return the list of all fields.
      */
-    static List<FieldTestData> list() {
+    static List<FieldTestData<?>> list() {
         return Collections.unmodifiableList(LIST);
     }
 }