package io.ebean;
import io.ebean.DRawSqlColumnsParser;
import io.ebean.RawSql.ColumnMapping;
import io.ebean.RawSql.ColumnMapping.Column;
import junit.framework.TestCase;
import java.util.Map;
public class TestRawSqlColumnParsing extends TestCase {
public void test_simple() {
ColumnMapping columnMapping = DRawSqlColumnsParser.parse("a,b,c");
Map<String, Column> mapping = columnMapping.mapping();
Column c = mapping.get("a");
assertEquals("a", c.getDbColumn());
assertEquals(0, c.getIndexPos());
assertEquals("a", c.getPropertyName());
c = mapping.get("b");
assertEquals("b", c.getDbColumn());
assertEquals(1, c.getIndexPos());
assertEquals("b", c.getPropertyName());
c = mapping.get("c");
assertEquals("c", c.getDbColumn());
assertEquals(2, c.getIndexPos());
assertEquals("c", c.getPropertyName());
}
public void test_simpleWithSpacing() {
ColumnMapping columnMapping = DRawSqlColumnsParser.parse(" a , b , c ");
Map<String, Column> mapping = columnMapping.mapping();
Column c = mapping.get("a");
assertEquals("a", c.getDbColumn());
assertEquals(0, c.getIndexPos());
assertEquals("a", c.getPropertyName());
c = mapping.get("b");
assertEquals("b", c.getDbColumn());
assertEquals(1, c.getIndexPos());
assertEquals("b", c.getPropertyName());
c = mapping.get("c");
assertEquals("c", c.getDbColumn());
assertEquals(2, c.getIndexPos());
assertEquals("c", c.getPropertyName());
}
public void test_withAlias() {
ColumnMapping columnMapping = DRawSqlColumnsParser.parse("a a0,b b1, c c2 , d d3 , e e4 ");
Map<String, Column> mapping = columnMapping.mapping();
assertEquals(5, mapping.size());
Column c = mapping.get("a0");
assertEquals("a", c.getDbColumn());
assertEquals(0, c.getIndexPos());
assertEquals("a0", c.getPropertyName());
c = mapping.get("b1");
assertEquals("b", c.getDbColumn());
assertEquals(1, c.getIndexPos());
assertEquals("b1", c.getPropertyName());
c = mapping.get("c2");
assertEquals("c", c.getDbColumn());
assertEquals(2, c.getIndexPos());
assertEquals("c2", c.getPropertyName());
c = mapping.get("d3");
assertEquals("d", c.getDbColumn());
assertEquals(3, c.getIndexPos());
assertEquals("d3", c.getPropertyName());
c = mapping.get("e4");
assertEquals("e", c.getDbColumn());
assertEquals(4, c.getIndexPos());
assertEquals("e4", c.getPropertyName());
}
public void test_withDatabaseFunction() {
ColumnMapping columnMapping = DRawSqlColumnsParser.parse("a a0,b b1, MONTH(MAKEDATE(2015, 241)) m2 , d d3 , e e4 ");
Map<String, Column> mapping = columnMapping.mapping();
assertEquals(5, mapping.size());
Column c = mapping.get("a0");
assertEquals("a", c.getDbColumn());
assertEquals(0, c.getIndexPos());
assertEquals("a0", c.getPropertyName());
c = mapping.get("b1");
assertEquals("b", c.getDbColumn());
assertEquals(1, c.getIndexPos());
assertEquals("b1", c.getPropertyName());
c = mapping.get("m2");
assertEquals("MONTH(MAKEDATE(2015, 241))", c.getDbColumn());
assertEquals(2, c.getIndexPos());
assertEquals("m2", c.getPropertyName());
c = mapping.get("d3");
assertEquals("d", c.getDbColumn());
assertEquals(3, c.getIndexPos());
assertEquals("d3", c.getPropertyName());
c = mapping.get("e4");
assertEquals("e", c.getDbColumn());
assertEquals(4, c.getIndexPos());
assertEquals("e4", c.getPropertyName());
}
public void test_withAsAlias() {
ColumnMapping columnMapping = DRawSqlColumnsParser.parse("a as a0,'b' b1, \"c(blah)\" as c2 , d as d3 , e as e4 ");
Map<String, Column> mapping = columnMapping.mapping();
assertEquals(5, mapping.size());
Column c = mapping.get("a0");
assertEquals("a", c.getDbColumn());
assertEquals(0, c.getIndexPos());
assertEquals("a0", c.getPropertyName());
c = mapping.get("b1");
assertEquals("'b'", c.getDbColumn());
assertEquals(1, c.getIndexPos());
assertEquals("b1", c.getPropertyName());
c = mapping.get("c2");
assertEquals("\"c(blah)\"", c.getDbColumn());
assertEquals(2, c.getIndexPos());
assertEquals("c2", c.getPropertyName());
c = mapping.get("d3");
assertEquals("d", c.getDbColumn());
assertEquals(3, c.getIndexPos());
assertEquals("d3", c.getPropertyName());
c = mapping.get("e4");
assertEquals("e", c.getDbColumn());
assertEquals(4, c.getIndexPos());
assertEquals("e4", c.getPropertyName());
}
}