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

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

commit 54dbd0389f559648e7a8cc39d985266419fc0bdf
Author: baunsgaard <[email protected]>
AuthorDate: Mon Nov 14 16:02:56 2022 +0100

    [MINOR] Move map function test
    
    This commit moves the map function tests for frames to functions/frame
    instead of binary/frame, to colocate the frame testing.
    
    Closes #1718
---
 .../sysds/runtime/frame/data/FrameBlock.java       | 87 +++++++++------------
 .../sysds/runtime/frame/data/columns/Array.java    |  3 +-
 .../runtime/frame/data/columns/ArrayFactory.java   |  1 +
 .../runtime/frame/data/columns/BooleanArray.java   | 15 +++-
 .../runtime/frame/data/columns/ColumnMetadata.java | 46 ++++++++---
 .../runtime/frame/data/columns/DoubleArray.java    | 11 +++
 .../runtime/frame/data/columns/FloatArray.java     | 11 +++
 .../runtime/frame/data/columns/IntegerArray.java   | 11 +++
 .../runtime/frame/data/columns/LongArray.java      | 10 +++
 .../runtime/frame/data/columns/StringArray.java    | 11 +++
 ...ltiReturnParameterizedBuiltinSPInstruction.java | 14 ++--
 .../sysds/runtime/io/FrameWriterFactory.java       |  9 ++-
 .../runtime/transform/decode/DecoderDummycode.java |  7 +-
 .../transform/decode/DecoderPassThrough.java       |  4 +-
 .../runtime/transform/encode/ColumnEncoderBin.java |  4 +-
 .../transform/encode/ColumnEncoderDummycode.java   |  1 -
 .../apache/sysds/runtime/util/UtilFunctions.java   |  1 +
 src/main/python/systemds/operator/nodes/frame.py   |  6 ++
 .../python/tests/frame/test_transform_apply.py     |  3 -
 src/test/java/org/apache/sysds/test/TestUtils.java | 40 +++++++---
 .../frame/transform/transformCustomTest.java       | 90 ++++++++++++++++++++++
 .../primitives/FederatedRightIndexTest.java        | 54 +++++++------
 .../frame/FrameDropInvalidLengthTest.java          |  7 +-
 .../functions/frame/FrameDropInvalidTypeTest.java  | 42 +++++-----
 .../{binary => }/frame/FrameEqualTest.java         |  6 +-
 .../functions/frame/FrameIndexingDistTest.java     |  1 -
 .../{binary => }/frame/FrameMapMarginTest.java     |  6 +-
 .../functions/{binary => }/frame/FrameMapTest.java |  6 +-
 28 files changed, 358 insertions(+), 149 deletions(-)

diff --git a/src/main/java/org/apache/sysds/runtime/frame/data/FrameBlock.java 
b/src/main/java/org/apache/sysds/runtime/frame/data/FrameBlock.java
index 6078ad5420..f774d166ba 100644
--- a/src/main/java/org/apache/sysds/runtime/frame/data/FrameBlock.java
+++ b/src/main/java/org/apache/sysds/runtime/frame/data/FrameBlock.java
@@ -128,37 +128,30 @@ public class FrameBlock implements CacheBlock, 
Externalizable {
        }
 
        public FrameBlock(int ncols, ValueType vt) {
-               this();
-               _schema = UtilFunctions.nCopies(ncols, vt);
-               _colnames = null; //default not materialized
-               _colmeta = new ColumnMetadata[ncols];
-               for( int j=0; j<ncols; j++ )
-                       _colmeta[j] = new ColumnMetadata(0);
+               this(UtilFunctions.nCopies(ncols, vt), null, null);
        }
 
        public FrameBlock(ValueType[] schema) {
-               this(schema, new String[0][]);
+               this(schema, null, null);
        }
 
        public FrameBlock(ValueType[] schema, String[] names) {
-               this(schema, names, new String[0][]);
+               this(schema, names, null);
        }
 
        public FrameBlock(ValueType[] schema, String[][] data) {
                //default column names not materialized
                this(schema, null, data);
-
        }
 
        public FrameBlock(ValueType[] schema, String[] names, String[][] data) {
                _numRows = 0; //maintained on append
                _schema = schema;
                _colnames = names;
-               _colmeta = new ColumnMetadata[_schema.length];
-               for( int j=0; j<_schema.length; j++ )
-                       _colmeta[j] = new ColumnMetadata(0);
-               for( int i=0; i<data.length; i++ )
-                       appendRow(data[i]);
+               ensureAllocateMeta();
+               if(data != null)
+                       for( int i=0; i<data.length; i++ )
+                               appendRow(data[i]);
        }
 
        /**
@@ -298,8 +291,7 @@ public class FrameBlock implements CacheBlock, 
Externalizable {
        }
 
        public boolean isColumnMetadataDefault(int c) {
-               return _colmeta[c].getMvValue() == null
-                       && _colmeta[c].getNumDistinct() == 0;
+               return _colmeta[c].isDefault();
        }
 
        public void setColumnMetadata(ColumnMetadata[] colmeta) {
@@ -333,12 +325,7 @@ public class FrameBlock implements CacheBlock, 
Externalizable {
                _msize = -1;
                
                // allocate column meta data if necessary
-               if( _colmeta == null || _schema.length != _colmeta.length ) {
-                       _colmeta = new ColumnMetadata[_schema.length];
-                       for( int j=0; j<_schema.length; j++ )
-                               _colmeta[j] = new ColumnMetadata(0);
-               }
-
+               ensureAllocateMeta();
                // early abort if already allocated
                if( _coldata != null && _schema.length == _coldata.length ) {
                        //handle special case that to few rows allocated
@@ -360,6 +347,14 @@ public class FrameBlock implements CacheBlock, 
Externalizable {
                _numRows = numRows;
        }
 
+       private void ensureAllocateMeta(){
+               if( _colmeta == null || _schema.length != _colmeta.length ) {
+                       _colmeta = new ColumnMetadata[_schema.length];
+                       for( int j=0; j<_schema.length; j++ )
+                               _colmeta[j] = new ColumnMetadata();
+               }
+       }
+
        /**
         * Checks for matching column sizes in case of existing columns.
         * 
@@ -388,10 +383,6 @@ public class FrameBlock implements CacheBlock, 
Externalizable {
                return "C" + i;
        }
 
-       private String createNextColName(){
-               return _schema != null ? createColName(_schema.length) : 
createColName(0);
-       }
-
        public boolean isColNamesDefault() {
                boolean ret = (_colnames != null);
                for( int j=0; j<getNumColumns() && ret; j++ )
@@ -447,7 +438,7 @@ public class FrameBlock implements CacheBlock, 
Externalizable {
                        if( _colmeta != null ) {
                                for( int i=0; i<_colmeta.length; i++ )
                                        if( !isColumnMetadataDefault(i) )
-                                               _colmeta[i] = new 
ColumnMetadata(0);
+                                               _colmeta[i] = new 
ColumnMetadata();
                        }
                }
                if(_coldata != null) {
@@ -572,19 +563,10 @@ public class FrameBlock implements CacheBlock, 
Externalizable {
         * @param vt The Value type
         */
        private void appendColumnMetaData(ValueType vt){
-               appendColumnMetaData(vt, createNextColName());
-       }
-
-       /**
-        * Append the metadata associated with adding a column.
-        * 
-        * @param vt The Value type
-        * @param colName The columnName
-        */
-       private void appendColumnMetaData(ValueType vt, String colName){
+               if(_colnames != null)
+                       _colnames = (String[]) ArrayUtils.add(getColumnNames(), 
createColName(_colnames.length+1));
                _schema = (ValueType[]) ArrayUtils.add(_schema, vt);
-               _colnames = (String[]) ArrayUtils.add(getColumnNames(), 
colName);
-               // Since we append a column we reset the _msize
+               _colmeta = (ColumnMetadata[]) 
ArrayUtils.add(getColumnMetadata(), new ColumnMetadata());
                _msize = -1;
        }
 
