Package com.getperka.flatpack.codex

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

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 static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import javax.inject.Inject;

import org.junit.Test;

import com.getperka.flatpack.BaseHasUuid;
import com.getperka.flatpack.FlatPackTest;
import com.getperka.flatpack.HasUuid;
import com.getperka.flatpack.codexes.DynamicCodex;
import com.getperka.flatpack.ext.DeserializationContext;
import com.getperka.flatpack.ext.DeserializationContext.EntitySource;
import com.getperka.flatpack.ext.TypeContext;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
import com.google.inject.TypeLiteral;

public class DynamicCodexTest extends FlatPackTest {

  @Inject
  DynamicCodex codex;

  @Inject
  TypeContext typeContext;

  @Test
  public void testList() {
    List<Object> data = new ArrayList<Object>(Arrays.<Object> asList(false, null, "Hello World!"));
    assertEquals(data, testCodex(TypeLiteral.get(DynamicCodex.class), data));
  }

  @Test
  public void testMap() throws Exception {
    Map<String, Object> data = new HashMap<String, Object>();
    data.put("true", true);
    data.put("false", false);
    data.put("string", "Hello World!");

    JsonObject obj = new JsonObject();
    obj.addProperty("true", true);
    obj.addProperty("false", false);
    obj.addProperty("string", "Hello World!");

    DeserializationContext d = deserializationContext();
    assertEquals(data, codex.readNotNull(obj, d));
    assertEquals(data, typeContext.getCodex(Map.class).readNotNull(obj, d));
  }

  @Test
  public void testPrimitives() {
    DeserializationContext ctx = deserializationContext();

    assertTrue((Boolean) codex.read(new JsonPrimitive(true), ctx));
    assertEquals(BigDecimal.valueOf(42), codex.read(new JsonPrimitive(42), ctx));
    assertEquals(BigDecimal.valueOf(42.2), codex.read(new JsonPrimitive(42.2), ctx));
    assertEquals("Hello World!", codex.read(new JsonPrimitive("Hello World!"), ctx));

    UUID uuid = UUID.randomUUID();
    assertEquals(uuid.toString(), codex.read(new JsonPrimitive(uuid.toString()), ctx));

    HasUuid entity = new BaseHasUuid();
    ctx.putEntity(uuid, entity, EntitySource.RESOLVED);
    assertSame(entity, codex.read(new JsonPrimitive(uuid.toString()), ctx));
  }
}
TOP

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

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.