uidesigner/com.nokia.sdt.symbian.tests/src/com/nokia/sdt/symbian/tests/WorkspaceFileTrackerTest.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/WorkspaceFileTrackerTest.java	Fri Apr 03 23:33:03 2009 +0100
@@ -0,0 +1,170 @@
+/*
+* 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 com.nokia.cpp.internal.api.utils.core.FileUtils;
+import com.nokia.cpp.internal.api.utils.core.ProjectUtils;
+import com.nokia.sdt.emf.dm.IDesignerData;
+import com.nokia.sdt.testsupport.FileHelpers;
+import com.nokia.sdt.testsupport.TestHelpers;
+import com.nokia.sdt.utils.*;
+
+import org.eclipse.core.resources.*;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+import java.io.*;
+import java.util.Arrays;
+
+import junit.framework.TestCase;
+
+/**
+ * 
+ *
+ */
+public class WorkspaceFileTrackerTest extends TestCase {
+
+    IDesignerData designerData;
+    ResourceSet resourceSet;
+    File outputFile;
+    private static IProject project;
+    private static File projectDir;
+    private WorkspaceFileTracker filehandler;
+    
+    static final String PROJECT_NAME = "srcgen-workspace-file-tests";
+    static final String BASE_DIR = "/data/srcgen/";
+    static final String FILE_NAME = "model.nxd";
+
+    /* (non-Javadoc)
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        TestHelpers.setPlugin(TestsPlugin.getDefault());
+        
+        if (project == null) {
+            project = ProjectUtils.createAndOpenProject(PROJECT_NAME);
+            projectDir = new File(project.getLocation().toOSString());
+            
+            FileUtils.copyTreeNoParent(
+                    FileHelpers.projectRelativeFile(BASE_DIR + "project"),
+                    projectDir, null
+                    );
+            project.getWorkspace().getRoot().refreshLocal(IResource.DEPTH_INFINITE, null);
+        }
+        
+        filehandler = new WorkspaceFileTracker();
+    }
+    
+    /* (non-Javadoc)
+     * @see junit.framework.TestCase#tearDown()
+     */
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        /*
+        try {
+            ProjectUtils.closeAndDeleteProject(PROJECT_NAME);
+        } catch (CoreException e) {
+            Thread.sleep(1000);
+            try {
+                ProjectUtils.closeAndDeleteProject(PROJECT_NAME);
+            } catch (CoreException e2) {
+                
+            }
+        }*/
+    }
+    
+    public void testLoad() throws Exception {
+        File mainFile = new File(projectDir, "main.cpp"); 
+        char[] text = filehandler.loadFileText(mainFile);
+        assertEquals("test file", new String(text));
+    }
+
+    public void testLoad2() throws Exception {
+        // test that this is using Eclipse by changing contents
+        // through Resource APIs
+        File mainFile = new File(projectDir, "main.cpp"); 
+        char[] text = filehandler.loadFileText(mainFile);
+        assertEquals("test file", new String(text));
+
+        // modify via resources
+        IFile file = project.getFile("main.cpp");
+        assertNotNull(file);
+        assertTrue(file.exists());
+        InputStream is = new ByteArrayInputStream("\nnew line".getBytes());
+        file.appendContents(is, false, false, null);
+        
+        // load again
+        char[] text2 = filehandler.loadFileText(mainFile);
+        assertEquals("test file\nnew line", new String(text2));
+    }
+
+    public void testSave() throws Exception {
+        File mainFile = new File(projectDir, "main.rss");
+        String text =  "generated file";
+        filehandler.saveFileText(mainFile, "UTF-8", text.toCharArray());
+
+        // access via resources
+        IFile file = project.getFile("main.rss");
+        assertNotNull(file);
+        assertTrue(file.exists());
+        InputStream is = file.getContents();
+        assertNotNull(is);
+        InputStreamReader isr = new InputStreamReader(is);
+        char[] cbuf = new char[32];
+        int len = isr.read(cbuf);
+        is.close();
+        assertEquals(text.length(), len);
+        assertEquals(text, new String(cbuf, 0, len));
+    }
+
+    public void testSaveEncoded() throws Exception {
+        File mainFile = new File(projectDir, "main2.rss");
+        String text =  "Hi\u00C7";
+        filehandler.saveFileText(mainFile, "UTF-8", text.toCharArray());
+
+        // access via resources
+        IFile file = project.getFile("main2.rss");
+        assertNotNull(file);
+        assertTrue(file.exists());
+        InputStream is = file.getContents();
+        assertNotNull(is);
+        byte[] bbuf = new byte[4];
+        int len = is.read(bbuf, 0, 4);
+        assertEquals(4, len);
+        assertEquals(-1, is.read(bbuf));
+        is.close();
+        assertTrue(Arrays.equals(new byte[] { 'H', 'i', (byte) 0xc3, (byte) 0x87 }, bbuf));
+        
+        // rewrite
+        filehandler.saveFileText(mainFile, "CP1252", text.toCharArray());
+        
+        file = project.getFile("main2.rss");
+        assertNotNull(file);
+        assertTrue(file.exists());
+        is = file.getContents();
+        assertNotNull(is);
+        bbuf = new byte[3];
+        len = is.read(bbuf, 0, 3);
+        assertEquals(3, len);
+        assertEquals(-1, is.read(bbuf));
+        is.close();
+        assertTrue(Arrays.equals(new byte[] { 'H', 'i', (byte) 0xc7 }, bbuf));
+    }
+
+}