package org.eclipse.epf.common.tests; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.Map; import java.util.Set; import junit.framework.TestCase; import org.eclipse.epf.common.service.versioning.EPFVersions; import org.eclipse.epf.common.service.versioning.VersionUtil; import org.eclipse.epf.common.utils.FileUtil; public class VersionUtilTest extends TestCase { public VersionUtilTest(String name) { super(name); } public void testGetAllToolIDs() { Set toolIDs = VersionUtil.getAllToolIDs(); for (Iterator iter = toolIDs.iterator();iter.hasNext();) { String toolID = (String)iter.next(); assertTrue(toolID.equals("epf") || toolID.equals("rmc")); } } public void testGetVersions() { EPFVersions versions = VersionUtil.getVersions(EPFVersions.TOOL_ID); assertNotNull(versions); } public void testIsVersionCheckingDisabled() { assertFalse(VersionUtil.isVersionCheckingDisabled()); } public void testReadVersionsFromFile() { // test no-versions-in-file case File xmiFile = createTestXMIFile(""); if (xmiFile == null) { fail(); } Map versions = VersionUtil.readVersionsFromFile(xmiFile); assertNull(versions); xmiFile.delete(); // test epf-only case xmiFile = createTestXMIFile("epf:version=\"1.0.0\""); if (xmiFile == null) { fail(); } versions = VersionUtil.readVersionsFromFile(xmiFile); String epfVer = (String)versions.get("epf"); assertTrue(epfVer.equals("1.0.0")); xmiFile.delete(); // test multiple versions case xmiFile = createTestXMIFile("epf:version=\"1.0.0\" rmc:version=\"7.1.0\""); if (xmiFile == null) { fail(); } versions = VersionUtil.readVersionsFromFile(xmiFile); epfVer = (String)versions.get("epf"); String rmcVer = (String)versions.get("rmc"); assertTrue(epfVer.equals("1.0.0")); assertTrue(rmcVer.equals("7.1.0")); xmiFile.delete(); //========================================== // test XML file //========================================== // test no-versions-in-file case File xmlFile = createTestXMLFile(""); if (xmlFile == null) { fail(); } versions = VersionUtil.readVersionsFromFile(xmlFile); assertNull(versions); xmlFile.delete(); // test epf-only case xmlFile = createTestXMLFile("tool=\"epf=1.0.0\""); if (xmlFile == null) { fail(); } versions = VersionUtil.readVersionsFromFile(xmlFile); epfVer = (String)versions.get("epf"); assertTrue(epfVer.equals("1.0.0")); xmlFile.delete(); // test multiple versions case xmlFile = createTestXMLFile("tool=\"epf=1.0.0;rmc=7.1.0\""); if (xmlFile == null) { fail(); } versions = VersionUtil.readVersionsFromFile(xmlFile); epfVer = (String)versions.get("epf"); rmcVer = (String)versions.get("rmc"); assertTrue(epfVer.equals("1.0.0")); assertTrue(rmcVer.equals("7.1.0")); xmlFile.delete(); } private File createTestXMIFile(String versionAttributes) { try { File xmiFile = File.createTempFile("EPF_JUNIT_", ".xmi"); String xmiText = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "\n<xmi:XMI xmi:version=\"2.0\" xmlns:xmi=\"http://www.omg.org/XMI\"" + " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + " xmlns:org.eclipse.epf.uma=\"http://www.eclipse.org/epf/uma/1.0.3/uma.ecore\"" + " xmlns:org.eclipse.epf.uma.resourcemanager=\"http:///org/eclipse/epf/uma/resourcemanager.ecore\" " + versionAttributes + ">\n...\n</xmi:XMI>\n"; FileUtil.writeUTF8File(xmiFile.getAbsolutePath(), xmiText); return xmiFile; } catch (IOException ex) { return null; } } private File createTestXMLFile(String versionAttributes) { try { File xmlFile = File.createTempFile("EPF_JUNIT_", ".xml"); String xmlText = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "\n<uma:MethodLibrary xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + "xmlns:uma=\"http://www.eclipse.org/epf/uma/1.0.3\" " + versionAttributes + " name=\"a\" briefDescription=\"\" id=\"_HVnG8DL5Edu42N0XS7onUg\"" + "orderingGuide=\"\" suppressed=\"false\" authors=\"\" changeDescription=\"\" version=\"\">" + "\n...\n</uma:MethodLibrary>"; FileUtil.writeUTF8File(xmlFile.getAbsolutePath(), xmlText); return xmlFile; } catch (IOException ex) { return null; } } }