package com.esri.hadoop.hive;
import static org.junit.Assert.*;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import org.apache.hadoop.io.BytesWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.hive.serde2.io.DoubleWritable;
// select ST_GeometryType(ST_Linestring(10,10, 20,20)) from onerow;
// select ST_GeometryType(ST_Linestring('linestring (10 10, 20 20)')) from onerow;
// select ST_GeometryType(ST_Linestring('linestring z (10 10 2, 20 20 4)')) from onerow;
public class TestStLineString {
@Test
public void test() throws Exception {
ST_GeometryType typer = new ST_GeometryType();
ST_LineString stLn = new ST_LineString();
//ST_Equals stEq = new ST_Equals();
DoubleWritable ten = new DoubleWritable(10);
DoubleWritable twenty = new DoubleWritable(20);
BytesWritable bwGeom = stLn.evaluate(ten,ten, twenty);
assertEquals(null, bwGeom); // odd arguments
bwGeom = stLn.evaluate(ten,ten, twenty,twenty);
Text gty = typer.evaluate(bwGeom);
assertEquals("ST_LINESTRING", gty.toString());
Text wkt = new Text("linestring (10 10, 20 20)");
bwGeom = stLn.evaluate(wkt);
gty = typer.evaluate(bwGeom);
assertEquals("ST_LINESTRING", gty.toString());
//GUDF assertTrue(stEq.~eval~(new ST_GeomFromText().evaluate(wkt), bwGeom));
bwGeom = stLn.evaluate(new Text("linestring z (10 10 2, 20 20 4)"));
gty = typer.evaluate(bwGeom);
assertEquals("ST_LINESTRING", gty.toString());
ArrayList<DoubleWritable> xs = new ArrayList<DoubleWritable>(Arrays.asList(ten,twenty));
ArrayList<DoubleWritable> ys = new ArrayList<DoubleWritable>(Arrays.asList(twenty,ten));
bwGeom = stLn.evaluate(xs, ys);
gty = typer.evaluate(bwGeom);
assertEquals("ST_LINESTRING", gty.toString());
BytesWritable pt1020 = new ST_Point().evaluate(ten,twenty);
BytesWritable pt2010 = new ST_Point().evaluate(twenty,ten);
ArrayList<BytesWritable> pts = new ArrayList<BytesWritable>(Arrays.asList(pt1020, pt2010));
bwGeom = stLn.evaluate(pts);
gty = typer.evaluate(bwGeom);
assertEquals("ST_LINESTRING", gty.toString());
}
}