Package com.j256.ormlite.field.types

Source Code of com.j256.ormlite.field.types.EnumStringTypeTest$LocalUnknownEnum

package com.j256.ormlite.field.types;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import java.sql.SQLException;
import java.util.List;

import org.junit.Test;

import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.field.DataType;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.field.SqlType;
import com.j256.ormlite.stmt.StatementBuilder.StatementType;
import com.j256.ormlite.support.CompiledStatement;
import com.j256.ormlite.support.DatabaseConnection;
import com.j256.ormlite.support.DatabaseResults;
import com.j256.ormlite.table.DatabaseTable;

public class EnumStringTypeTest extends BaseTypeTest {

  private static final String ENUM_COLUMN = "ourEnum";

  @Test
  public void testEnumString() throws Exception {
    Class<LocalEnumString> clazz = LocalEnumString.class;
    Dao<LocalEnumString, Object> dao = createDao(clazz, true);
    OurEnum val = OurEnum.SECOND;
    String valStr = val.toString();
    String sqlVal = valStr;
    LocalEnumString foo = new LocalEnumString();
    foo.ourEnum = val;
    assertEquals(1, dao.create(foo));
    testType(dao, foo, clazz, val, sqlVal, sqlVal, valStr, DataType.ENUM_STRING, ENUM_COLUMN, false, true, true,
        false, false, false, true, false);
  }

  @Test
  public void testEnumStringNull() throws Exception {
    Class<LocalEnumString> clazz = LocalEnumString.class;
    Dao<LocalEnumString, Object> dao = createDao(clazz, true);
    LocalEnumString foo = new LocalEnumString();
    assertEquals(1, dao.create(foo));
    testType(dao, foo, clazz, null, null, null, null, DataType.ENUM_STRING, ENUM_COLUMN, false, true, true, false,
        false, false, true, false);
  }

  @Test
  public void testEnumStringResultsNoFieldType() throws Exception {
    Dao<LocalEnumString, Object> dao = createDao(LocalEnumString.class, true);
    OurEnum val = OurEnum.SECOND;
    LocalEnumString foo = new LocalEnumString();
    foo.ourEnum = val;
    assertEquals(1, dao.create(foo));
    DatabaseConnection conn = connectionSource.getReadOnlyConnection();
    CompiledStatement stmt = null;
    try {
      stmt =
          conn.compileStatement("select * from " + TABLE_NAME, StatementType.SELECT, noFieldTypes,
              DatabaseConnection.DEFAULT_RESULT_FLAGS);
      DatabaseResults results = stmt.runQuery(null);
      assertTrue(results.next());
      assertEquals(val.toString(),
          DataType.ENUM_STRING.getDataPersister()
              .resultToJava(null, results, results.findColumn(ENUM_COLUMN)));
    } finally {
      if (stmt != null) {
        stmt.close();
      }
      connectionSource.releaseConnection(conn);
    }
  }

  @Test(expected = SQLException.class)
  public void testUnknownEnumValue() throws Exception {
    Dao<LocalEnumString, Object> dao = createDao(LocalEnumString.class, true);
    LocalEnumString localEnumString = new LocalEnumString();
    localEnumString.ourEnum = OurEnum.FIRST;
    assertEquals(1, dao.create(localEnumString));
    assertEquals(1, dao.updateRaw("UPDATE Foo set ourEnum = 'THIRD'"));
    dao.queryForAll();
  }

  @Test
  public void testUnknownValueAnnotation() throws Exception {
    Dao<LocalUnknownEnum, Object> dao = createDao(LocalUnknownEnum.class, true);
    LocalUnknownEnum localUnknownEnum = new LocalUnknownEnum();
    localUnknownEnum.ourEnum = OurEnum.SECOND;
    assertEquals(1, dao.create(localUnknownEnum));
    assertEquals(1, dao.updateRaw("UPDATE Foo set ourEnum = 'THIRD'"));
    List<LocalUnknownEnum> unknowns = dao.queryForAll();
    assertEquals(1, unknowns.size());
    assertEquals(OurEnum.FIRST, unknowns.get(0).ourEnum);
  }

  @Test
  public void testDefaultValue() throws Exception {
    Dao<EnumDefault, Object> dao = createDao(EnumDefault.class, true);
    EnumDefault enumDefault = new EnumDefault();
    assertEquals(1, dao.create(enumDefault));
    List<EnumDefault> unknowns = dao.queryForAll();
    assertEquals(1, unknowns.size());
    assertEquals(OurEnum.SECOND, unknowns.get(0).ourEnum);
  }

  @Test(expected = IllegalArgumentException.class)
  public void testNotEnum() throws Exception {
    createDao(NotEnum.class, true);
  }

  @Test
  public void testCoverage() {
    new EnumStringType(SqlType.STRING, new Class[0]);
  }

  /* ================================================================================ */

  @DatabaseTable(tableName = TABLE_NAME)
  protected static class LocalEnumString {
    @DatabaseField(columnName = ENUM_COLUMN)
    OurEnum ourEnum;
  }

  @DatabaseTable(tableName = TABLE_NAME)
  protected static class LocalUnknownEnum {
    @DatabaseField(columnName = ENUM_COLUMN, unknownEnumName = "FIRST")
    OurEnum ourEnum;
  }

  protected static class EnumDefault {
    @DatabaseField(defaultValue = "SECOND")
    OurEnum ourEnum;
  }

  @DatabaseTable(tableName = TABLE_NAME)
  protected static class NotEnum {
    @DatabaseField(dataType = DataType.ENUM_STRING)
    String notEnum;
  }

  private enum OurEnum {
    FIRST,
    SECOND, ;
  }
}
TOP

Related Classes of com.j256.ormlite.field.types.EnumStringTypeTest$LocalUnknownEnum

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.