Package org.springframework.data.cassandra.test.unit.mapidfactory

Source Code of org.springframework.data.cassandra.test.unit.mapidfactory.MapIdFactoryTest$SetMethodTakingNonSerializable

package org.springframework.data.cassandra.test.unit.mapidfactory;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.springframework.data.cassandra.repository.support.IdInterfaceValidator.validate;
import static org.springframework.data.cassandra.repository.support.MapIdFactory.id;

import java.io.Serializable;
import java.util.Random;

import org.junit.Test;
import org.springframework.data.cassandra.repository.MapId;
import org.springframework.data.cassandra.repository.support.IdInterfaceExceptions;

public class MapIdFactoryTest {

  interface HappyExtendingMapIdAndSerializable extends MapId, Serializable {
    HappyExtendingMapIdAndSerializable string(String s);

    void setString(String s);

    HappyExtendingMapIdAndSerializable withString(String s);

    String string();

    String getString();

    HappyExtendingMapIdAndSerializable number(Integer i);

    void setNumber(Integer i);

    Integer number();

    Integer getNumber();
  }

  @Test
  public void testHappyExtendingMapId() {
    Random r = new Random();
    String s = "" + r.nextInt();
    Integer i = new Integer(r.nextInt());

    HappyExtendingMapIdAndSerializable id = id(HappyExtendingMapIdAndSerializable.class);

    assertNull(id.string());
    assertNull(id.number());
    assertNull(id.getString());
    assertNull(id.getNumber());

    id.setNumber(i);
    assertEquals(i, id.getNumber());
    assertEquals(i, id.number());
    assertEquals(i, id.get("number"));

    HappyExtendingMapIdAndSerializable returned = null;

    returned = id.number(i = r.nextInt());
    assertSame(returned, id);
    assertEquals(i, id.getNumber());
    assertEquals(i, id.number());
    assertEquals(i, id.get("number"));

    id.put("number", i = r.nextInt());
    assertEquals(i, id.getNumber());
    assertEquals(i, id.number());
    assertEquals(i, id.get("number"));

    id.setString(s);
    assertEquals(s, id.getString());
    assertEquals(s, id.string());
    assertEquals(s, id.get("string"));

    returned = id.string(s = "" + r.nextInt());
    assertSame(returned, id);
    assertEquals(s, id.getString());
    assertEquals(s, id.string());
    assertEquals(s, id.get("string"));

    returned = id.withString(s = "" + r.nextInt());
    assertSame(returned, id);
    assertEquals(s, id.getString());
    assertEquals(s, id.string());
    assertEquals(s, id.get("string"));

    id.put("string", s = "" + r.nextInt());
    assertEquals(s, id.getString());
    assertEquals(s, id.string());
    assertEquals(s, id.get("string"));

    id.setString(null);
    assertNull(id.getString());
    assertNull(id.string());
    assertNull(id.get("string"));

    id.setNumber(null);
    assertNull(id.getNumber());
    assertNull(id.number());
    assertNull(id.get("number"));
  }

  interface HappyExtendingNothing {
    HappyExtendingNothing string(String s);

    void setString(String s);

    HappyExtendingNothing withString(String s);

    String string();

    String getString();

    HappyExtendingNothing number(Integer i);

    void setNumber(Integer i);

    Integer number();

    Integer getNumber();
  }

  @Test
  public void testHappyExtendingNothing() {
    Random r = new Random();
    String s = "" + r.nextInt();
    Integer i = new Integer(r.nextInt());

    HappyExtendingNothing id = id(HappyExtendingNothing.class);

    assertTrue(id instanceof Serializable);
    assertTrue(id instanceof MapId);
    MapId mapid = (MapId) id;

    assertNull(id.string());
    assertNull(id.number());
    assertNull(id.getString());
    assertNull(id.getNumber());

    id.setNumber(i);
    assertEquals(i, id.getNumber());
    assertEquals(i, id.number());
    assertEquals(i, mapid.get("number"));

    HappyExtendingNothing returned = null;

    returned = id.number(i = r.nextInt());
    assertSame(returned, id);
    assertEquals(i, id.getNumber());
    assertEquals(i, id.number());
    assertEquals(i, mapid.get("number"));

    mapid.put("number", i = r.nextInt());
    assertEquals(i, id.getNumber());
    assertEquals(i, id.number());
    assertEquals(i, mapid.get("number"));

    id.setString(s);
    assertEquals(s, id.getString());
    assertEquals(s, id.string());
    assertEquals(s, mapid.get("string"));

    returned = id.string(s = "" + r.nextInt());
    assertSame(returned, id);
    assertEquals(s, id.getString());
    assertEquals(s, id.string());
    assertEquals(s, mapid.get("string"));

    returned = id.withString(s = "" + r.nextInt());
    assertSame(returned, id);
    assertEquals(s, id.getString());
    assertEquals(s, id.string());
    assertEquals(s, mapid.get("string"));

    mapid.put("string", s = "" + r.nextInt());
    assertEquals(s, id.getString());
    assertEquals(s, id.string());
    assertEquals(s, mapid.get("string"));

    id.setString(null);
    assertNull(id.getString());
    assertNull(id.string());
    assertNull(mapid.get("string"));

    id.setNumber(null);
    assertNull(id.getNumber());
    assertNull(id.number());
    assertNull(mapid.get("number"));
  }

  class IdClass {}

  interface Foo {}

  interface IdExtendingNotMapId extends Foo {}

  interface LiteralGet {
    String get();
  }

  interface GetterReturningVoid {
    void getString();
  }

  interface GetReturningVoid {
    void string();
  }

  interface GetReturningNonSerializable {
    Object getFoo();
  }

  interface MethodWithMoreThanOneArgument {
    void foo(Object a, Object b);
  }

  interface LiteralSet {
    void set(String s);
  }

  interface LiteralWith {
    void with(String s);
  }

  interface SetterMethodNotReturningVoidOrThis {
    String string(String s);
  }

  interface SetMethodNotReturningVoidOrThis {
    String setString(String s);
  }

  interface WithMethodNotReturningVoidOrThis {
    String withString(String s);
  }

  interface SetterMethodTakingNonSerializable {
    void string(Object o);
  }

  interface SetMethodTakingNonSerializable {
    void string(Object o);
  }

  interface WithMethodTakingNonSerializable {
    void string(Object o);
  }

  @Test
  public void testUnhappies() {
    Class<?>[] interfaces = new Class<?>[] { IdClass.class, IdExtendingNotMapId.class, LiteralGet.class,
        GetterReturningVoid.class, GetReturningVoid.class, GetReturningNonSerializable.class,
        MethodWithMoreThanOneArgument.class, LiteralSet.class, LiteralWith.class,
        SetterMethodNotReturningVoidOrThis.class, SetMethodNotReturningVoidOrThis.class,
        WithMethodNotReturningVoidOrThis.class, SetterMethodTakingNonSerializable.class,
        SetMethodTakingNonSerializable.class, WithMethodTakingNonSerializable.class };
    for (Class<?> i : interfaces) {
      try {
        validate(i);
        fail("should've caught IdInterfaceException validating interface " + i);
      } catch (IdInterfaceExceptions e) {
        assertEquals(1, e.getCount());
      }
    }
  }
}
TOP

Related Classes of org.springframework.data.cassandra.test.unit.mapidfactory.MapIdFactoryTest$SetMethodTakingNonSerializable

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.