/** * <copyright> * * Copyright (c) 2009, 2010 Springsite BV (The Netherlands) and others * 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: * Martin Taal - Initial API and implementation * * </copyright> * * $Id: XMLTest.java,v 1.16 2011/08/25 12:42:34 mtaal Exp $ */ package org.eclipse.emf.texo.json.test; import java.util.ArrayList; import java.util.List; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.texo.component.ComponentProvider; import org.eclipse.emf.texo.datagenerator.ModelDataGenerator; import org.eclipse.emf.texo.json.EMFJSONConverter; import org.eclipse.emf.texo.json.JSONEMFConverter; import org.eclipse.emf.texo.store.MemoryObjectStore; import org.eclipse.emf.texo.test.TestUtils; import org.json.JSONObject; import org.junit.Assert; /** * Test the conversion to and from JSON and EMF. For each test the following steps are done: * <ol> * <li>Generate test data set</li> * <li>Convert the test data set to json (json1)</li> * <li>Convert the json back to a {@link EObject} instance</li> * <li>Convert this list back to json (json22)</li> * <li>then the following should be true: json1.equals(json2)</li> * </ol> * * @author <a href="mailto:mtaal@elver.org">Martin Taal</a> * @version $Revision: 1.16 $ */ public class JSONEMFTest extends BaseJSONTest { public JSONEMFTest(String name) { super(name); } public void doRunTest() throws Exception { final MemoryObjectStore memObjectStore = ComponentProvider.getInstance().newInstance(MemoryObjectStore.class); memObjectStore.setChildLevels(100); final ModelDataGenerator dataGenerator = TestUtils.generateTestSetModelGenerator(1, 3, 3, 10000, getEPackages(), getEClasses()); final List<EObject> m1 = dataGenerator.getResult(); memObjectStore.addData(new ArrayList<Object>(dataGenerator.getAllEObjects())); final Object json1 = getToJsonConverter(memObjectStore).convert(m1.get(0)); final EObject m2 = getFromJsonConverter(memObjectStore).convert((JSONObject) json1); final Object json2 = getToJsonConverter(memObjectStore).convert(m2); System.err.println(json1); System.err.println("---------------------------------------------"); System.err.println(json2); Assert.assertEquals(json1.toString(), json2.toString()); final EObject m3 = getFromJsonConverter(memObjectStore).convert((JSONObject) json2); final Object json3 = getToJsonConverter(memObjectStore).convert(m3); Assert.assertEquals(json2.toString(), json3.toString()); } private EMFJSONConverter getToJsonConverter(MemoryObjectStore store) { final EMFJSONConverter toJsonConverter = ComponentProvider.getInstance().newInstance(EMFJSONConverter.class); toJsonConverter.setObjectResolver(store); toJsonConverter.setConvertNonContainedReferencedObjects(false); toJsonConverter.setMaxChildLevelsToConvert(1); toJsonConverter.setPreSortManyValues(false); toJsonConverter.setSerializeTitleProperty(false); return toJsonConverter; } private JSONEMFConverter getFromJsonConverter(MemoryObjectStore store) { final JSONEMFConverter fromJsonConverter = ComponentProvider.getInstance().newInstance(JSONEMFConverter.class); fromJsonConverter.setObjectResolver(store); return fromJsonConverter; } }