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

mboehm7 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/systemds.git


The following commit(s) were added to refs/heads/main by this push:
     new 2e1b16ae9b [MINOR] Improved code coverage basic operations, incl 
cleanups
2e1b16ae9b is described below

commit 2e1b16ae9b1365e7ebb1e353e1360d15d9e3bf9a
Author: Matthias Boehm <mboe...@gmail.com>
AuthorDate: Fri Aug 23 11:35:37 2024 +0200

    [MINOR] Improved code coverage basic operations, incl cleanups
---
 codecov.yml                                        |  2 +
 src/main/java/org/apache/sysds/common/Types.java   | 45 ++++++++--------------
 .../apache/sysds/hops/codegen/cplan/CNodeCell.java |  2 +-
 .../sysds/test/component/misc/OpTypeTest.java      | 32 +++++++++++++++
 4 files changed, 52 insertions(+), 29 deletions(-)

diff --git a/codecov.yml b/codecov.yml
index 548796ea26..e74934e47a 100644
--- a/codecov.yml
+++ b/codecov.yml
@@ -32,3 +32,5 @@ coverage:
     changes: no
   precision: 2
   range: "50...75"
+  ignore:
+  - "src/main/java/org/apache/sysds/protobuf"
diff --git a/src/main/java/org/apache/sysds/common/Types.java 
b/src/main/java/org/apache/sysds/common/Types.java
index 26219feb59..4161f0c23d 100644
--- a/src/main/java/org/apache/sysds/common/Types.java
+++ b/src/main/java/org/apache/sysds/common/Types.java
@@ -20,7 +20,6 @@
 package org.apache.sysds.common;
 
 import java.util.Arrays;
-import java.util.HashMap;
 
 import org.apache.sysds.runtime.DMLRuntimeException;
 
