Package org.apache.hadoop.hive.serde2.lazy

Source Code of org.apache.hadoop.hive.serde2.lazy.TestLazyPrimitive

/**
* 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.hadoop.hive.serde2.lazy;


import org.apache.hadoop.hive.serde2.ByteStream;
import org.apache.hadoop.hive.serde2.io.ByteWritable;
import org.apache.hadoop.hive.serde2.io.DoubleWritable;
import org.apache.hadoop.hive.serde2.io.ShortWritable;
import org.apache.hadoop.hive.serde2.lazy.objectinspector.primitive.LazyPrimitiveObjectInspectorFactory;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;

import junit.framework.TestCase;

public class TestLazyPrimitive extends TestCase {

  /**
   * Initialize the LazyObject with the parameters, wrapping the byte[] automatically.
   */
  public static void initLazyObject(LazyObject lo, byte[] data, int start, int length) {
    ByteArrayRef b = new ByteArrayRef();
    b.setData(data);
    lo.init(b, start, length);   
  }
  /**
   * Test the LazyByte class.
   */
  public void testLazyByte() throws Throwable {
    try {
      LazyByte b = new LazyByte(LazyPrimitiveObjectInspectorFactory.lazyByteObjectInspector);
      initLazyObject(b,new byte[]{'0'}, 0, 0);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'0'}, 0, 1);
      assertEquals(new ByteWritable((byte)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '0'}, 0, 2);
      assertEquals(new ByteWritable((byte)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '0'}, 0, 2);
      assertEquals(new ByteWritable((byte)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '1', 'b'}, 1, 1);
      assertEquals(new ByteWritable((byte)1), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '-', '1'}, 1, 2);
      assertEquals(new ByteWritable((byte)-1), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '+', '1'}, 1, 2);
      assertEquals(new ByteWritable((byte)1), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '1', '2', '8'}, 0, 4);
      assertEquals(new ByteWritable((byte)-128), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '1', '2', '7'}, 0, 4);
      assertEquals(new ByteWritable((byte)127), b.getWritableObject());
     
      initLazyObject(b,new byte[]{'a', '1', 'b'}, 1, 2);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '1', '2', '8'}, 0, 4);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '1', '2', '9'}, 0, 4);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '1', '2', '3'}, 0, 1);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '1', '2', '3'}, 0, 1);
      assertNull(b.getWritableObject());
    
    } catch (Throwable e) {
      e.printStackTrace();
      throw e;
    }
  }
   
  /**
   * Test the LazyShort class.
   */
  public void testLazyShort() throws Throwable {
    try {
      LazyShort b = new LazyShort(LazyPrimitiveObjectInspectorFactory.lazyShortObjectInspector);
      initLazyObject(b,new byte[]{'0'}, 0, 0);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'0'}, 0, 1);
      assertEquals(new ShortWritable((short)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '0'}, 0, 2);
      assertEquals(new ShortWritable((short)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '0'}, 0, 2);
      assertEquals(new ShortWritable((short)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '1', 'b'}, 1, 1);
      assertEquals(new ShortWritable((short)1), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '-', '1'}, 1, 2);
      assertEquals(new ShortWritable((short)-1), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '+', '1'}, 1, 2);
      assertEquals(new ShortWritable((short)1), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '1', '2', '8'}, 0, 4);
      assertEquals(new ShortWritable((short)-128), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '1', '2', '7'}, 0, 4);
      assertEquals(new ShortWritable((short)127), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '3', '2', '7', '6', '8'}, 0, 6);
      assertEquals(new ShortWritable((short)-32768), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '3', '2', '7', '6', '7'}, 0, 6);
      assertEquals(new ShortWritable((short)32767), b.getWritableObject());

      initLazyObject(b,new byte[]{'a', '1', 'b'}, 1, 2);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '3', '2', '7', '6', '9'}, 0, 6);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '3', '2', '7', '6', '8'}, 0, 6);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '1', '2', '3'}, 0, 1);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '1', '2', '3'}, 0, 1);
      assertNull(b.getWritableObject());

    } catch (Throwable e) {
      e.printStackTrace();
      throw e;
    }
  }
    

  /**
   * Test the LazyInteger class.
   */
  public void testLazyInteger() throws Throwable {
    try {
      LazyInteger b = new LazyInteger(LazyPrimitiveObjectInspectorFactory.lazyIntObjectInspector);
      initLazyObject(b,new byte[]{'0'}, 0, 0);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'0'}, 0, 1);
      assertEquals(new IntWritable((int)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '0'}, 0, 2);
      assertEquals(new IntWritable((int)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '0'}, 0, 2);
      assertEquals(new IntWritable((int)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '1', 'b'}, 1, 1);
      assertEquals(new IntWritable((int)1), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '-', '1'}, 1, 2);
      assertEquals(new IntWritable((int)-1), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '+', '1'}, 1, 2);
      assertEquals(new IntWritable((int)1), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '1', '2', '8'}, 0, 4);
      assertEquals(new IntWritable((int)-128), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '1', '2', '7'}, 0, 4);
      assertEquals(new IntWritable((int)127), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '3', '2', '7', '6', '8'}, 0, 6);
      assertEquals(new IntWritable((int)-32768), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '3', '2', '7', '6', '7'}, 0, 6);
      assertEquals(new IntWritable((int)32767), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '2', '1', '4', '7', '4', '8', '3', '6', '4', '8'}, 0, 11);
      assertEquals(new IntWritable((int)-2147483648), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '2', '1', '4', '7', '4', '8', '3', '6', '4', '7'}, 0, 11);
      assertEquals(new IntWritable((int)2147483647), b.getWritableObject());

      initLazyObject(b,new byte[]{'a', '1', 'b'}, 1, 2);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '2', '1', '4', '7', '4', '8', '3', '6', '4', '9'}, 0, 11);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '2', '1', '4', '7', '4', '8', '3', '6', '4', '8'}, 0, 11);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '1', '2', '3'}, 0, 1);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '1', '2', '3'}, 0, 1);
      assertNull(b.getWritableObject());

    } catch (Throwable e) {
      e.printStackTrace();
      throw e;
    }
  }
   
 
  /**
   * Test the LazyLong class.
   */
  public void testLazyLong() throws Throwable {
    try {
      LazyLong b = new LazyLong(LazyPrimitiveObjectInspectorFactory.lazyLongObjectInspector);
      initLazyObject(b,new byte[]{'0'}, 0, 0);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'0'}, 0, 1);
      assertEquals(new LongWritable((long)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '0'}, 0, 2);
      assertEquals(new LongWritable((long)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '0'}, 0, 2);
      assertEquals(new LongWritable((long)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '1', 'b'}, 1, 1);
      assertEquals(new LongWritable((long)1), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '-', '1'}, 1, 2);
      assertEquals(new LongWritable((long)-1), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '+', '1'}, 1, 2);
      assertEquals(new LongWritable((long)1), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '1', '2', '8'}, 0, 4);
      assertEquals(new LongWritable((long)-128), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '1', '2', '7'}, 0, 4);
      assertEquals(new LongWritable((long)127), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '3', '2', '7', '6', '8'}, 0, 6);
      assertEquals(new LongWritable((long)-32768), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '3', '2', '7', '6', '7'}, 0, 6);
      assertEquals(new LongWritable((long)32767), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '2', '1', '4', '7', '4', '8', '3', '6', '4', '8'}, 0, 11);
      assertEquals(new LongWritable((long)-2147483648), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '2', '1', '4', '7', '4', '8', '3', '6', '4', '7'}, 0, 11);
      assertEquals(new LongWritable((long)2147483647), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '9', '2', '2', '3', '3', '7', '2', '0', '3', '6', '8', '5',
          '4', '7', '7', '5', '8', '0', '8'}, 0, 20);
      assertEquals(new LongWritable((long)-9223372036854775808L), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '9', '2', '2', '3', '3', '7', '2', '0', '3', '6', '8', '5',
          '4', '7', '7', '5', '8', '0', '7'}, 0, 20);
      assertEquals(new LongWritable((long)9223372036854775807L), b.getWritableObject());

      initLazyObject(b,new byte[]{'a', '1', 'b'}, 1, 2);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '9', '2', '2', '3', '3', '7', '2', '0', '3', '6', '8', '5',
          '4', '7', '7', '5', '8', '0', '9'}, 0, 20);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '9', '2', '2', '3', '3', '7', '2', '0', '3', '6', '8', '5',
          '4', '7', '7', '5', '8', '0', '8'}, 0, 20);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '1', '2', '3'}, 0, 1);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '1', '2', '3'}, 0, 1);
      assertNull(b.getWritableObject());

    } catch (Throwable e) {
      e.printStackTrace();
      throw e;
    }
  }

  /**
   * Test the LazyDouble class.
   */
  public void testLazyDouble() throws Throwable {
    try {
      LazyDouble b = new LazyDouble(LazyPrimitiveObjectInspectorFactory.lazyDoubleObjectInspector);
      initLazyObject(b,new byte[]{'0'}, 0, 0);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'0'}, 0, 1);
      assertEquals(new DoubleWritable((double)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '0'}, 0, 2);
      assertEquals(new DoubleWritable((double)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '0'}, 0, 2);
      assertEquals(new DoubleWritable((double)-0.0), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '1', 'b'}, 1, 1);
      assertEquals(new DoubleWritable((double)1), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '-', '1'}, 1, 2);
      assertEquals(new DoubleWritable((double)-1), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '+', '1'}, 1, 2);
      assertEquals(new DoubleWritable((double)1), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '1', '2', '8'}, 0, 4);
      assertEquals(new DoubleWritable((double)-128), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '1', '2', '7'}, 0, 4);
      assertEquals(new DoubleWritable((double)127), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '3', '2', '7', '6', '8'}, 0, 6);
      assertEquals(new DoubleWritable((double)-32768), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '3', '2', '7', '6', '7'}, 0, 6);
      assertEquals(new DoubleWritable((double)32767), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '2', '1', '4', '7', '4', '8', '3', '6', '4', '8'}, 0, 11);
      assertEquals(new DoubleWritable((double)-2147483648), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '2', '1', '4', '7', '4', '8', '3', '6', '4', '7'}, 0, 11);
      assertEquals(new DoubleWritable((double)2147483647), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '9', '2', '2', '3', '3', '7', '2', '0', '3', '6', '8', '5',
          '4', '7', '7', '5', '8', '0', '8'}, 0, 20);
      assertEquals(new DoubleWritable((double)-9223372036854775808L), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '9', '2', '2', '3', '3', '7', '2', '0', '3', '6', '8', '5',
          '4', '7', '7', '5', '8', '0', '7'}, 0, 20);
      assertEquals(new DoubleWritable((long)9223372036854775807L), b.getWritableObject());

      initLazyObject(b,new byte[]{'-', '3', '.', '7', '6', '8'}, 0, 6);
      assertEquals(new DoubleWritable((double)-3.768), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '3', '.', '7', '6', '7'}, 0, 6);
      assertEquals(new DoubleWritable((double)3.767), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '2', '.', '4', '7', '4', '8', '3', '6', 'e', '8'}, 0, 11);
      assertEquals(new DoubleWritable((double)-2.474836e8), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '2', '.', '4', '7', '4', '8', '3', 'E', '-', '7'}, 0, 11);
      assertEquals(new DoubleWritable((double)2.47483E-7), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '.', '4', '7', '4', '8', '3', '6', 'e', '8'}, 0, 10);
      assertEquals(new DoubleWritable((double)-.474836e8), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '.', '4', '7', '4', '8', '3', 'E', '-', '7'}, 0, 10);
      assertEquals(new DoubleWritable((double).47483E-7), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '2', '1', '4', '7', '4', '8', '3', '6', '4', '.'}, 0, 11);
      assertEquals(new DoubleWritable((double)-214748364.), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '2', '1', '4', '7', '4', '8', '3', '6', '4', '.'}, 0, 11);
      assertEquals(new DoubleWritable((double)+214748364.), b.getWritableObject());

      initLazyObject(b,new byte[]{'.', '0'}, 0, 2);
      assertEquals(new DoubleWritable((double).0), b.getWritableObject());
      initLazyObject(b,new byte[]{'0', '.'}, 0, 2);
      assertEquals(new DoubleWritable((double)0.), b.getWritableObject());
     
      initLazyObject(b,new byte[]{'a', '1', 'b'}, 1, 2);
      assertNull(b.getWritableObject());
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'.', '1', '2', '3'}, 0, 1);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '1', '2', '3'}, 0, 1);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '1', '2', '3'}, 0, 1);
      assertNull(b.getWritableObject());
     
      initLazyObject(b,new byte[]{'-', '1', 'e', '3', '3', '3', '3', '3', '3'}, 0, 9);
      assertEquals(new DoubleWritable(Double.NEGATIVE_INFINITY), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '1', 'e', '3', '3', '3', '3', '3', '3'}, 0, 9);
      assertEquals(new DoubleWritable(Double.POSITIVE_INFINITY), b.getWritableObject());

      initLazyObject(b,new byte[]{'+', '1', 'e', '-', '3', '3', '3', '3', '3'}, 0, 8);
      assertEquals(new DoubleWritable((double)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '1', 'e', '-', '3', '3', '3', '3', '3'}, 0, 8);
      assertEquals(new DoubleWritable((double)-0.0), b.getWritableObject());
     
    } catch (Throwable e) {
      e.printStackTrace();
      throw e;
    }
  }
 
  /**
   * Test the LazyString class.
   */
  public void testLazyString() throws Throwable {
    try {
      LazyString b = new LazyString(LazyPrimitiveObjectInspectorFactory
          .getLazyStringObjectInspector(false,(byte)0));
      initLazyObject(b,new byte[]{'0'}, 0, 0);
      assertEquals(new Text(""), b.getWritableObject());
      initLazyObject(b,new byte[]{'0'}, 0, 1);
      assertEquals(new Text("0"), b.getWritableObject());
      initLazyObject(b,new byte[]{'0', '1', '2'}, 1, 1);
      assertEquals(new Text("1"), b.getWritableObject());
     
    } catch (Throwable e) {
      e.printStackTrace();
      throw e;
    }
  }
 
  public void testLazyIntegerWrite() throws Throwable {
    try {
      ByteStream.Output out = new ByteStream.Output();
     
      int[] tests = {0, -1, 1, -10, 10, -123, 123,
          Integer.MIN_VALUE, Integer.MIN_VALUE + 1,
          Integer.MAX_VALUE, Integer.MAX_VALUE - 1};
      for (int i=0; i<tests.length; i++) {
        int v = tests[i];
        out.reset();
        LazyInteger.writeUTF8(out, v);
        Text t = new Text();
        t.set(out.getData(), 0, out.getCount());
        assertEquals(String.valueOf(v), t.toString());
      }
     
    } catch (Throwable e) {
      e.printStackTrace();
      throw e;
    }
  } 

  public void testLazyLongWrite() throws Throwable {
    try {
      ByteStream.Output out = new ByteStream.Output();
     
      long[] tests = {0L, -1, 1, -10, 10, -123, 123,
          Long.MIN_VALUE, Long.MIN_VALUE + 1,
          Long.MAX_VALUE, Long.MAX_VALUE - 1};
      for (int i=0; i<tests.length; i++) {
        long v = tests[i];
        out.reset();
        LazyLong.writeUTF8(out, v);
        Text t = new Text();
        t.set(out.getData(), 0, out.getCount());
        assertEquals(String.valueOf(v), t.toString());
      }
     
    } catch (Throwable e) {
      e.printStackTrace();
      throw e;
    }
  } 

}
TOP

Related Classes of org.apache.hadoop.hive.serde2.lazy.TestLazyPrimitive

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.