Package siena.base.test

Source Code of siena.base.test.BaseTestNoAutoInc_4_SPECIALS

package siena.base.test;

import static siena.Json.map;

import java.lang.reflect.Modifier;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import siena.Model;
import siena.base.test.model.Address;
import siena.base.test.model.AutoInc;
import siena.base.test.model.BigDecimalDoubleModelStringId;
import siena.base.test.model.BigDecimalModel;
import siena.base.test.model.BigDecimalModelNoPrecisionStringId;
import siena.base.test.model.BigDecimalModelStringId;
import siena.base.test.model.BigDecimalStringModelStringId;
import siena.base.test.model.Contact;
import siena.base.test.model.DataTypes;
import siena.base.test.model.PersonStringID;
import siena.base.test.model.DataTypes.EnumLong;
import siena.base.test.model.DiscoveryStringId;
import siena.base.test.model.EnumTest;
import siena.base.test.model.MultipleKeys;
import siena.base.test.model.PersonUUID;
import siena.base.test.model.PolymorphicModel;
import siena.base.test.model.PolymorphicModelStringId;

public abstract class BaseTestNoAutoInc_4_SPECIALS extends BaseTestNoAutoInc_BASE {
 
  public void createClasses(List<Class<?>> classes) {
    classes.add(PersonStringID.class);
    classes.add(DiscoveryStringId.class);
    classes.add(PersonUUID.class);
    classes.add(DiscoveryStringId.class);
    classes.add(DataTypes.class);
    classes.add(BigDecimalModelStringId.class);
    classes.add(BigDecimalStringModelStringId.class);
    classes.add(BigDecimalModelNoPrecisionStringId.class);
    classes.add(BigDecimalDoubleModelStringId.class);
    classes.add(PolymorphicModel.class);
    classes.add(PolymorphicModelStringId.class);
    classes.add(EnumTest.class);
  }
 
  public void postInit() {
    for (Class<?> clazz : classes) {
      if(!Modifier.isAbstract(clazz.getModifiers())){
        pm.createQuery(clazz).delete();     
      }
    }
  }
 
  public void testGetObjectNotFound() {
    try {
      getPersonUUID("");
      fail();
    } catch(Exception e) {
      System.out.println("Everything is OK");
    }
   
    assertNull(pm.createQuery(PersonUUID.class).filter("firstName", "John").get());
  }
 
  public void testDeleteObjectNotFound() {
    try {
      PersonUUID p = new PersonUUID();
      pm.delete(p);
      fail();
    } catch(Exception e) {
      System.out.println("Everything is OK");
    }
  }
 
  public void testAutoincrement() {
    if(!supportsAutoincrement()) return;

    AutoInc first = new AutoInc();
    first.name = "first";
    pm.insert(first);
    assertTrue(first.id > 0);

    AutoInc second = new AutoInc();
    second.name = "second";
    pm.insert(second);
    assertTrue(second.id > 0);
   
    assertTrue(second.id > first.id);
  }
 
  public void testRelationship() {
    DiscoveryStringId radioactivity = new DiscoveryStringId("Radioactivity", StringID_CURIE);
    DiscoveryStringId relativity = new DiscoveryStringId("Relativity", StringID_EINSTEIN);
    DiscoveryStringId teslaCoil = new DiscoveryStringId("Tesla Coil", StringID_TESLA);
   
    pm.insert(radioactivity);
    pm.insert(relativity);
    pm.insert(teslaCoil);

    DiscoveryStringId relativity2 = pm.createQuery(DiscoveryStringId.class).filter("discoverer", StringID_EINSTEIN).get();
    assertTrue(relativity.name.equals(relativity2.name));

  }
 
  public void testMultipleKeys() {
    if(!supportsMultipleKeys()) return;
   
    MultipleKeys a = new MultipleKeys();
    a.id1 = "aid1";
    a.id2 = "aid2";
    a.name = "first";
    a.parent = null;
    pm.insert(a);

    MultipleKeys b = new MultipleKeys();
    b.id1 = "bid1";
    b.id2 = "bid2";
    b.name = "second";
    b.parent = null;
    pm.insert(b);
   
    b.parent = a;
    pm.update(b);
  }
 
