/*
* Copyright 2017 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.rf.ide.core.executor;
import static org.assertj.core.api.Assertions.assertThat;
import java.io.File;
import java.io.IOException;
import org.junit.Test;
import com.google.common.base.Charsets;
import com.google.common.io.Files;
public class ArgumentsFileTest {
@Test
public void emptyContentIsGenerated_whenNoLineWasAdded() {
final ArgumentsFile file = new ArgumentsFile();
assertThat(file.generateContent()).isEmpty();
}
@Test
public void singleLineContentIsGenerated_whenSingleLineWasAdded() {
final ArgumentsFile file = new ArgumentsFile();
file.addLine("arg", "val");
assertThat(file.generateContent()).isEqualTo("arg val");
}
@Test
public void mulitlineContentIsGeneratedWithColumns_whenMultipleLinesWereAdded() {
final ArgumentsFile file = new ArgumentsFile();
file.addLine("a", "1");
file.addLine("ab", "2");
file.addLine("abc", "3");
file.addLine("d", "4");
file.addLine("e");
assertThat(file.generateContent()).isEqualTo("a 1\nab 2\nabc 3\nd 4\ne");
}
@Test
public void singleLineCommentIsGenereted() {
final ArgumentsFile file = new ArgumentsFile();
file.addCommentLine("comment");
assertThat(file.generateContent()).isEqualTo("# comment");
}
@Test
public void multilineContentWithCommentsIsGenereted() {
final ArgumentsFile file = new ArgumentsFile();
file.addLine("a", "1");
file.addCommentLine("comment");
file.addLine("ab", "2");
file.addLine("abc", "3");
file.addCommentLine("#c");
file.addLine("d", "4");
assertThat(file.generateContent()).isEqualTo("a 1\n# comment\nab 2\nabc 3\n#c\nd 4");
}
@Test
public void argumentFileIsGeneratedProperly() throws IOException {
final ArgumentsFile file = new ArgumentsFile();
file.addLine("a", "1");
file.addLine("ab", "2");
file.addLine("abc", "3");
final File path = file.writeToTemporaryOrUseAlreadyExisting();
assertThat(Files.toString(path, Charsets.UTF_8)).isEqualTo("a 1\nab 2\nabc 3");
}
@Test
public void fileIsReused_ifItWasGeneratedPreviouslyAndContainsSameArguments() throws IOException {
final ArgumentsFile file1 = new ArgumentsFile();
file1.addLine("a", "1");
file1.addLine("ab", "2");
file1.addLine("abc", "3");
final File path1 = file1.writeToTemporaryOrUseAlreadyExisting();
final long firstModification = path1.lastModified();
final ArgumentsFile file2 = new ArgumentsFile();
file2.addLine("a", "1");
file2.addLine("ab", "2");
file2.addLine("abc", "3");
final File path2 = file1.writeToTemporaryOrUseAlreadyExisting();
final long lastModification = path2.lastModified();
assertThat(Files.toString(path2, Charsets.UTF_8)).isEqualTo("a 1\nab 2\nabc 3");
assertThat(firstModification).isEqualTo(lastModification);
}
}