/*******************************************************************************
* Copyright (c) 2015 Red Hat.
* 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:
* Red Hat - Initial Contribution
*******************************************************************************/
package org.eclipse.linuxtools.internal.docker.ui.launch;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.assertj.core.data.MapEntry;
import org.eclipse.core.runtime.Platform;
import org.eclipse.linuxtools.docker.core.IDockerPortBinding;
import org.eclipse.linuxtools.internal.docker.core.DockerPortBinding;
import org.junit.Test;
/**
*
*/
public class LaunchConfigurationUtilsTest {
@Test
public void shouldConvertToUnixPathWhenRunningOnWin32() {
// given
final String path = "C:\\path\\to\\data";
// when
final String convertedToUnix = LaunchConfigurationUtils.convertToUnixPath(Platform.OS_WIN32, path);
// then
assertThat(convertedToUnix).isEqualTo("/c/path/to/data");
}
@Test
public void shouldNotConvertToUnixPathWhenNotRunningOnWin32() {
// given
final String path = "/foo/bar";
// when
final String convertedToUnix = LaunchConfigurationUtils.convertToUnixPath(Platform.OS_MACOSX, path);
// then
assertThat(convertedToUnix).isEqualTo(path);
}
@Test
public void shouldConvertToWin32PathWhenRunningOnWin32() {
// given
final String path = "/c/path/to/data";
// when
final String convertedToUnix = LaunchConfigurationUtils.convertToWin32Path(Platform.OS_WIN32, path);
// then
assertThat(convertedToUnix).isEqualTo("C:\\path\\to\\data");
}
@Test
public void shouldNotConvertToWin32PathWhenNotRunningOnWin32() {
// given
final String path = "/foo/bar";
// when
final String convertedToUnix = LaunchConfigurationUtils.convertToUnixPath(Platform.OS_MACOSX, path);
// then
assertThat(convertedToUnix).isEqualTo(path);
}
@Test
public void shouldSerializeEmptyPortBindingsFromMap() {
// given
final Map<String, List<IDockerPortBinding>> bindings = new HashMap<>();
// when
final List<String> result = LaunchConfigurationUtils.serializePortBindings(bindings);
// then
assertThat(result).isEmpty();
}
@Test
public void shouldSerializePortBindingsFromMap() {
// given
final Map<String, List<IDockerPortBinding>> bindings = new HashMap<>();
bindings.put("8080/tcp",
Arrays.asList(new DockerPortBinding("1.2.3.4", "8080"), new DockerPortBinding(null, "8080")));
bindings.put("9090/tcp",
Arrays.asList(new DockerPortBinding("1.2.3.4", "9090"), new DockerPortBinding(null, "9090")));
// when
final List<String> result = LaunchConfigurationUtils.serializePortBindings(bindings);
// then
assertThat(result).containsExactly("8080/tcp:1.2.3.4:8080", "8080/tcp::8080", "9090/tcp:1.2.3.4:9090",
"9090/tcp::9090");
}
@Test
public void shouldNotSerializeNullPortBindingsFromMap() {
// when
final List<String> result = LaunchConfigurationUtils
.serializePortBindings((Map<String, List<IDockerPortBinding>>) null);
// then
assertThat(result).isEmpty();
}
@Test
public void shouldSerializeEmptyPortBindingsFromSet() {
// given
final Set<String> bindings = new HashSet<>();
// when
final List<String> result = LaunchConfigurationUtils.serializePortBindings(bindings);
// then
assertThat(result).isEmpty();
}
@Test
public void shouldSerializePortBindingsFromset() {
// given
final Set<String> bindings = new HashSet<>();
bindings.add("8080/tcp");
bindings.add("9090/tcp");
// when
final List<String> result = LaunchConfigurationUtils.serializePortBindings(bindings);
// then
assertThat(result).containsExactly("8080/tcp::8080", "9090/tcp::9090");
}
@Test
public void shouldNotSerializeNullPortBindingsFromSet() {
// when
final List<String> result = LaunchConfigurationUtils.serializePortBindings((Set<String>) null);
// then
assertThat(result).isEmpty();
}
@Test
public void shouldDeserializeBindings() {
// given
final List<String> publishedPorts = Arrays.asList("8080/tcp:1.2.3.4:8080", "8080/tcp::8080",
"9090/tcp:1.2.3.4:9090", "9090/tcp::9090");
// when
final Map<String, List<IDockerPortBinding>> result = LaunchConfigurationUtils
.deserializePortBindings(publishedPorts);
// then
assertThat(result).containsOnly(
MapEntry.entry("8080/tcp",
Arrays.asList(new DockerPortBinding("1.2.3.4", "8080"), new DockerPortBinding(null, "8080"))),
MapEntry.entry("9090/tcp",
Arrays.asList(new DockerPortBinding("1.2.3.4", "9090"), new DockerPortBinding(null, "9090"))));
}
}