uidesigner/com.nokia.sdt.symbian.tests/src/com/nokia/sdt/symbian/tests/MultiImageInfoTests.java
changeset 0 fb279309251b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uidesigner/com.nokia.sdt.symbian.tests/src/com/nokia/sdt/symbian/tests/MultiImageInfoTests.java	Fri Apr 03 23:33:03 2009 +0100
@@ -0,0 +1,276 @@
+/*
+* Copyright (c) 2005 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 org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+
+import com.nokia.carbide.cdt.builder.DefaultImageMakefileViewConfiguration;
+import com.nokia.carbide.cdt.builder.DefaultMMPViewConfiguration;
+import com.nokia.carbide.cpp.epoc.engine.EpocEnginePlugin;
+import com.nokia.carbide.cpp.epoc.engine.image.IMultiImageSource;
+import com.nokia.carbide.cpp.epoc.engine.model.makefile.image.IImageMakefileModel;
+import com.nokia.carbide.cpp.epoc.engine.model.makefile.image.IImageMakefileView;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPModel;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPView;
+import com.nokia.carbide.cpp.epoc.engine.preprocessor.AllNodesViewFilter;
+import com.nokia.cpp.internal.api.utils.core.ProjectUtils;
+import com.nokia.sdt.symbian.images.*;
+
+/**
+ * Test the MultiImageInfo and ImageInfo classes 
+ * in com.nokia.sdt.symbian.images.
+ * 
+ * 
+ * 
+ *
+ */
+public class MultiImageInfoTests extends BaseImageTests {
+    protected static MultiImageInfo mbmInfo;
+    protected static MultiImageInfo mifInfo;
+
+    /*
+     * @see TestCase#setUp()
+     */
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        IMMPModel mmpModel = EpocEnginePlugin.getMMPModelProvider().getSharedModel(new Path(PROJECT_NAME + "/group/foo.mmp"));
+        IMMPView mmpView = mmpModel.createView(new DefaultMMPViewConfiguration(project,
+        		null,
+        		new AllNodesViewFilter()));
+        		
+        IMultiImageSource multiImageSource = mmpView.getMultiImageSources().get(0);
+        mbmInfo = new MultiImageInfo(ProjectUtils.getRealProjectLocation(project), 
+                new Path("group/foo.mmp"),
+                multiImageSource);
+        mmpView.dispose();
+        EpocEnginePlugin.getMMPModelProvider().releaseSharedModel(mmpModel);
+        
+        IImageMakefileModel mkModel = EpocEnginePlugin.getImageMakefileModelProvider().getSharedModel(
+        		new Path(PROJECT_NAME + "/random/Icon_svgs.mk"));
+        IImageMakefileView mkView = mkModel.createView(
+        		new DefaultImageMakefileViewConfiguration(project, null, 
+        				new AllNodesViewFilter()));
+        
+        multiImageSource = mkView.getMultiImageSources().get(0);
+        
+        mifInfo = new MultiImageInfo(ProjectUtils.getRealProjectLocation(project),  
+                new Path("random/Icon_svgs.mk"),
+                multiImageSource);
+
+        mkView.dispose();
+        EpocEnginePlugin.getImageMakefileModelProvider().releaseSharedModel(mkModel);
+    }
+    
+    public void testMbmFile() throws Exception {
+        assertEquals(MultiImageInfo.MBM_FILE, mbmInfo.getFileType());
+        assertEquals("foo.mmp", mbmInfo.getSourceFilename());
+        assertEquals("Foo", mbmInfo.getBase());
+        assertEquals("mbm", mbmInfo.getBinaryExtension());
+
+        String binfile = mbmInfo.getBinaryFilename();
+        assertEquals("Foo.mbm", binfile);
+
+        // NOTE: the .cdtbuild file in the project is hardcoded to return
+        // this value -- if the real logic changes, change this test and the .cdtbuild file
+        IPath path = mbmInfo.getBinaryFile();
+        assertEquals(new Path("/system/apps/" + PROJECT_NAME + "/Foo.mbm"), path);
+    }
+
+    public void testMbmData() throws Exception {
+        ImageInfo info = mbmInfo.findImageByFile("group/qgn_note_ok.bmp");
+        assertNotNull(info);
+        assertEquals(8, info.getBitDepth());
+        assertTrue(info.isColor());
+        
+        info = mbmInfo.findImageByFile("group/qgn_note_ok_mask_soft.bmp");
+        assertNotNull(info);
+        assertEquals(8, info.getBitDepth());
+        assertTrue(info.isColor());
+
+        info = mbmInfo.findImageByFile("group/image.bmp");
+        assertNotNull(info);
+        assertEquals(12, info.getBitDepth());
+        assertFalse(info.isColor());
+        
+        info = mbmInfo.findImageByFile("group/missing.bmp");
+        assertNotNull(info);
+        assertEquals(1, info.getBitDepth());
+        assertFalse(info.isColor());
+}
+    
+    public void testMbmList() throws Exception {
+        String[] imgs = mbmInfo.getImageFileList();
+        // counting each bmp
+        assertEquals(5, imgs.length);
+
+        // may change...
+        assertEquals("group/qgn_note_ok.bmp", imgs[0]);
+        
+        // look up
+        ImageInfo info = mbmInfo.findImageByFile("group/qgn_note_ok.bmp");
+        assertNotNull(info);
+
+        // check enumeration
+        String enm = info.getImageEnumeration();
+        assertEquals("EMbmFooQgn_note_ok", enm);
+        
+        ImageInfo info2 = mbmInfo.findImageByEnumerator(enm);
+        assertEquals(info, info2);
+
+        /// this one has no paired item
+        
+        info = mbmInfo.findImageByFile("group/note.bmp");
+        assertNotNull(info);
+
+        enm = info.getImageEnumeration();
+        assertEquals("EMbmFooNote", enm);
+        
+        info2 = mbmInfo.findImageByEnumerator(enm);
+        assertEquals(info, info2);
+
+    }
+
+    public void testMbmEnums() throws Exception {
+        String[] enms = mbmInfo.getImageEnumeratorList();
+        // counting each enum
+        assertEquals(5, enms.length);
+        assertEquals("EMbmFooQgn_note_ok", enms[0]);
+
+        // check mapping
+        for (int i = 0; i < enms.length; i++) {
+            ImageInfo info = mbmInfo.findImageByEnumerator(enms[i]);
+            assertNotNull(info);
+            ImageInfo info2 = mbmInfo.findImageByFile(info.getFilePath());
+            assertEquals(info, info2);
+        }
+    }
+
+    
+    public void testMbmPairs() throws Exception {
+        // check that items paired in the MBM are available
+        ImageInfo info = mbmInfo.findImageByEnumerator("EMbmFooQgn_note_ok");
+        assertNotNull(info);
+        
+        ImageInfo mask = mbmInfo.getMaskForImage(info);
+        assertNotNull(mask);
+        
+        // mbm names the mask after the file correctly
+        ImageInfo mask2 = mbmInfo.findImageByEnumerator("EMbmFooQgn_note_ok_mask");
+        assertNull(mask2);
+
+        mask2 = mbmInfo.findImageByEnumerator("EMbmFooQgn_note_ok_mask_soft");
+        assertNotNull(mask2);
+
+        assertEquals(mask, mask2);
+        
+        /// this one has no paired item
+        
+        info = mbmInfo.findImageByEnumerator("EMbmFooNote");
+        assertNotNull(info);
+        
+        mask = mbmInfo.getMaskForImage(info);
+        assertNull(mask);
+        
+        //// this has a paired item, but its file is missign
+
+        info = mbmInfo.findImageByEnumerator("EMbmFooImage");
+        assertNotNull(info);
+        
+        // although the file is missing, this should work...
+        mask = mbmInfo.getMaskForImage(info);
+        assertNotNull(mask);
+    }
+
+    
+    
+    public void testMifs() throws Exception {
+        assertEquals("Icon_svgs.mk", mifInfo.getSourceFilename());
+        assertEquals(MultiImageInfo.MIF_FILE, mifInfo.getFileType());
+
+        assertEquals("Svgs", mifInfo.getBase());
+        assertEquals("mif", mifInfo.getBinaryExtension());
+
+        String binfile = mifInfo.getBinaryFilename();
+        assertEquals("Svgs.mif", binfile);
+
+        IPath path = mifInfo.getBinaryFile();
+        assertEquals(new Path("/system/resources/Svgs.mif"), path);
+        
+        // leaving out implied SVG masks but not bmps
+        String[] imgs = mifInfo.getImageFileList();
+        assertEquals(4, imgs.length);
+        
+    }
+
+    public void testMifEnums() throws Exception {
+        String[] enms = mifInfo.getImageEnumeratorList();
+        // one for image and generated masks
+        assertEquals(5, enms.length);
+        assertEquals("EMbmSvgsAppicon", enms[0]);
+
+        for (int i = 0; i < enms.length; i++) {
+            ImageInfo info = mifInfo.findImageByEnumerator(enms[i]);
+            assertNotNull(info);
+            ImageInfo info2 = mifInfo.findImageByFile(info.getFilePath());
+            assertEquals(info, info2);
+        }
+        
+        
+    }
+
+    public void testMifPairs() throws Exception {
+        // Only non-SVG files have pairs in this format.
+        // Although SVG files have implicit masks, they do not
+        // come from this class.
+        
+        ImageInfo info = mifInfo.findImageByEnumerator("EMbmSvgsQgn_note_ok");
+        assertNotNull(info);
+        
+        ImageInfo mask = mifInfo.getMaskForImage(info);
+        assertNotNull(mask);
+        
+        // the "soft" enum is never emitted; only "mask"
+        ImageInfo mask2 = mifInfo.findImageByEnumerator("EMbmSvgsQgn_note_ok_mask_soft");
+        assertNull(mask2);
+        
+        mask2 = mifInfo.findImageByEnumerator("EMbmSvgsQgn_note_ok_mask");
+        assertNotNull(mask2);
+        assertEquals(mask, mask2);
+        
+        /// this one has a paired item too
+        
+        info = mifInfo.findImageByEnumerator("EMbmSvgsAppicon");
+        assertNotNull(info);
+        
+        mask = mifInfo.getMaskForImage(info);
+        assertNotNull(mask);
+        
+        /// this one has no paired item
+        
+        info = mifInfo.findImageByEnumerator("EMbmSvgsImg");
+        assertNotNull(info);
+        
+        mask = mifInfo.getMaskForImage(info);
+        assertNull(mask);
+        
+    }
+    
+
+}