uidesigner/com.nokia.sdt.symbian.tests/src/com/nokia/sdt/symbian/tests/TestImageIncludes.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uidesigner/com.nokia.sdt.symbian.tests/src/com/nokia/sdt/symbian/tests/TestImageIncludes.java Fri Apr 03 23:33:03 2009 +0100
@@ -0,0 +1,147 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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.sdt.symbian.tests;
+
+import com.nokia.cpp.internal.api.utils.core.IMessage;
+import com.nokia.cpp.internal.api.utils.core.IMessageListener;
+import com.nokia.cpp.internal.api.utils.core.Logging;
+import com.nokia.cpp.internal.api.utils.core.Message;
+import com.nokia.cpp.internal.api.utils.core.MessageLocation;
+import com.nokia.sdt.datamodel.IDesignerDataModel;
+import com.nokia.sdt.datamodel.util.ModelUtils;
+import com.nokia.sdt.sourcegen.core.ISourceFile;
+import com.nokia.sdt.sourcegen.doms.rss.*;
+import com.nokia.sdt.sourcegen.doms.rss.dom.IAstRssSourceFile;
+import com.nokia.sdt.sourcegen.doms.rss.dom.impl.IncludePathHandler;
+import com.nokia.sdt.sourcegen.doms.rss.dom.impl.TranslationUnit;
+import com.nokia.sdt.sourcegen.doms.rss.dom.preprocessor.IAstPreprocessorIncludeDirective;
+import com.nokia.sdt.sourcegen.provider.SourceGenProvider;
+import com.nokia.sdt.sourcegen.tests.TestSourceFormatting;
+import com.nokia.sdt.symbian.SymbianSourceFormatter;
+import com.nokia.sdt.symbian.dm.DesignerDataModel;
+import com.nokia.sdt.testsupport.FileHelpers;
+import com.nokia.sdt.testsupport.TestDataModelHelpers;
+import com.nokia.sdt.utils.*;
+
+import org.eclipse.core.runtime.*;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+
+/**
+ * Test that the appropriate #includes for image properties are
+ * added. This is done through a nastily-placed check for
+ * writing "bmpfile" properties to resource in the bowels
+ * of InstanceSourceMapper. We check it in this plugin because
+ * we don't depend on projects in com.nokia.sdt.component.symbian.test.
+ *
+ *
+ */
+public class TestImageIncludes extends BaseImageTests {
+
+ private SourceGenProvider sgProvider;
+ private IDesignerDataModel dataModel;
+ private IRssModelGenerator generator;
+ private IAstRssSourceFile rss;
+ private ISourceFile sf;
+ private File file;
+ protected IMessageListener msgHandler;
+ private ILogListener logHandler;
+ private ArrayList messages;
+ private IncludePathHandler includeHandler;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ messages = new ArrayList();
+ msgHandler = new IMessageListener() {
+
+ public boolean isHandlingMessage(IMessage msg) {
+ return true;
+ }
+ public void emitMessage(IMessage msg) {
+ messages.add(msg);
+ }
+ };
+ MessageReporting.addListener(msgHandler);
+
+ logHandler = new ILogListener() {
+
+ public void logging(IStatus status, String plugin) {
+ messages.add(new Message(IStatus.ERROR,
+ new MessageLocation(new Path(".")),
+ "ErrorLogMessage",
+ status.getMessage()));
+ }
+ };
+ Logging.addListener(logHandler);
+
+ includeHandler = new IncludePathHandler();
+ includeHandler.addSystemIncludePath(FileHelpers.projectRelativeFile(BASE_DIR + "SDK").getAbsolutePath());
+ includeHandler.addUserIncludePath(new File(".").getAbsolutePath());
+ includeHandler.addUserIncludePath(FileHelpers.projectRelativeFile(BASE_DIR + "user").getAbsolutePath());
+
+ sgProvider = new SourceGenProvider();
+ sgProvider.setSourceFormatter(new SymbianSourceFormatter(TestSourceFormatting.INSTANCE));
+ sgProvider.setIncludeFileLocator(includeHandler);
+
+ dataModel = TestDataModelHelpers.loadDataModelWithTestComponents(project,
+ BASE_DIR + FILE_NAME, provider, sgProvider);
+
+ generator = (IRssModelGenerator) ((DesignerDataModel)dataModel).getSourceGenSession().getAdapter(IRssModelGenerator.class);
+ generator.getModelManipulator().getResourceHandler().setGeneratingProjectUniqueResources(false);
+
+ rss = generator.getRssFile(null, true);
+ assertNotNull(rss);
+ new TranslationUnit(rss);
+ sf = rss.getSourceFile();
+ assertNotNull(sf);
+ file = sf.getFile();
+ assertNotNull(file);
+
+ }
+
+ /**
+ * Assert that no messages were emitted
+ */
+ protected void checkNoMessages() {
+
+ StringBuffer buf = new StringBuffer();
+ for (Iterator iter = messages.iterator(); iter.hasNext();) {
+ IMessage message = (IMessage) iter.next();
+
+ buf.append("unexpected message: " + message + "\n");
+ }
+ if (buf.length() > 0)
+ fail(buf.toString());
+ }
+
+ public void testImageInclude() throws Exception {
+ generator.setRssFileForTesting(rss);
+ generator.generateResources(ModelUtils.getComponentInstance(
+ dataModel.findByNameProperty("test_image")));
+ checkNoMessages();
+
+ IAstPreprocessorIncludeDirective[] incls = rss.getIncludeFiles();
+ assertEquals(2, incls.length);
+ assertEquals("images.rh", incls[0].getFilename());
+ assertEquals("Test.mbg", incls[1].getFilename());
+ }
+}