Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed 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 com.facebook.presto.testing;
 
 
 import java.util.List;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;

Materialize all values in a row Special handling is added for Double types for approximate comparisons
 
 public class MaterializedRow
 {
     private final int precision;
     private final List<Objectvalues;
 
     public MaterializedRow(int precisionObject... values)
     {
         this(precision, Arrays.asList(checkNotNull(values"values is null")));
     }
 
     public MaterializedRow(int precisionList<Objectvalues)
     {
         checkArgument(precision > 0, "Need at least one digit of precision");
         this. = precision;
 
         this. = new ArrayList<>(values.size());
         for (Object object : values) {
             if (object instanceof Double || object instanceof Float) {
                 this..add(new ApproximateDouble(((Numberobject).doubleValue(), precision));
             }
             else if (object instanceof Number) {
                 this..add(((Numberobject).longValue());
             }
             else {
                 this..add(object);
             }
         }
     }
 
     public int getPrecision()
     {
         return ;
     }
 
     public int getFieldCount()
     {
         return .size();
     }
 
     public Object getField(int field)
     {
         Preconditions.checkElementIndex(field.size());
         Object o = .get(field);
         return (o instanceof ApproximateDouble) ? ((ApproximateDoubleo).getValue() : o;
     }
 
     @Override
     public String toString()
     {
         return .toString();
     }
 
     @Override
     public boolean equals(Object obj)
     {
         if (obj == this) {
             return true;
         }
         if ((obj == null) || (getClass() != obj.getClass())) {
             return false;
         }
         MaterializedRow o = (MaterializedRowobj;
         return Objects.equals(o.values);
     }
 
     @Override
     public int hashCode()
     {
        return Objects.hash();
    }
    private static class ApproximateDouble
    {
        private final Double value;
        private final Double normalizedValue;
        private ApproximateDouble(Double valueint precision)
        {
            this. = value;
            if (value.isNaN() || value.isInfinite()) {
                this. = value;
            }
            else {
                this. = new BigDecimal(value).round(new MathContext(precision)).doubleValue();
            }
        }
        public Double getValue()
        {
            return ;
        }
        @Override
        public String toString()
        {
            return .toString();
        }
        @Override
        public boolean equals(Object obj)
        {
            if (obj == this) {
                return true;
            }
            if ((obj == null) || (getClass() != obj.getClass())) {
                return false;
            }
            ApproximateDouble o = (ApproximateDoubleobj;
            return Objects.equals(o.normalizedValue);
        }
        @Override
        public int hashCode()
        {
            return Objects.hash();
        }
    }
New to GrepCode? Check out our FAQ X