package org.n3r.eql.pojo; import org.junit.Test; import org.n3r.eql.Eql; import org.n3r.eql.param.InternalValueable; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; // CREATE TABLE students (name VARCHAR(64), mark ENUM('ABSENT','COPY CASE' )); // INSERT INTO students VALUES ('john', 'COPY CASE'); // SELECT * FROM students; public class EnumMappingTest { @Test public void test1() { Custom value = new Eql("mysql").returnType(Custom.class).limit(1) .execute("select 'male' as sex, 1 as age"); assertThat(value.sex, is(Sex.male)); value = new Eql("mysql").returnType(Custom.class).limit(1) .execute("select 'female' as sex, 1 as age"); assertThat(value.sex, is(Sex.female)); } @Test public void test2() { Custom value = new Eql("mysql").returnType(Custom.class).limit(1) .execute("select 'male' as sex"); assertThat(value.sex, is(Sex.male)); value = new Eql("mysql").returnType(Custom.class).limit(1) .execute("select 'female' as sex"); assertThat(value.sex, is(Sex.female)); } @Test public void test3() { Sex value = new Eql("mysql").returnType(Sex.class).limit(1) .execute("select 'male' as sex"); assertThat(value, is(Sex.male)); value = new Eql("mysql").returnType(Sex.class).limit(1) .execute("select 'female' as sex"); assertThat(value, is(Sex.female)); } @Test public void test4() { Sex2 value = new Eql("mysql").returnType(Sex2.class).limit(1) .execute("select '1' as sex"); assertThat(value, is(Sex2.male)); value = new Eql("mysql").returnType(Sex2.class).limit(1) .execute("select '0' as sex"); assertThat(value, is(Sex2.female)); } @Test public void testEnumAsParam() { new Eql("mysql").execute("drop table if exists eql_sex", "create table eql_sex(sex char(1))"); new Eql("mysql").params(Sex2.male).execute("insert into eql_sex value(##)"); Eql eql = new Eql("mysql").limit(1).returnType(Sex2.class).params(Sex2.male); Sex2 value = eql.execute("select sex from eql_sex where sex = ##"); assertThat(value, is(Sex2.male)); assertThat(eql.getEqlRun().getEvalSql(), is(equalTo("select sex from eql_sex where sex = '1'"))); } public enum Sex { male,female } public static class Custom { Sex sex; int age; } public enum Sex2 implements InternalValueable<String> { male("1"),female("0"); private final String value; Sex2(String value) { this.value = value; } @Override public String internalValue() { return value; } public static Sex2 valueOff(String value) { for(Sex2 v : values()) if(v.internalValue().equalsIgnoreCase(value)) return v; throw new IllegalArgumentException(); } } public static class Custom2 { Sex2 sex; int age; } }