/*******************************************************************************
* Copyright (c) 2010, 2016 Ericsson and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Marc-Andre Laperle - Added test for the gdb version string converter
* Alvaro Sanchez-Leon (Ericsson) - Bug 437562 - Split the dsf-gdb tests to a plug-in and fragment pair
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.tests;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.cdt.dsf.gdb.launching.LaunchUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class LaunchUtilsTest {
private class Versions {
private String version1;
private String version2;
private int expectedResult;
public Versions(String v1, String v2, int result) {
version1 = v1;
version2 = v2;
expectedResult = result;
}
}
@Before
public void init() {
}
@After
public void shutdown() {
}
@Test
public void testGDBVersionFromText() {
Map<String, String> versions = new HashMap<>(10);
versions.put("GNU gdb 6.8.50.20080730", "6.8.50.20080730");
versions.put("GNU gdb (GDB) 6.8.50.20080730-cvs", "6.8.50.20080730");
versions.put("GNU gdb (Ericsson GDB 1.0-10) 6.8.50.20080730-cvs", "6.8.50.20080730");
versions.put("GNU gdb (GDB) Fedora (7.0-3.fc12)", "7.0");
versions.put("GNU gdb 6.8.0.20080328-cvs (cygwin-special)", "6.8"); // Special for cygwin
versions.put("GNU gdb 7.0", "7.0");
versions.put("GNU gdb Fedora (6.8-27.el5)", "6.8");
versions.put("GNU gdb Red Hat Linux (6.3.0.0-1.162.el4rh)", "6.3.0.0");
versions.put("GNU gdb (GDB) STMicroelectronics/Linux Base 7.4-71 [build Mar 1 2013]", "7.4");
for (String key : versions.keySet()) {
assertEquals("From \"" + key + "\"", versions.get(key), LaunchUtils.getGDBVersionFromText(key));
}
}
/**
* Verify that GDB version comparison is done properly.
*/
@Test
public void testGDBVersionComparison() {
List<Versions> versions = new ArrayList<>(100);
versions.add(new Versions("7", "6", 1));
versions.add(new Versions("7", "6.1", 1));
versions.add(new Versions("7", "6.1.1", 1));
versions.add(new Versions("7", "7", 0));
versions.add(new Versions("7", "7.0", 0));
versions.add(new Versions("7", "7.0.0", 0));
versions.add(new Versions("7", "7.1", -1));
versions.add(new Versions("7", "7.1.1", -1));
versions.add(new Versions("7", "8", -1));
versions.add(new Versions("7", "8.0", -1));
versions.add(new Versions("7", "8.1", -1));
versions.add(new Versions("7", "8.1.1", -1));
versions.add(new Versions("7", "10", -1));
versions.add(new Versions("7", "10.0", -1));
versions.add(new Versions("7", "10.1", -1));
versions.add(new Versions("7", "10.1.1", -1));
versions.add(new Versions("7", "70", -1));
versions.add(new Versions("7", "70.1", -1));
versions.add(new Versions("7", "70.1.1", -1));
versions.add(new Versions("7", "72", -1));
versions.add(new Versions("7", "72.1", -1));
versions.add(new Versions("7", "72.1.1", -1));
versions.add(new Versions("7.3", "6", 1));
versions.add(new Versions("7.3", "6.4", 1));
versions.add(new Versions("7.3", "6.4.4", 1));
versions.add(new Versions("7.3", "7", 1));
versions.add(new Versions("7.3", "7.0", 1));
versions.add(new Versions("7.3", "7.3", 0));
versions.add(new Versions("7.3", "7.3.0", 0));
versions.add(new Versions("7.0", "7.0", 0));
versions.add(new Versions("7.3", "7.3.3", -1));
versions.add(new Versions("7.3", "7.30", -1));
versions.add(new Versions("7.3", "7.30.3", -1));
versions.add(new Versions("7.3", "8", -1));
versions.add(new Versions("7.3", "8.0", -1));
versions.add(new Versions("7.3", "8.1", -1));
versions.add(new Versions("7.3", "8.1.1", -1));
versions.add(new Versions("7.3", "8.4", -1));
versions.add(new Versions("7.3", "8.4.4", -1));
versions.add(new Versions("7.3", "10", -1));
versions.add(new Versions("7.3", "10.0", -1));
versions.add(new Versions("7.3", "10.1", -1));
versions.add(new Versions("7.3", "10.1.1", -1));
versions.add(new Versions("7.3", "10.4", -1));
versions.add(new Versions("7.3", "10.4.4", -1));
versions.add(new Versions("7.3", "70", -1));
versions.add(new Versions("7.3", "70.1", -1));
versions.add(new Versions("7.3", "70.1.1", -1));
versions.add(new Versions("7.3", "72", -1));
versions.add(new Versions("7.3", "72.1", -1));
versions.add(new Versions("7.3", "72.1.1", -1));
versions.add(new Versions("7.5.4", "6", 1));
versions.add(new Versions("7.5.4", "6.4", 1));
versions.add(new Versions("7.5.4", "6.4.4", 1));
versions.add(new Versions("7.5.4", "6.5", 1));
versions.add(new Versions("7.5.4", "6.5.4", 1));
versions.add(new Versions("7.5.4", "7", 1));
versions.add(new Versions("7.5.4", "7.0", 1));
versions.add(new Versions("7.5.4", "7.3", 1));
versions.add(new Versions("7.5.4", "7.3.0", 1));
versions.add(new Versions("7.5.4", "7.5", 1));
versions.add(new Versions("7.5.4", "7.5.3", 1));
versions.add(new Versions("7.5.4", "7.5.4", 0));
versions.add(new Versions("7.0.0", "7.0.0", 0));
versions.add(new Versions("7.5.4", "7.7", -1));
versions.add(new Versions("7.5.4", "7.7.6", -1));
versions.add(new Versions("7.5.4", "7.50", -1));
versions.add(new Versions("7.5.4", "7.50.3", -1));
versions.add(new Versions("7.5.4", "7.50.4", -1));
versions.add(new Versions("7.5.4", "8", -1));
versions.add(new Versions("7.5.4", "8.0", -1));
versions.add(new Versions("7.5.4", "8.1", -1));
versions.add(new Versions("7.5.4", "8.1.1", -1));
versions.add(new Versions("7.5.4", "8.5", -1));
versions.add(new Versions("7.5.4", "8.5.4", -1));
versions.add(new Versions("7.5.4", "10", -1));
versions.add(new Versions("7.5.4", "10.0", -1));
versions.add(new Versions("7.5.4", "10.1", -1));
versions.add(new Versions("7.5.4", "10.1.1", -1));
versions.add(new Versions("7.5.4", "10.5", -1));
versions.add(new Versions("7.5.4", "10.5.4", -1));
versions.add(new Versions("7.5.4", "10.7.4", -1));
versions.add(new Versions("7.5.4", "7.10", -1));
versions.add(new Versions("7.5.4", "7.10.1", -1));
versions.add(new Versions("7.5.4", "7.10.5", -1));
versions.add(new Versions("7.5.4", "72", -1));
versions.add(new Versions("7.5.4", "72.1", -1));
versions.add(new Versions("7.5.4", "72.1.1", -1));
versions.add(new Versions("6.8.51", "6.8.50.20080730", 1));
versions.add(new Versions("6.9.4", "6.8.50.20080730", 1));
versions.add(new Versions("6.8.50.20080730", "6.8.50.20080730", 0));
versions.add(new Versions("6.5.4", "6.8.50.20080730", -1));
versions.add(new Versions("6.8.50", "6.8.50.20080730", -1));
for (Versions v : versions) {
assertEquals("Comparing " + v.version1 + " and " + v.version2,
v.expectedResult,
LaunchUtils.compareVersions(v.version1, v.version2));
assertEquals("Comparing " + v.version2 + " and " + v.version1,
-v.expectedResult,
LaunchUtils.compareVersions(v.version2, v.version1));
}
}
}