  public void testDataTypesNull() {
    DataTypes dataTypes = new DataTypes();
    pm.insert(dataTypes);
   
    assertEqualsDataTypes(dataTypes, pm.createQuery(DataTypes.class).get());
  }
 
  public void testDataTypesNotNull() {
    char[] c = new char[501];
    Arrays.fill(c, 'x');
   
    DataTypes dataTypes = new DataTypes();
    dataTypes.typeByte = 1;
    dataTypes.typeShort = 2;
    dataTypes.typeInt = 3;
    dataTypes.typeLong = 4;
    dataTypes.typeFloat = 5;
    dataTypes.typeDouble = 6;
    dataTypes.typeDate = new Date();
    dataTypes.typeString = "hello";
    dataTypes.typeLargeString = new String(c);
    dataTypes.typeJson = map().put("foo", "bar");
    dataTypes.addresses = new ArrayList<Address>();
    dataTypes.addresses.add(new Address("Castellana", "Madrid"));
    dataTypes.addresses.add(new Address("Diagonal", "Barcelona"));
    dataTypes.contacts = new HashMap<String, Contact>();
    dataTypes.contacts.put("id1", new Contact("Somebody", Arrays.asList("foo", "bar")));
   
    dataTypes.shortShort = Short.MAX_VALUE;
    dataTypes.intInt = Integer.MAX_VALUE;
    dataTypes.longLong = Long.MAX_VALUE;
    dataTypes.boolBool = Boolean.TRUE;
   
    // Blob
    dataTypes.typeBlob = new byte[] {
        (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x04,
        (byte)0x10(byte)0X11, (byte)0xF0, (byte)0xF1,
        (byte)0xF9(byte)0xFF };
   
    dataTypes.typeEnum = EnumLong.ALPHA;
   
    pm.insert(dataTypes);
   
    // to test that fields are read back correctly
    pm.createQuery(DataTypes.class).filter("id", dataTypes.id).get();
   
    DataTypes same = pm.createQuery(DataTypes.class).get();
    assertEqualsDataTypes(dataTypes, same);
  }
 
  public void testBigDecimal() {
    BigDecimalModelStringId bigdec =
      new BigDecimalModelStringId("test", new BigDecimal("123456789.0123456890"));
    pm.insert(bigdec);
   
    BigDecimalModelStringId bigdec2 = pm.getByKey(BigDecimalModelStringId.class, bigdec.id);
    assertEquals(bigdec, bigdec2);
   
    bigdec =
      new BigDecimalModelStringId("test2",
          new BigDecimal("999999999.9999999999"));
    pm.insert(bigdec);
   
    bigdec2 = pm.getByKey(BigDecimalModelStringId.class, bigdec.id);
    assertEquals(bigdec, bigdec2);
   
    //-100.5
    bigdec =
      new BigDecimalModelStringId("test3", new BigDecimal("-100.5000000000"));
    pm.insert(bigdec);
   
    bigdec2 = pm.getByKey(BigDecimalModelStringId.class, bigdec.id);
    assertEquals(bigdec, bigdec2);
  }
 
  public void testBigDecimalNoPrecision() {
    BigDecimalModelNoPrecisionStringId bigdec =
      new BigDecimalModelNoPrecisionStringId("test", new BigDecimal("123456789.01"));
    pm.insert(bigdec);
   
    BigDecimalModelNoPrecisionStringId bigdec2 = pm.getByKey(BigDecimalModelNoPrecisionStringId.class, bigdec.id);
    assertEquals(bigdec, bigdec2);
   
    bigdec =
      new BigDecimalModelNoPrecisionStringId(
          "test2",
          new BigDecimal("999999999.99"));
    pm.insert(bigdec);
   
    bigdec2 = pm.getByKey(BigDecimalModelNoPrecisionStringId.class, bigdec.id);
    assertEquals(bigdec, bigdec2);
   
    //-100.5
    bigdec =
      new BigDecimalModelNoPrecisionStringId("test3", new BigDecimal("-100.50"));
    pm.insert(bigdec);
   
    bigdec2 = pm.getByKey(BigDecimalModelNoPrecisionStringId.class, bigdec.id);
    assertEquals(bigdec, bigdec2);
  }
 
  public void testBigDecimalString() {
    BigDecimalStringModelStringId bigdec =
      new BigDecimalStringModelStringId("test", new BigDecimal("123456789.0123456890"));
    pm.insert(bigdec);
   
    BigDecimalStringModelStringId bigdec2 = pm.getByKey(BigDecimalStringModelStringId.class, bigdec.id);
    assertEquals(bigdec, bigdec2);
   
    bigdec =
      new BigDecimalStringModelStringId(
          "test2",
          new BigDecimal("999999999.9999999999"));
    pm.insert(bigdec);
   
    bigdec2 = pm.getByKey(BigDecimalStringModelStringId.class, bigdec.id);
    assertEquals(bigdec, bigdec2);
   
    //-100.5
    bigdec =
      new BigDecimalStringModelStringId("test3", new BigDecimal("-100.5000000000"));
    pm.insert(bigdec);
   
    bigdec2 = pm.getByKey(BigDecimalStringModelStringId.class, bigdec.id);
    assertEquals(bigdec, bigdec2);
  }
 
  public void testBigDecimalDouble() {
    BigDecimalDoubleModelStringId bigdec =
      new BigDecimalDoubleModelStringId("test", new BigDecimal("123456789.012345"));
    pm.insert(bigdec);
   
    BigDecimalDoubleModelStringId bigdec2 = pm.getByKey(BigDecimalDoubleModelStringId.class, bigdec.id);
    assertEquals(bigdec, bigdec2);
   
    bigdec =
      new BigDecimalDoubleModelStringId(
          "test2",
          new BigDecimal("999999999.9999999999"));
    pm.insert(bigdec);
   
    bigdec2 = pm.getByKey(BigDecimalDoubleModelStringId.class, bigdec.id);
    assertEquals(bigdec, bigdec2);
   
    //-100.5
    bigdec =
      new BigDecimalDoubleModelStringId("test3", new BigDecimal("-100.5000000000"));
    pm.insert(bigdec);
   
    bigdec2 = pm.getByKey(BigDecimalDoubleModelStringId.class, bigdec.id);
    assertEquals(bigdec, bigdec2);
  }
 
  public void testPolymorphic() {
    PolymorphicModelStringId<String> poly = new PolymorphicModelStringId<String>("test", "test2");
    pm.insert(poly);
   
    PolymorphicModelStringId poly2 = pm.getByKey(PolymorphicModelStringId.class, poly.id);
    assertEquals(poly, poly2);
  }
 
  public void testPolymorphic2() {
    List<String> arr = new ArrayList<String>();
    arr.add("alpha");
    arr.add("beta");
    PolymorphicModelStringId<List<String>> poly = new PolymorphicModelStringId<List<String>>("test", arr);
    pm.insert(poly);
   
    PolymorphicModelStringId<List<String>> poly2 = pm.getByKey(PolymorphicModelStringId.class, poly.id);
    assertEquals(poly, poly2);
  }

  public void testEnum() {
    EnumTest e = new EnumTest();
    e.role = EnumTest.UserRole.ADMIN;
    e.insert();
   
    List<EnumTest> es = Model.all(EnumTest.class).filter("role", EnumTest.UserRole.ADMIN).fetch();
    assertTrue(!es.isEmpty());
    assertEquals(e, es.get(0));
  }
}
TOP

Related Classes of siena.base.test.BaseTestNoAutoInc_4_SPECIALS

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.