@@ -1084,6 +1066,7 @@ public class FrameBlock implements CacheBlock, 
Externalizable {
                                        ret._coldata[j-cl].set(0, ru-rl, 
_coldata[j], rl);
                        }
                }
+
                return ret;
        }
 
@@ -1174,7 +1157,7 @@ public class FrameBlock implements CacheBlock, 
Externalizable {
                        ret._colnames = (_colnames!=null) ? _colnames.clone() : 
null;
                        ret._colmeta = new ColumnMetadata[getNumColumns()];
                        for( int j=0; j<_schema.length; j++ )
-                               ret._colmeta[j] = new ColumnMetadata(0);
+                               ret._colmeta[j] = new ColumnMetadata();
 
                        //concatenate data (deep copy first, append second)
                        ret._coldata = new Array[getNumColumns()];
@@ -1436,24 +1419,23 @@ public class FrameBlock implements CacheBlock, 
Externalizable {
                if(this.getNumColumns() != schema.getNumColumns())
                        throw new DMLException("mismatch in number of columns 
in frame and its schema "+this.getNumColumns()+" != "+schema.getNumColumns());
 
-               String[] schemaString = 
IteratorFactory.getStringRowIterator(this).next(); // extract the schema in 
String array
+               // extract the schema in String array
+               String[] schemaString = 
IteratorFactory.getStringRowIterator(schema).next();
                for (int i = 0; i < this.getNumColumns(); i++) {
                        Array obj = this.getColumn(i);
                        String schemaCol = schemaString[i];
                        String type;
-                       if(schemaCol.contains("FP")){
+                       if(schemaCol.contains("FP"))
                                type = "FP";
-                       } else if (schemaCol.contains("INT")){
+                       else if(schemaCol.contains("INT")) 
                                type = "INT";
-                       } else if (schemaCol.contains("STRING")){
+                       else if(schemaCol.contains("STRING")) 
                                // In case of String columns, don't do any 
verification or replacements.
                                continue;
-                       } else{
+                       else 
                                type = schemaCol;
-                       }
-
-                       for (int j = 0; j < this.getNumRows(); j++)
-                       {
+                       
+                       for (int j = 0; j < this.getNumRows(); j++){
                                if(obj.get(j) == null)
                                        continue;
                                String dataValue = 
obj.get(j).toString().trim().replace("\"", "").toLowerCase() ;
@@ -1882,11 +1864,16 @@ public class FrameBlock implements CacheBlock, 
Externalizable {
        public String toString(){
                StringBuilder sb = new StringBuilder();
                sb.append("FrameBlock");
+               if(_colnames != null){
+                       sb.append("\n");
+                       sb.append(Arrays.toString(_colnames));
+               }
                sb.append("\n");
                sb.append(Arrays.toString(_schema));
                sb.append("\n");
+               sb.append(Arrays.toString(_colmeta));
+               sb.append("\n");
                sb.append(Arrays.toString(_coldata));
-
                return sb.toString();
        }
 }
diff --git 
a/src/main/java/org/apache/sysds/runtime/frame/data/columns/Array.java 
b/src/main/java/org/apache/sysds/runtime/frame/data/columns/Array.java
index 1c2c6973dc..20f3bf692e 100644
--- a/src/main/java/org/apache/sysds/runtime/frame/data/columns/Array.java
+++ b/src/main/java/org/apache/sysds/runtime/frame/data/columns/Array.java
@@ -22,6 +22,7 @@ package org.apache.sysds.runtime.frame.data.columns;
 import java.lang.ref.SoftReference;
 import java.util.HashMap;
 
+import org.apache.commons.lang.NotImplementedException;
 import org.apache.hadoop.io.Writable;
 import org.apache.sysds.common.Types.ValueType;
 
@@ -86,7 +87,7 @@ public abstract class Array<T> implements Writable {
        
        @Override
        public String toString() {
-               return this.getClass().getSimpleName().toString() + ":" + _size;
+               return this.getClass().getSimpleName();
        }
 
 }
diff --git 
a/src/main/java/org/apache/sysds/runtime/frame/data/columns/ArrayFactory.java 
b/src/main/java/org/apache/sysds/runtime/frame/data/columns/ArrayFactory.java
index db2979eca9..6a370f2762 100644
--- 
a/src/main/java/org/apache/sysds/runtime/frame/data/columns/ArrayFactory.java
+++ 
b/src/main/java/org/apache/sysds/runtime/frame/data/columns/ArrayFactory.java
@@ -58,6 +58,7 @@ public interface ArrayFactory {
                                return new StringArray(new String[nRow]);
                        case BOOLEAN:
                                return new BooleanArray(new boolean[nRow]);
+                       case UINT8:
                        case INT32:
                                return new IntegerArray(new int[nRow]);
                        case INT64:
diff --git 
a/src/main/java/org/apache/sysds/runtime/frame/data/columns/BooleanArray.java 
b/src/main/java/org/apache/sysds/runtime/frame/data/columns/BooleanArray.java
index 0af22b3d01..6826318af1 100644
--- 
a/src/main/java/org/apache/sysds/runtime/frame/data/columns/BooleanArray.java
+++ 
b/src/main/java/org/apache/sysds/runtime/frame/data/columns/BooleanArray.java
@@ -120,8 +120,19 @@ public class BooleanArray extends Array<Boolean> {
                return booleanBuffer.array();
        }
 
-       @Override 
-       public ValueType getValueType(){
+       @Override
+       public ValueType getValueType() {
                return ValueType.BOOLEAN;
        }
+
+       @Override
+       public String toString() {
+               StringBuilder sb = new StringBuilder(_data.length * 5 + 2);
+               sb.append(super.toString() + ":[");
+               for(int i = 0; i < _size - 1; i++)
+                       sb.append((_data[i] ? 1 : 0) + ",");
+               sb.append(_data[_size - 1] ? 1 : 0);
+               sb.append("]");
+               return sb.toString();
+       }
 }
diff --git 
a/src/main/java/org/apache/sysds/runtime/frame/data/columns/ColumnMetadata.java 
b/src/main/java/org/apache/sysds/runtime/frame/data/columns/ColumnMetadata.java
index c86fcd9a7b..ae4f826b6c 100644
--- 
a/src/main/java/org/apache/sysds/runtime/frame/data/columns/ColumnMetadata.java
+++ 
b/src/main/java/org/apache/sysds/runtime/frame/data/columns/ColumnMetadata.java
@@ -24,29 +24,38 @@ import java.io.Serializable;
 public class ColumnMetadata implements Serializable {
        private static final long serialVersionUID = -90094082422100311L;
 
-       private long _ndistinct = 0;
+       private static final long DEFAULT_DISTINCT = -1;
+
+       private long _ndistinct = DEFAULT_DISTINCT;
        private String _mvValue = null;
 
+       /**
+        * Default constructor
+        */
+       public ColumnMetadata() {
+
+       }
+
        public ColumnMetadata(long ndistinct) {
-                       _ndistinct = ndistinct;
-               }
+               _ndistinct = ndistinct;
+       }
 
        public ColumnMetadata(long ndistinct, String mvval) {
-                       _ndistinct = ndistinct;
-                       _mvValue = mvval;
-               }
+               _ndistinct = ndistinct <= 0 ? DEFAULT_DISTINCT: ndistinct;
+               _mvValue = mvval;
+       }
 
        public ColumnMetadata(ColumnMetadata that) {
-                       _ndistinct = that._ndistinct;
-                       _mvValue = that._mvValue;
-               }
+               _ndistinct = that._ndistinct;
+               _mvValue = that._mvValue;
+       }
 
        public long getNumDistinct() {
                return _ndistinct;
        }
 
        public void setNumDistinct(long ndistinct) {
-               _ndistinct = ndistinct;
+               _ndistinct = ndistinct <= 0 ? DEFAULT_DISTINCT: ndistinct;
        }
 
        public String getMvValue() {
@@ -57,4 +66,21 @@ public class ColumnMetadata implements Serializable {
                _mvValue = mvVal;
        }
 
+       public boolean isDefault() {
+               return getMvValue() == null && getNumDistinct() == 
DEFAULT_DISTINCT;
+       }
+
+       @Override
+       public String toString() {
+               StringBuilder sb = new StringBuilder();
+               sb.append(this.getClass().getSimpleName());
+               if(_ndistinct != DEFAULT_DISTINCT) {
+                       sb.append(":");
+                       sb.append(_ndistinct);
+               }
+               if(_mvValue != null)
+                       sb.append("--" + _mvValue);
+
+               return sb.toString();
+       }
 }
diff --git 
a/src/main/java/org/apache/sysds/runtime/frame/data/columns/DoubleArray.java 
b/src/main/java/org/apache/sysds/runtime/frame/data/columns/DoubleArray.java
index 61244c218b..477747d4d5 100644
--- a/src/main/java/org/apache/sysds/runtime/frame/data/columns/DoubleArray.java
+++ b/src/main/java/org/apache/sysds/runtime/frame/data/columns/DoubleArray.java
@@ -124,4 +124,15 @@ public class DoubleArray extends Array<Double> {
        public ValueType getValueType() {
                return ValueType.FP64;
        }
+
+       @Override
+       public String toString(){
+               StringBuilder sb = new StringBuilder(_data.length * 5 + 2);
+               sb.append(super.toString() + ":[");
+               for(int i = 0; i < _size-1; i++)
+                       sb.append(_data[i]  + ",");
+               sb.append(_data[_size-1]);
+               sb.append("]");
+               return sb.toString();
+       }
 }
diff --git 
a/src/main/java/org/apache/sysds/runtime/frame/data/columns/FloatArray.java 
b/src/main/java/org/apache/sysds/runtime/frame/data/columns/FloatArray.java
index b0f75009ff..a3a265a43c 100644
--- a/src/main/java/org/apache/sysds/runtime/frame/data/columns/FloatArray.java
+++ b/src/main/java/org/apache/sysds/runtime/frame/data/columns/FloatArray.java
@@ -123,4 +123,15 @@ public class FloatArray extends Array<Float> {
        public ValueType getValueType() {
                return ValueType.FP32;
        }
+
+       @Override
+       public String toString(){
+               StringBuilder sb = new StringBuilder(_data.length * 5 + 2);
+               sb.append(super.toString() + ":[");
+               for(int i = 0; i < _size-1; i++)
+                       sb.append(_data[i]  + ",");
+               sb.append(_data[_size-1]);
+               sb.append("]");
+               return sb.toString();
+       }
 }
diff --git 
a/src/main/java/org/apache/sysds/runtime/frame/data/columns/IntegerArray.java 
b/src/main/java/org/apache/sysds/runtime/frame/data/columns/IntegerArray.java
index 046ca5c57a..f67c560169 100644
--- 
a/src/main/java/org/apache/sysds/runtime/frame/data/columns/IntegerArray.java
+++ 
b/src/main/java/org/apache/sysds/runtime/frame/data/columns/IntegerArray.java
@@ -123,4 +123,15 @@ public class IntegerArray extends Array<Integer> {
        public ValueType getValueType(){
                return ValueType.INT32;
        }
+
+       @Override
+       public String toString(){
+               StringBuilder sb = new StringBuilder(_data.length * 5 + 2);
+               sb.append(super.toString() + ":[");
+               for(int i = 0; i < _size-1; i++)
+                       sb.append(_data[i]  + ",");
+               sb.append(_data[_size-1]);
+               sb.append("]");
+               return sb.toString();
+       }
 }
diff --git 
a/src/main/java/org/apache/sysds/runtime/frame/data/columns/LongArray.java 
b/src/main/java/org/apache/sysds/runtime/frame/data/columns/LongArray.java
index ea644b931e..ab5e46ffea 100644
--- a/src/main/java/org/apache/sysds/runtime/frame/data/columns/LongArray.java
+++ b/src/main/java/org/apache/sysds/runtime/frame/data/columns/LongArray.java
@@ -124,4 +124,14 @@ public class LongArray extends Array<Long> {
                return ValueType.INT64;
        }
 
+       @Override
+       public String toString(){
+               StringBuilder sb = new StringBuilder(_data.length * 5 + 2);
+               sb.append(super.toString() + ":[");
+               for(int i = 0; i < _size-1; i++)
+                       sb.append(_data[i]  + ",");
+               sb.append(_data[_size-1]);
+               sb.append("]");
+               return sb.toString();
+       }
 }
diff --git 
a/src/main/java/org/apache/sysds/runtime/frame/data/columns/StringArray.java 
b/src/main/java/org/apache/sysds/runtime/frame/data/columns/StringArray.java
index 6418fe94e3..e23f1e95c5 100644
--- a/src/main/java/org/apache/sysds/runtime/frame/data/columns/StringArray.java
+++ b/src/main/java/org/apache/sysds/runtime/frame/data/columns/StringArray.java
@@ -115,4 +115,15 @@ public class StringArray extends Array<String> {
        public ValueType getValueType() {
                return ValueType.STRING;
        }
+
+       @Override
+       public String toString(){
+               StringBuilder sb = new StringBuilder(_data.length * 5 + 2);
+               sb.append(super.toString() + ":[");
+               for(int i = 0; i < _size-1; i++)
+                       sb.append(_data[i]  + ",");
+               sb.append(_data[_size-1]);
+               sb.append("]");
+               return sb.toString();
+       }
 }
diff --git 
a/src/main/java/org/apache/sysds/runtime/instructions/spark/MultiReturnParameterizedBuiltinSPInstruction.java
 
b/src/main/java/org/apache/sysds/runtime/instructions/spark/MultiReturnParameterizedBuiltinSPInstruction.java
index 7a1a7c5354..6ec120c906 100644
--- 
a/src/main/java/org/apache/sysds/runtime/instructions/spark/MultiReturnParameterizedBuiltinSPInstruction.java
+++ 
b/src/main/java/org/apache/sysds/runtime/instructions/spark/MultiReturnParameterizedBuiltinSPInstruction.java
@@ -421,10 +421,12 @@ public class MultiReturnParameterizedBuiltinSPInstruction 
extends ComputationSPI
                        // compute global mode of categorical feature, i.e., 
value with highest frequency
                        if(_encoder.getMethod(colix) == MVMethod.GLOBAL_MODE) {
                                HashMap<String, Long> hist = new HashMap<>();
-                               while(iter.hasNext()) {
+                               while(iter.hasNext() ) {
                                        ColumnMetadata cmeta = iter.next();
-                                       Long tmp = hist.get(cmeta.getMvValue());
-                                       hist.put(cmeta.getMvValue(), 
cmeta.getNumDistinct() + ((tmp != null) ? tmp : 0));
+                                       if(!cmeta.isDefault()){
+                                               Long tmp = 
hist.get(cmeta.getMvValue());
+                                               hist.put(cmeta.getMvValue(), 
cmeta.getNumDistinct() + ((tmp != null) ? tmp : 0));
+                                       }
                                }
                                long max = Long.MIN_VALUE;
                                String mode = null;
@@ -442,8 +444,10 @@ public class MultiReturnParameterizedBuiltinSPInstruction 
extends ComputationSPI
                                int count = 0;
                                while(iter.hasNext()) {
                                        ColumnMetadata cmeta = iter.next();
-                                       kplus.execute2(kbuff, 
Double.parseDouble(cmeta.getMvValue()));
-                                       count += cmeta.getNumDistinct();
+                                       if(!cmeta.isDefault()){
+                                               kplus.execute2(kbuff, 
Double.parseDouble(cmeta.getMvValue()));
+                                               count += cmeta.getNumDistinct();
+                                       }
                                }
                                if(count > 0)
                                        ret.add("-2 " + colix + " " + 
kbuff._sum / count);
diff --git a/src/main/java/org/apache/sysds/runtime/io/FrameWriterFactory.java 
b/src/main/java/org/apache/sysds/runtime/io/FrameWriterFactory.java
index 3df8191ba1..d573c04919 100644
--- a/src/main/java/org/apache/sysds/runtime/io/FrameWriterFactory.java
+++ b/src/main/java/org/apache/sysds/runtime/io/FrameWriterFactory.java
@@ -19,13 +19,16 @@
 
 package org.apache.sysds.runtime.io;
 
-import org.apache.sysds.conf.ConfigurationManager;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.sysds.common.Types.FileFormat;
 import org.apache.sysds.conf.CompilerConfig.ConfigType;
+import org.apache.sysds.conf.ConfigurationManager;
 import org.apache.sysds.runtime.DMLRuntimeException;
 
-public class FrameWriterFactory 
-{
+public class FrameWriterFactory {
+       protected static final Log LOG = 
LogFactory.getLog(FrameWriterFactory.class.getName());
+
        public static FrameWriter createFrameWriter(FileFormat fmt) {
                return createFrameWriter(fmt, null);
        }
diff --git 
a/src/main/java/org/apache/sysds/runtime/transform/decode/DecoderDummycode.java 
b/src/main/java/org/apache/sysds/runtime/transform/decode/DecoderDummycode.java
index 6d9480b9f7..dec1486beb 100644
--- 
a/src/main/java/org/apache/sysds/runtime/transform/decode/DecoderDummycode.java
+++ 
b/src/main/java/org/apache/sysds/runtime/transform/decode/DecoderDummycode.java
@@ -25,8 +25,10 @@ import java.io.ObjectOutput;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+
 import org.apache.sysds.common.Types.ValueType;
 import org.apache.sysds.runtime.frame.data.FrameBlock;
+import org.apache.sysds.runtime.frame.data.columns.ColumnMetadata;
 import org.apache.sysds.runtime.matrix.data.MatrixBlock;
 import org.apache.sysds.runtime.util.UtilFunctions;
 
@@ -117,8 +119,9 @@ public class DecoderDummycode extends Decoder
                _cuPos = new int[_colList.length]; //col upper pos 
                for( int j=0, off=0; j<_colList.length; j++ ) {
                        int colID = _colList[j];
-                       int ndist = (int)meta.getColumnMetadata()[colID-1]
-                                       .getNumDistinct();
+                       ColumnMetadata d = meta.getColumnMetadata()[colID-1];
+                       int ndist = d.isDefault() ? 0 : (int)d.getNumDistinct();
+                       ndist = ndist < -1 ? 0: ndist;
                        _clPos[j] = off + colID;
                        _cuPos[j] = _clPos[j] + ndist;
                        off += ndist - 1;
diff --git 
a/src/main/java/org/apache/sysds/runtime/transform/decode/DecoderPassThrough.java
 
b/src/main/java/org/apache/sysds/runtime/transform/decode/DecoderPassThrough.java
index e4b4c3771a..2a90696747 100644
--- 
a/src/main/java/org/apache/sysds/runtime/transform/decode/DecoderPassThrough.java
+++ 
b/src/main/java/org/apache/sysds/runtime/transform/decode/DecoderPassThrough.java
@@ -28,6 +28,7 @@ import java.util.List;
 
 import org.apache.sysds.common.Types.ValueType;
 import org.apache.sysds.runtime.frame.data.FrameBlock;
+import org.apache.sysds.runtime.frame.data.columns.ColumnMetadata;
 import org.apache.sysds.runtime.matrix.data.MatrixBlock;
 import org.apache.sysds.runtime.util.UtilFunctions;
 
@@ -107,7 +108,8 @@ public class DecoderPassThrough extends Decoder
                                        ix1 ++;
                                }
                                else { //_colList[ix1] > _dcCols[ix2]
-                                       off += 
(int)meta.getColumnMetadata()[_dcCols[ix2]-1].getNumDistinct() - 1;
+                                       ColumnMetadata d 
=meta.getColumnMetadata()[_dcCols[ix2]-1];
+                                       off += d.isDefault() ? -1 : 
d.getNumDistinct() - 1;
                                        ix2 ++;
                                }
                        }
diff --git 
a/src/main/java/org/apache/sysds/runtime/transform/encode/ColumnEncoderBin.java 
b/src/main/java/org/apache/sysds/runtime/transform/encode/ColumnEncoderBin.java
index fdb2358825..2b71abcc35 100644
--- 
a/src/main/java/org/apache/sysds/runtime/transform/encode/ColumnEncoderBin.java
+++ 
b/src/main/java/org/apache/sysds/runtime/transform/encode/ColumnEncoderBin.java
@@ -165,7 +165,7 @@ public class ColumnEncoderBin extends ColumnEncoder {
                int endInd = getEndIndex(in.getNumRows(), startInd, blkSize);
                double[] codes = new double[endInd-startInd];
                for (int i=startInd; i<endInd; i++) {
-                       if (_binMins.length == 0 || _binMaxs.length == 0) {
+                       if (_binMins == null || _binMins.length == 0 || 
_binMaxs.length == 0) {
                                LOG.warn("ColumnEncoderBin: applyValue without 
bucket boundaries, assign 1");
                                codes[i-startInd] = 1; //robustness in case of 
missing bins
                                continue;
@@ -343,7 +343,7 @@ public class ColumnEncoderBin extends ColumnEncoder {
 
        @Override
        public void initMetaData(FrameBlock meta) {
-               if(meta == null || _binMaxs != null)
+               if(meta == null || _binMaxs != null || 
meta.getColumnMetadata()[_colID - 1].isDefault())
                        return;
                // deserialize the frame meta data into internal state
                int nbins = (int) meta.getColumnMetadata()[_colID - 
1].getNumDistinct();
diff --git 
a/src/main/java/org/apache/sysds/runtime/transform/encode/ColumnEncoderDummycode.java
 
b/src/main/java/org/apache/sysds/runtime/transform/encode/ColumnEncoderDummycode.java
index 8434bec59e..82a75c4489 100644
--- 
a/src/main/java/org/apache/sysds/runtime/transform/encode/ColumnEncoderDummycode.java
+++ 
b/src/main/java/org/apache/sysds/runtime/transform/encode/ColumnEncoderDummycode.java
@@ -234,7 +234,6 @@ public class ColumnEncoderDummycode extends ColumnEncoder {
        @Override
        public void initMetaData(FrameBlock meta) {
                // initialize domain sizes and output num columns
-               _domainSize = -1;
                _domainSize = (int) meta.getColumnMetadata()[_colID - 
1].getNumDistinct();
        }
 
diff --git a/src/main/java/org/apache/sysds/runtime/util/UtilFunctions.java 
b/src/main/java/org/apache/sysds/runtime/util/UtilFunctions.java
index 736c4e4c4a..16a86ae528 100644
--- a/src/main/java/org/apache/sysds/runtime/util/UtilFunctions.java
+++ b/src/main/java/org/apache/sysds/runtime/util/UtilFunctions.java
@@ -484,6 +484,7 @@ public class UtilFunctions {
                switch( vt ) {
                        case STRING:  return in;
                        case BOOLEAN: return Boolean.parseBoolean(in);
+                       case UINT8:
                        case INT32:   return Integer.parseInt(in);
                        case INT64:   return Long.parseLong(in);
                        case FP64:    return Double.parseDouble(in);
diff --git a/src/main/python/systemds/operator/nodes/frame.py 
b/src/main/python/systemds/operator/nodes/frame.py
index 2ff656af21..bd686a0a53 100644
--- a/src/main/python/systemds/operator/nodes/frame.py
+++ b/src/main/python/systemds/operator/nodes/frame.py
@@ -135,6 +135,12 @@ class Frame(OperationNode):
         """
         return Frame(self.sds_context, "replace", named_input_nodes={"target": 
self, "pattern": f"'{pattern}'", "replacement": f"'{replacement}'"})
 
+    def to_string(self, **kwargs: Dict[str, VALID_INPUT_TYPES]) -> 'Scalar':
+        """ Converts the input to a string representation.
+        :return: `Scalar` containing the string.
+        """
+        return Scalar(self.sds_context, 'toString', [self], kwargs, 
output_type=OutputType.STRING)
+
     def __str__(self):
         return "FrameNode"
 
diff --git a/src/main/python/tests/frame/test_transform_apply.py 
b/src/main/python/tests/frame/test_transform_apply.py
index 79259943e4..9cbd22292e 100644
--- a/src/main/python/tests/frame/test_transform_apply.py
+++ b/src/main/python/tests/frame/test_transform_apply.py
@@ -20,9 +20,6 @@
 # -------------------------------------------------------------
 
 import json
-import os
-import shutil
-import sys
 import unittest
 
 import numpy as np
diff --git a/src/test/java/org/apache/sysds/test/TestUtils.java 
b/src/test/java/org/apache/sysds/test/TestUtils.java
index d61a5f5f3c..6cbbca9616 100644
--- a/src/test/java/org/apache/sysds/test/TestUtils.java
+++ b/src/test/java/org/apache/sysds/test/TestUtils.java
@@ -303,11 +303,17 @@ public class TestUtils
        {
                String line = null;
                while ((line = inReader.readLine()) != null) {
-                       StringTokenizer st = new StringTokenizer(line, " ");
-                       int i = Integer.parseInt(st.nextToken());
-                       int j = Integer.parseInt(st.nextToken());
-                       double v = Double.parseDouble(st.nextToken());
-                       values.put(new CellIndex(i, j), v);
+                       try{
+
+                               StringTokenizer st = new StringTokenizer(line, 
" ");
+                               int i = Integer.parseInt(st.nextToken());
+                               int j = Integer.parseInt(st.nextToken());
+                               double v = Double.parseDouble(st.nextToken());
+                               values.put(new CellIndex(i, j), v);
+                       }
+                       catch(Exception e){
+                               throw new IOException("failed parsing line:" + 
line,e);
+                       }
                }
        }
 
@@ -477,11 +483,10 @@ public class TestUtils
        {
                HashMap<CellIndex, Double> expectedValues = new HashMap<>();
 
+               Path outDirectory = new Path(filePath);
                try
                {
-                       Path outDirectory = new Path(filePath);
                        FileSystem fs = 
IOUtilFunctions.getFileSystem(outDirectory, conf);
-
                        FileStatus[] outFiles = fs.listStatus(outDirectory);
                        for (FileStatus file : outFiles) {
                                FSDataInputStream outIn = 
fs.open(file.getPath());
@@ -489,7 +494,20 @@ public class TestUtils
                        }
                }
                catch (IOException e) {
-                       assertTrue("could not read from file " + filePath+": 
"+e.getMessage(), false);
+                       e.printStackTrace();
+                       try{
+                               FileSystem fs = 
IOUtilFunctions.getFileSystem(outDirectory, conf);
+                               FileStatus[] outFiles = 
fs.listStatus(outDirectory);
+                               String fileContent = "";
+                               for (FileStatus file : outFiles) {
+                                       FSDataInputStream outIn = 
fs.open(file.getPath());
+                                       fileContent += new 
String(outIn.readAllBytes());
+                               }
+                               fail("could not read from file " + filePath+": 
"+e.getMessage() + "\ncontent:\n" + fileContent);
+               
+                       }catch (IOException e2){
+                               fail("could not read from file " + filePath+": 
"+e.getMessage());
+                       }
                }
 
                return expectedValues;
@@ -2140,10 +2158,7 @@ public class TestUtils
         * </p>
         */
        public static FrameBlock generateRandomFrameBlock(int rows, int cols, 
ValueType[] schema, Random random){
-               String[] names = new String[cols];
-               for(int i = 0; i < cols; i++)
-                       names[i] = schema[i].toString();
-               FrameBlock frameBlock = new FrameBlock(schema, names);
+               FrameBlock frameBlock = new FrameBlock(schema);
                frameBlock.ensureAllocatedColumns(rows);
                for(int row = 0; row < rows; row++)
                        for(int col = 0; col < cols; col++)
@@ -2299,6 +2314,7 @@ public class TestUtils
         */
        public static Object generateRandomValueFromValueType(ValueType 
valueType, Random random){
                switch (valueType){
+                       case UINT8:   return random.nextInt(256);
                        case FP32:        return random.nextFloat();
                        case FP64:    return random.nextDouble();
                        case INT32:   return random.nextInt();
diff --git 
a/src/test/java/org/apache/sysds/test/component/frame/transform/transformCustomTest.java
 
b/src/test/java/org/apache/sysds/test/component/frame/transform/transformCustomTest.java
new file mode 100644
index 0000000000..be6d0fe497
--- /dev/null
+++ 
b/src/test/java/org/apache/sysds/test/component/frame/transform/transformCustomTest.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.sysds.test.component.frame.transform;
+
+import static org.junit.Assert.fail;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.sysds.common.Types.ValueType;
+import org.apache.sysds.runtime.frame.data.FrameBlock;
+import org.apache.sysds.runtime.matrix.data.MatrixBlock;
+import org.apache.sysds.runtime.transform.encode.EncoderFactory;
+import org.apache.sysds.runtime.transform.encode.MultiColumnEncoder;
+import org.apache.sysds.test.TestUtils;
+import org.junit.Test;
+
+public class transformCustomTest {
+       protected static final Log LOG = 
LogFactory.getLog(transformCustomTest.class.getName());
+
+       final FrameBlock data;
+
+       public transformCustomTest() {
+               data = TestUtils.generateRandomFrameBlock(100, 1, new 
ValueType[] {ValueType.UINT8}, 231);
+               data.setSchema(new ValueType[] {ValueType.INT32});
+       }
+
+       @Test
+       public void testRecode() {
+               test("{recode:[C1]}");
+       }
+
+       @Test
+       public void testBin() {
+               test("{ids:true, bin:[{id:1, method:equi-width, numbins:4}]}");
+       }
+
+       @Test
+       public void testBin2() {
+               test("{ids:true, bin:[{id:1, method:equi-width, 
numbins:100}]}");
+       }
+
+       @Test
+       public void testBin3() {
+               test("{ids:true, bin:[{id:1, method:equi-width, numbins:2}]}");
+       }
+
+       @Test
+       public void testBin4() {
+               test("{ids:true, bin:[{id:1, method:equi-height, numbins:2}]}");
+       }
+
+       @Test
+       public void testBin5() {
+               test("{ids:true, bin:[{id:1, method:equi-height, 
numbins:10}]}");
+       }
+
+       public void test(String spec) {
+               try {
+
+                       FrameBlock meta = null;
+                       MultiColumnEncoder encoder = 
EncoderFactory.createEncoder(spec, data.getColumnNames(), data.getNumColumns(),
+                               meta);
+                       MatrixBlock out = encoder.encode(data);
+                       MatrixBlock out2 = encoder.apply(data);
+
+                       TestUtils.compareMatrices(out, out2, 0, "Not Equal 
after apply");
+               }
+               catch(Exception e) {
+                       e.printStackTrace();
+                       fail(e.getMessage());
+               }
+       }
+}
diff --git 
a/src/test/java/org/apache/sysds/test/functions/federated/primitives/FederatedRightIndexTest.java
 
b/src/test/java/org/apache/sysds/test/functions/federated/primitives/FederatedRightIndexTest.java
index 0139137cd6..7b8e73b455 100644
--- 
a/src/test/java/org/apache/sysds/test/functions/federated/primitives/FederatedRightIndexTest.java
+++ 
b/src/test/java/org/apache/sysds/test/functions/federated/primitives/FederatedRightIndexTest.java
@@ -19,6 +19,8 @@
 
 package org.apache.sysds.test.functions.federated.primitives;
 
+import static org.junit.Assert.fail;
+
 import java.util.Arrays;
 import java.util.Collection;
 
@@ -67,8 +69,10 @@ public class FederatedRightIndexTest extends 
AutomatedTestBase {
        @Parameterized.Parameters
        public static Collection<Object[]> data() {
                return Arrays.asList(new Object[][] {
-                       {20, 10, 1, 1, true}, {20, 10, 3, 5, true},
-                       {10, 12, 1, 10, false}});
+                       {20, 10, 1, 1, true}, //
+                       // {20, 10, 3, 5, true}, //
+                       // {10, 12, 1, 10, false} //
+               });
        }
 
        private enum IndexType {
@@ -181,10 +185,9 @@ public class FederatedRightIndexTest extends 
AutomatedTestBase {
                Thread t4 = startLocalFedWorkerThread(port4);
 
                rtplatform = execMode;
-               if(rtplatform == ExecMode.SPARK) {
-                       System.out.println(7);
+               if(rtplatform == ExecMode.SPARK) 
                        DMLScript.USE_LOCAL_SPARK_CONFIG = true;
-               }
+               
                TestConfiguration config = 
availableTestConfigurations.get(TEST_NAME);
                loadTestConfiguration(config);
 
@@ -207,23 +210,30 @@ public class FederatedRightIndexTest extends 
AutomatedTestBase {
                        "in_X4=" + TestUtils.federatedAddress(port4, 
input("X4")), "rows=" + rows, "cols=" + cols, "from=" + from,
                        "to=" + to, "rP=" + 
Boolean.toString(rowPartitioned).toUpperCase(), "out_S=" + output("S")};
 
-               LOG.debug(runTest(null));
-
-               // compare via files
-               compareResults(1e-9, "Stat-DML1", "Stat-DML2");
-
-               Assert.assertTrue(heavyHittersContainsString("fed_rightIndex"));
-
-               // check that federated input files are still existing
-               Assert.assertTrue(HDFSTool.existsFileOnHDFS(input("X1")));
-               Assert.assertTrue(HDFSTool.existsFileOnHDFS(input("X2")));
-               Assert.assertTrue(HDFSTool.existsFileOnHDFS(input("X3")));
-               Assert.assertTrue(HDFSTool.existsFileOnHDFS(input("X4")));
-
-               TestUtils.shutdownThreads(t1, t2, t3, t4);
-
-               rtplatform = platformOld;
-               DMLScript.USE_LOCAL_SPARK_CONFIG = sparkConfigOld;
+               try{
+
+                       LOG.debug(runTest(null));
+       
+                       // compare via files
+                       compareResults(1e-9, "Stat-DML1", "Stat-DML2");
+       
+                       
Assert.assertTrue(heavyHittersContainsString("fed_rightIndex"));
+       
+                       // check that federated input files are still existing
+                       
Assert.assertTrue(HDFSTool.existsFileOnHDFS(input("X1")));
+                       
Assert.assertTrue(HDFSTool.existsFileOnHDFS(input("X2")));
+                       
Assert.assertTrue(HDFSTool.existsFileOnHDFS(input("X3")));
+                       
Assert.assertTrue(HDFSTool.existsFileOnHDFS(input("X4")));
+       
+                       TestUtils.shutdownThreads(t1, t2, t3, t4);
+       
+                       rtplatform = platformOld;
+                       DMLScript.USE_LOCAL_SPARK_CONFIG = sparkConfigOld;
+               }
+               catch(Exception e){
+                       e.printStackTrace();
+                       fail(e.getMessage());
+               }
 
        }
 }
diff --git 
a/src/test/java/org/apache/sysds/test/functions/frame/FrameDropInvalidLengthTest.java
 
b/src/test/java/org/apache/sysds/test/functions/frame/FrameDropInvalidLengthTest.java
index ca74482fad..07057632c4 100644
--- 
a/src/test/java/org/apache/sysds/test/functions/frame/FrameDropInvalidLengthTest.java
+++ 
b/src/test/java/org/apache/sysds/test/functions/frame/FrameDropInvalidLengthTest.java
@@ -19,6 +19,8 @@
 
 package org.apache.sysds.test.functions.frame;
 
+import static org.junit.Assert.fail;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.ThreadLocalRandom;
@@ -162,7 +164,7 @@ public class FrameDropInvalidLengthTest extends 
AutomatedTestBase {
                        // write expected feature length vector
                        writeInputMatrixWithMTD("M", colInvalidLength, true);
 
-                       runTest(true, false, null, -1);
+                       runTest(null);
 
                        // compare output
                        FrameBlock frameOut = readDMLFrameFromHDFS("B", 
Types.FileFormat.BINARY);
@@ -177,7 +179,8 @@ public class FrameDropInvalidLengthTest extends 
AutomatedTestBase {
                        Assert.assertEquals(expected, nullNum, 1e-5);
                }
                catch (Exception ex) {
-                       throw new RuntimeException(ex);
+                       ex.printStackTrace();
+                       fail(ex.getMessage());
                }
                finally {
                        rtplatform = platformOld;
diff --git 
a/src/test/java/org/apache/sysds/test/functions/frame/FrameDropInvalidTypeTest.java
 
b/src/test/java/org/apache/sysds/test/functions/frame/FrameDropInvalidTypeTest.java
index 46122c4cfa..27df7ab06a 100644
--- 
a/src/test/java/org/apache/sysds/test/functions/frame/FrameDropInvalidTypeTest.java
+++ 
b/src/test/java/org/apache/sysds/test/functions/frame/FrameDropInvalidTypeTest.java
@@ -19,6 +19,13 @@
 
 package org.apache.sysds.test.functions.frame;
 
+import static org.junit.Assert.fail;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.sysds.api.DMLScript;
 import org.apache.sysds.common.Types;
 import org.apache.sysds.common.Types.ExecType;
@@ -35,11 +42,10 @@ import org.apache.sysds.test.TestUtils;
 import org.junit.Assert;
 import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.Arrays;
+public class FrameDropInvalidTypeTest extends AutomatedTestBase {
 
-public class FrameDropInvalidTypeTest extends AutomatedTestBase
-{
+       protected static final Log LOG = 
LogFactory.getLog(FrameDropInvalidTypeTest.class.getName());
+       
        private final static String TEST_NAME = "DropInvalidType";
        private final static String TEST_DIR = "functions/frame/";
        private static final String TEST_CLASS_DIR = TEST_DIR + 
FrameDropInvalidTypeTest.class.getSimpleName() + "/";
@@ -136,14 +142,14 @@ public class FrameDropInvalidTypeTest extends 
AutomatedTestBase
                        getAndLoadTestConfiguration(TEST_NAME);
                        String HOME = SCRIPT_DIR + TEST_DIR;
                        fullDMLScriptName = HOME + TEST_NAME + ".dml";
-                       programArgs = new String[] {"-args", input("A"), 
input("M"),
+                       programArgs = new String[] {"-args", input("A"), 
input("M"), //
                                String.valueOf(rows), Integer.toString(cols), 
output("B")};
-                       FrameBlock frame1 = new FrameBlock(schema);
                        FrameWriter writer = 
FrameWriterFactory.createFrameWriter(FileFormat.CSV);
                        FrameBlock frame2 = new 
FrameBlock(UtilFunctions.nCopies(cols, Types.ValueType.STRING));
-                       String[] meta = new String[]{"FP64", "STRING"};
+                       String[] meta = new String[] {"FP64", "STRING"};
 
-                       initFrameDataString(frame1); // initialize a frame with 
one column
+                       // initialize a frame with one column
+                       FrameBlock frame1 = 
TestUtils.generateRandomFrameBlock(rows, 1, new ValueType[]{ValueType.FP64}, 
132); 
 
                        switch (test) { //Double in String
                                case 1:
@@ -197,15 +203,11 @@ public class FrameDropInvalidTypeTest extends 
AutomatedTestBase
                                        break;
                                }
                        }
-                       writer.writeFrameToHDFS(
-                               frame1.slice(0, rows - 1, 0, 1, new 
FrameBlock()),
-                               input("A"), rows, schema.length);
-
+                       writer.writeFrameToHDFS(frame1, input("A"), rows, 
schema.length);
                        frame2.appendRow(meta);
                        writer.writeFrameToHDFS(frame2, input("M"), 1, 
schema.length);
-                       runTest(true, false, null, -1);
+                       runTest(null);
                        FrameBlock frameout = readDMLFrameFromHDFS("B", 
FileFormat.BINARY);
-
                        //read output data and compare results
                        ArrayList<Object> data = new ArrayList<>();
                        for (int i = 0; i < frameout.getNumRows(); i++)
@@ -213,10 +215,11 @@ public class FrameDropInvalidTypeTest extends 
AutomatedTestBase
 
                        int nullNum = Math.toIntExact(data.stream().filter(s -> 
s == null).count());
                        //verify output schema
-                       Assert.assertEquals("Wrong result: " + nullNum + ".", 
ignore ? 0 : badValues, nullNum);
+                       Assert.assertEquals("Wrong result: " + nullNum + ".", 
ignore ? 0 :  badValues, nullNum);
                }
                catch (Exception ex) {
-                       throw new RuntimeException(ex);
+                       ex.printStackTrace();
+                       fail(ex.getMessage());
                }
                finally {
                        rtplatform = platformOld;
@@ -226,11 +229,4 @@ public class FrameDropInvalidTypeTest extends 
AutomatedTestBase
                        OptimizerUtils.ALLOW_OPERATOR_FUSION = true;
                }
        }
-       private  void initFrameDataString(FrameBlock frame1) {
-               double[][] A = getRandomMatrix(rows, 1, Float.MAX_VALUE, 
Double.MAX_VALUE, 0.7, 2373);
-               double[] tmp6 = new double[rows];
-               for (int i = 0; i < rows; i++)
-                       tmp6[i] = (Double) 
UtilFunctions.doubleToObject(ValueType.FP64, A[i][0], false);
-               frame1.appendColumn(tmp6);
-       }
 }
diff --git 
a/src/test/java/org/apache/sysds/test/functions/binary/frame/FrameEqualTest.java
 b/src/test/java/org/apache/sysds/test/functions/frame/FrameEqualTest.java
similarity index 98%
rename from 
src/test/java/org/apache/sysds/test/functions/binary/frame/FrameEqualTest.java
rename to 
src/test/java/org/apache/sysds/test/functions/frame/FrameEqualTest.java
index 41fcc37728..fcd4321301 100644
--- 
a/src/test/java/org/apache/sysds/test/functions/binary/frame/FrameEqualTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/frame/FrameEqualTest.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.sysds.test.functions.binary.frame;
+package org.apache.sysds.test.functions.frame;
 
 import org.apache.sysds.api.DMLScript;
 import org.apache.sysds.common.Types;
@@ -134,7 +134,7 @@ public class FrameEqualTest extends AutomatedTestBase {
                Types.ExecMode platformOld = setExecMode(et);
                boolean oldFlag = OptimizerUtils.ALLOW_ALGEBRAIC_SIMPLIFICATION;
                boolean sparkConfigOld = DMLScript.USE_LOCAL_SPARK_CONFIG;
-
+               setOutputBuffering(true);
                try {
                        getAndLoadTestConfiguration(TEST_NAME);
 
@@ -152,7 +152,7 @@ public class FrameEqualTest extends AutomatedTestBase {
                        fullRScriptName = HOME + TEST_NAME + ".R";
                        rCmd = "Rscript" + " " + fullRScriptName + " " + 
inputDir() + " " + String.valueOf(type) + " " + expectedDir();
 
-                       runTest(true, false, null, -1);
+                       runTest(null);
                        runRScript(true);
 
                        //compare matrices
diff --git 
a/src/test/java/org/apache/sysds/test/functions/frame/FrameIndexingDistTest.java
 
b/src/test/java/org/apache/sysds/test/functions/frame/FrameIndexingDistTest.java
index 786803df8d..70dbdf7203 100644
--- 
a/src/test/java/org/apache/sysds/test/functions/frame/FrameIndexingDistTest.java
+++ 
b/src/test/java/org/apache/sysds/test/functions/frame/FrameIndexingDistTest.java
@@ -259,7 +259,6 @@ public class FrameIndexingDistTest extends AutomatedTestBase
                        FrameBlock frameRBlock = 
readRFrameFromHDFS(file+".csv", FileFormat.CSV, md);
                        ValueType[] schemaOut = outputSchema.get(file);
                        verifyFrameData(frameBlock, frameRBlock, schemaOut);
-                       System.out.println("File processed is " + file);
                }
        }
        
diff --git 
a/src/test/java/org/apache/sysds/test/functions/binary/frame/FrameMapMarginTest.java
 b/src/test/java/org/apache/sysds/test/functions/frame/FrameMapMarginTest.java
similarity index 97%
rename from 
src/test/java/org/apache/sysds/test/functions/binary/frame/FrameMapMarginTest.java
rename to 
src/test/java/org/apache/sysds/test/functions/frame/FrameMapMarginTest.java
index 1ef65e41e6..6a01587c68 100644
--- 
a/src/test/java/org/apache/sysds/test/functions/binary/frame/FrameMapMarginTest.java
+++ 
b/src/test/java/org/apache/sysds/test/functions/frame/FrameMapMarginTest.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.sysds.test.functions.binary.frame;
+package org.apache.sysds.test.functions.frame;
 
 import org.apache.sysds.common.Types;
 import org.apache.sysds.common.Types.ExecType;
@@ -80,7 +80,7 @@ public class FrameMapMarginTest extends AutomatedTestBase {
        private void runDmlMapTest( String expression, int margin, ExecType et)
        {
                Types.ExecMode platformOld = setExecMode(et);
-
+               setOutputBuffering(true);
                try {
                        getAndLoadTestConfiguration(TEST_NAME);
 
@@ -91,7 +91,7 @@ public class FrameMapMarginTest extends AutomatedTestBase {
                        double[][] A = getRandomMatrix(rows, 2, 1, 1, 1, 2);
                        writeInputFrameWithMTD("A", A, true, schemaStrings1, 
FileFormat.CSV);
                        
-                       runTest(true, false, null, -1);
+                       runTest(null);
 
                        FrameBlock outputFrame = readDMLFrameFromHDFS("O", 
FileFormat.CSV);
 
diff --git 
a/src/test/java/org/apache/sysds/test/functions/binary/frame/FrameMapTest.java 
b/src/test/java/org/apache/sysds/test/functions/frame/FrameMapTest.java
similarity index 98%
rename from 
src/test/java/org/apache/sysds/test/functions/binary/frame/FrameMapTest.java
rename to src/test/java/org/apache/sysds/test/functions/frame/FrameMapTest.java
index 62d1c8abd1..bb993de8a2 100644
--- 
a/src/test/java/org/apache/sysds/test/functions/binary/frame/FrameMapTest.java
+++ b/src/test/java/org/apache/sysds/test/functions/frame/FrameMapTest.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.sysds.test.functions.binary.frame;
+package org.apache.sysds.test.functions.frame;
 
 import org.apache.sysds.common.Types;
 import org.apache.sysds.common.Types.FileFormat;
@@ -120,7 +120,7 @@ public class FrameMapTest extends AutomatedTestBase {
        private void runDmlMapTest( String expression, TestType type, ExecType 
et)
        {
                Types.ExecMode platformOld = setExecMode(et);
-
+               setOutputBuffering(true);
                try {
                        getAndLoadTestConfiguration(TEST_NAME);
 
@@ -150,7 +150,7 @@ public class FrameMapTest extends AutomatedTestBase {
                        }
 
                        
-                       runTest(true, false, null, -1);
+                       runTest(null);
 
                        FrameBlock outputFrame = readDMLFrameFromHDFS("O", 
FileFormat.CSV);
                        FrameBlock inputFrame = readDMLFrameFromHDFS("I", 
FileFormat.CSV);


Reply via email to