Package com.getperka.flatpack.codex

Source Code of com.getperka.flatpack.codex.DateCodexTest

package com.getperka.flatpack.codex;

/*
* #%L
* FlatPack serialization code
* %%
* Copyright (C) 2012 Perka Inc.
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/

import static org.junit.Assert.assertEquals;

import java.util.HashSet;

import javax.inject.Inject;

import org.junit.Test;

import com.getperka.flatpack.FlatPackTest;
import com.getperka.flatpack.HasUuid;
import com.getperka.flatpack.ext.Codex;
import com.getperka.flatpack.ext.DeserializationContext;
import com.getperka.flatpack.ext.TypeContext;
import com.google.gson.JsonPrimitive;
import com.google.inject.TypeLiteral;
import com.google.inject.util.Providers;

public class DateCodexTest extends FlatPackTest {

  @Inject
  private TypeLiteral<java.sql.Date> javaSqlDate;
  @Inject
  private TypeLiteral<java.sql.Time> javaSqlTime;
  @Inject
  private TypeLiteral<java.sql.Timestamp> javaSqlTimestamp;
  @Inject
  private TypeLiteral<java.util.Date> javaUtilDate;
  @Inject
  private TypeContext typeContext;

  private final long now = System.currentTimeMillis();

  @Test
  public void testJavaSqlDate() throws Exception {
    test(javaSqlDate);
  }

  @Test
  public void testJavaSqlTime() throws Exception {
    test(javaSqlTime);
  }

  @Test
  public void testJavaSqlTimestamp() throws Exception {
    test(javaSqlTimestamp);
  }

  @Test
  public void testJavaUtilDate() throws Exception {
    test(javaUtilDate);
  }

  private <D extends java.util.Date> void test(TypeLiteral<D> type) throws Exception {
    test(type, 0);
    test(type, now);
  }

  private <D extends java.util.Date> void test(TypeLiteral<D> type, long instant) throws Exception {
    @SuppressWarnings("unchecked")
    D date = (D) type.getRawType().getConstructor(long.class).newInstance(instant);

    @SuppressWarnings("unchecked")
    Codex<D> codex = (Codex<D>) typeContext.getCodex(type.getType());
    DeserializationContext ctx = deserializationContext();
    Object read = codex.readNotNull(new JsonPrimitive(instant), ctx);
    closeContext();

    assertEquals(date, read);

    D returned = super.testCodex(Providers.of(codex), date, new HashSet<HasUuid>());
    assertEquals(date, returned);
  }

}
TOP

Related Classes of com.getperka.flatpack.codex.DateCodexTest

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.