@@ -490,15 +489,17 @@ public interface Types {
         * The AggOp contain identifying integer values that need to match with 
their native counterparts for instance for spoof CUDA ops.
         */
        public enum AggOp {
-               SUM(0), SUM_SQ(1), MIN(2), MAX(3),
-               PROD(4), SUM_PROD(5),
-               TRACE(6), MEAN(7), VAR(8),
-               MAXINDEX(9), MININDEX(10),
-               COUNT_DISTINCT(11), ROW_COUNT_DISTINCT(12), 
COL_COUNT_DISTINCT(13),
-               COUNT_DISTINCT_APPROX(14), 
-               COUNT_DISTINCT_APPROX_ROW(15), 
-               COUNT_DISTINCT_APPROX_COL(16),
-               UNIQUE(17);
+               SUM, SUM_SQ, MIN, MAX,
+               PROD, SUM_PROD,
+               TRACE, MEAN, VAR,
+               MAXINDEX, MININDEX,
+               COUNT_DISTINCT, 
+               ROW_COUNT_DISTINCT, //TODO should be direction
+               COL_COUNT_DISTINCT,
+               COUNT_DISTINCT_APPROX, 
+               COUNT_DISTINCT_APPROX_ROW, //TODO should be direction
+               COUNT_DISTINCT_APPROX_COL,
+               UNIQUE;
 
                @Override
                public String toString() {
@@ -510,26 +511,14 @@ public interface Types {
                        }
                }
                
-               private final int value;
-               private final static HashMap<Integer, AggOp> map = new 
HashMap<>();
-               
-               AggOp(int value) {
-                       this.value = value;
-               }
-               
-               static {
-                       for (AggOp aggOp : AggOp.values()) {
-                               map.put(aggOp.value, aggOp);
+               public static AggOp valueOfByOpcode(String opcode) {
+                       switch(opcode) {
+                               case "+":    return SUM;
+                               case "sq+":  return SUM_SQ;
+                               case "*":    return PROD;
+                               default:     return 
valueOf(opcode.toUpperCase());
                        }
                }
-               
-               public static AggOp valueOf(int aggOp) {
-                       return map.get(aggOp);
-               }
-               
-               public int getValue() {
-                       return value;
-               }
        }
        
        /** Operations that require 1 operand */
diff --git a/src/main/java/org/apache/sysds/hops/codegen/cplan/CNodeCell.java 
b/src/main/java/org/apache/sysds/hops/codegen/cplan/CNodeCell.java
index f803000728..3d2c19ef4c 100644
--- a/src/main/java/org/apache/sysds/hops/codegen/cplan/CNodeCell.java
+++ b/src/main/java/org/apache/sysds/hops/codegen/cplan/CNodeCell.java
@@ -278,7 +278,7 @@ public class CNodeCell extends CNodeTpl
        public int compile(GeneratorAPI api, String src) {
                if(api == GeneratorAPI.CUDA)
                        return 
compile_nvrtc(SpoofCompiler.native_contexts.get(api), _genVar, src, 
_type.getValue(), 
-                               _aggOp != null ? _aggOp.getValue() : 0, 
_sparseSafe);
+                               _aggOp != null ? _aggOp.ordinal() : 0, 
_sparseSafe);
                return -1;
        }
        
diff --git a/src/test/java/org/apache/sysds/test/component/misc/OpTypeTest.java 
b/src/test/java/org/apache/sysds/test/component/misc/OpTypeTest.java
index 581ff0d405..9ddbd7a302 100644
--- a/src/test/java/org/apache/sysds/test/component/misc/OpTypeTest.java
+++ b/src/test/java/org/apache/sysds/test/component/misc/OpTypeTest.java
@@ -19,6 +19,8 @@
 
 package org.apache.sysds.test.component.misc;
 
+import org.apache.sysds.common.Types.AggOp;
+import org.apache.sysds.common.Types.FileFormat;
 import org.apache.sysds.common.Types.OpOp1;
 import org.apache.sysds.common.Types.OpOp2;
 import org.apache.sysds.common.Types.OpOp3;
@@ -85,6 +87,16 @@ public class OpTypeTest {
                }
        }
        
+       @Test
+       public void testAggOp() {
+               AggOp[] ops = AggOp.values();
+               for(int i=0; i<ops.length; i++) {
+                       Assert.assertEquals(i, ops[i].ordinal());
+                       Assert.assertEquals(AggOp.valueOf(ops[i].name()), 
ops[i]);
+                       
Assert.assertEquals(AggOp.valueOfByOpcode(ops[i].toString()), ops[i]);
+               }
+       }
+       
        @Test
        public void testReOrgOp() {
                ReOrgOp[] ops = ReOrgOp.values();
@@ -128,6 +140,26 @@ public class OpTypeTest {
                for(int i=0; i<ops.length; i++) {
                        Assert.assertEquals(i, ops[i].ordinal());
                        Assert.assertEquals(OpOpData.valueOf(ops[i].name()), 
ops[i]);
+                       if( ops[i].isRead() || ops[i].isWrite() )
+                               Assert.assertNotEquals(ops[i].isRead(), 
ops[i].isWrite());
+                       if( ops[i].isTransient() || ops[i].isPersistent() )
+                               Assert.assertNotEquals(ops[i].isTransient(), 
ops[i].isPersistent());
+                       Assert.assertNotEquals(ops[i].name(), 
ops[i].toString());
+               }
+       }
+       
+       @Test
+       public void testFileFormats() {
+               FileFormat[] fmt = FileFormat.values();
+               for(int i=0; i<fmt.length; i++) {
+                       Assert.assertEquals(i, fmt[i].ordinal());
+                       Assert.assertEquals(fmt[i].isTextFormat(), 
FileFormat.isTextFormat(fmt[i].name()));
+                       Assert.assertEquals(fmt[i].isDelimitedFormat(), 
FileFormat.isDelimitedFormat(fmt[i].name()));
+                       if( fmt[i]==FileFormat.MM || fmt[i]==FileFormat.TEXT )
+                               Assert.assertTrue(fmt[i].isIJV());
                }
+               Assert.assertFalse(FileFormat.isTextFormat("f1"));
+               Assert.assertFalse(FileFormat.isDelimitedFormat("f2"));
+               try {FileFormat.safeValueOf("f3"); 
Assert.fail();}catch(Exception ex) {}
        }
 }

Reply via email to