imakerplugin/com.nokia.s60tools.imaker.tests/src/com/nokia/s60tools/imaker/internal/impmodel/tests/ImpResourceSaveTests.java
/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/
package com.nokia.s60tools.imaker.internal.impmodel.tests;
import java.io.File;
import java.io.IOException;
import java.util.Map;
import junit.framework.TestCase;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import com.nokia.s60tools.imaker.internal.impmodel.Comment;
import com.nokia.s60tools.imaker.internal.impmodel.ConfigEntry;
import com.nokia.s60tools.imaker.internal.impmodel.FileListEntry;
import com.nokia.s60tools.imaker.internal.impmodel.ImpDocument;
import com.nokia.s60tools.imaker.internal.impmodel.ImpmodelFactory;
import com.nokia.s60tools.imaker.internal.impmodel.OverrideConfiguration;
import com.nokia.s60tools.imaker.internal.impmodel.OverrideFiles;
import com.nokia.s60tools.imaker.internal.impmodel.Variable;
import com.nokia.s60tools.imaker.internal.impmodel.util.ImpResourceFactoryImpl;
/**
* <!-- begin-user-doc --> A test suite for the '<em><b>impmodel</b></em>'
* package. <!-- end-user-doc -->
*
* @generated
*/
public class ImpResourceSaveTests extends TestCase {
private File testFile;
private ImpmodelFactory factory;
private ImpDocument document;
@Override
protected void setUp() throws Exception {
factory = ImpmodelFactory.eINSTANCE;
document = factory.createImpDocument();
testFile = getTestFile();
}
@Override
protected void tearDown() throws Exception {
testFile.delete();
}
public void testSavingEmptyDocument() throws Exception {
saveModel(document);
EObject doc = loadContents();
assertNotNull(doc);
}
public void testSavingDocumentWithComments() throws Exception {
Comment comment = factory.createComment();
comment.setComment("This is a test comment");
document.getComments().add(comment);
saveModel(document);
ImpDocument doc = (ImpDocument) loadContents();
assertNotNull(doc);
assertTrue("Expected comment not found!",doc.getComments().size()==1);
Comment cm = doc.getComments().get(0);
assertEquals(comment.getComment(), cm.getComment());
}
public void testSavingDocumentWithVariables() throws Exception {
String name = "foo";
String value = "bar";
Variable var = factory.createVariable();
var.setName(name);
var.setValue(value);
document.getVariables().add(var);
saveModel(document);
ImpDocument doc = (ImpDocument) loadContents();
assertNotNull(doc);
assertTrue("Expected variable not found!",doc.getVariables().size()==1);
Variable vr = doc.getVariables().get(0);
assertEquals(name, vr.getName());
assertEquals(value, vr.getValue());
}
public void testSavingDocumentWithOrideFiles() throws Exception {
String source = "foo";
String target = "bar";
OverrideFiles orid = factory.createOverrideFiles();
FileListEntry entry = factory.createFileListEntry();
entry.setSource(source);
entry.setTarget(target);
orid.getEntries().add(entry);
document.getOrideFiles().add(orid);
saveModel(document);
ImpDocument doc = (ImpDocument) loadContents();
assertNotNull(doc);
assertTrue("Expected override files not found!",doc.getOrideFiles().size()==1);
OverrideFiles or = doc.getOrideFiles().get(0);
assertTrue(or.getEntries().size()==1);
entry = or.getEntries().get(0);
assertEquals(source, entry.getSource());
assertEquals(target, entry.getTarget());
}
public void testSavingDocumentWithOrideConfs() throws Exception {
String file = "foo";
String action = "udeb";
String location = "core";
OverrideConfiguration orid = factory.createOverrideConfiguration();
ConfigEntry entry = factory.createConfigEntry();
entry.setTarget(file);
entry.setAction(action);
entry.setLocation(location);
orid.getEntries().add(entry);
document.getOrideConfs().add(orid);
saveModel(document);
ImpDocument doc = (ImpDocument) loadContents();
assertNotNull(doc);
assertTrue("Expected override files not found!",doc.getOrideConfs().size()==1);
OverrideConfiguration or = doc.getOrideConfs().get(0);
assertTrue(or.getEntries().size()==1);
entry = or.getEntries().get(0);
assertEquals(file, entry.getTarget());
assertEquals(action, entry.getAction());
assertEquals(location, entry.getLocation());
}
public void testSavingDocumentWithLineNumbers() throws Exception {
Comment comment = factory.createComment();
comment.setComment("Example file");
comment.setLineNumber(0);
document.getComments().add(comment);
Variable var = factory.createVariable();
var.setName("foo");
var.setValue("bar");
var.setLineNumber(4);
document.getVariables().add(var);
ConfigEntry entry = factory.createConfigEntry();
entry.setTarget("foo");
entry.setAction("udeb");
entry.setLocation("core");
OverrideConfiguration orid = factory.createOverrideConfiguration();
orid.getEntries().add(entry);
orid.setLineNumber(9);
document.getOrideConfs().add(orid);
saveModel(document);
ImpDocument doc = (ImpDocument) loadContents();
assertEquals(1, doc.getComments().get(0).getLineNumber());
assertEquals(5, doc.getVariables().get(0).getLineNumber());
assertEquals(10, doc.getOrideConfs().get(0).getLineNumber()); }
private File getTestFile() throws IOException {
File file = File.createTempFile("test", ".imp");
return file;
}
private void saveModel(EObject model) throws IOException {
Resource res = getResource();
res.getContents().add(model);
res.save(null);
}
private EObject loadContents() throws IOException {
Resource resource = getResource();
resource.load(null);
EList<EObject> contents = resource.getContents();
assertFalse("resource is empty", contents.isEmpty());
return contents.get(0);
}
private Resource getResource() {
ResourceSetImpl rs = new ResourceSetImpl();
Map<String, Object> factoryMap = rs.getResourceFactoryRegistry()
.getExtensionToFactoryMap();
factoryMap.put("imp", new ImpResourceFactoryImpl());
URI uri = URI.createFileURI(testFile.getAbsolutePath());
Resource resource = rs.createResource(uri);
return resource;
}
} // ImpResourceLoadTests