/*
* Copyright (c) 2015 Guillaume Hillairet.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Guillaume Hillairet - initial API and implementation
*
*/
package org.emfjson.jackson.tests;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.util.InternalEList;
import org.emfjson.jackson.junit.model.ModelPackage;
import org.emfjson.jackson.junit.model.Node;
import org.emfjson.jackson.junit.model.User;
import org.emfjson.jackson.support.StandardFixture;
import org.junit.ClassRule;
import org.junit.Test;
import java.io.IOException;
import static org.junit.Assert.*;
public class ProxyAttributeTest {
@ClassRule
public static StandardFixture fixture = new StandardFixture();
private ObjectMapper mapper = fixture.mapper();
private ResourceSet resourceSet = fixture.getResourceSet();
@Test
public void testOptionProxyAttributesWithID() throws IOException {
Resource resource = resourceSet.getResource(URI.createURI("test-proxy-1.json"), true);
User u1 = (User) resource.getContents().get(0);
assertNotNull(u1);
assertFalse(u1.eIsProxy());
assertEquals(1, u1.getFriends().size());
User u2 = u1.getFriends().get(0);
assertFalse(u2.eIsProxy());
assertEquals("2", u2.getUserId());
assertEquals("Pierre", u2.getName());
assertNotNull(u1.getUniqueFriend());
assertFalse(u1.getUniqueFriend().eIsProxy());
assertEquals("3", u1.getUniqueFriend().getUserId());
assertEquals("Paul", u1.getUniqueFriend().getName());
}
@Test
@SuppressWarnings("unchecked")
public void testOptionProxyAttributes() throws IOException {
// options.put(EMFJs.OPTION_PROXY_ATTRIBUTES, true);
Resource resource = resourceSet.createResource(URI.createURI("src/test/resources/tests/test-proxy-3.json"));
// resource.load(options);
Node node = (Node) resource.getContents().get(0);
assertNotNull(node);
InternalEList<Node> proxies = (InternalEList<Node>) node.eGet(ModelPackage.Literals.NODE__MANY_REF, false);
assertEquals(3, proxies.size());
assertFalse(proxies.basicGet(0).eIsProxy());
assertFalse(proxies.basicGet(1).eIsProxy());
assertFalse(proxies.basicGet(2).eIsProxy());
assertEquals("2", proxies.basicGet(0).getLabel());
assertEquals("21", proxies.basicGet(1).getLabel());
assertEquals("3", proxies.basicGet(2).getLabel());
assertNotNull(node.getSource());
assertFalse(node.getSource().eIsProxy());
assertEquals("2121", node.getSource().getLabel());
Node node2 = (Node) resource.getContents().get(1);
assertNotNull(node2);
InternalEList<Node> proxies2 = (InternalEList<Node>) node2.eGet(ModelPackage.Literals.NODE__MANY_REF, false);
assertEquals(2, proxies2.size());
assertFalse(proxies2.basicGet(0).eIsProxy());
assertFalse(proxies2.basicGet(1).eIsProxy());
assertEquals("311", proxies2.basicGet(0).getLabel());
assertEquals("3112", proxies2.basicGet(1).getLabel());
}
}