Alternative methods for progress reporting
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
* Copyright 2010-2012 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.jet.cli.common.messages;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class OutputMessageUtilTest extends TestCase {
|
||||
enum TargetOS {
|
||||
UNIX {
|
||||
@Override
|
||||
public String convert(String path) {
|
||||
return path.replace('\\', '/');
|
||||
}
|
||||
},
|
||||
WINDOWS {
|
||||
@Override
|
||||
public String convert(String path) {
|
||||
// convert absolute paths to declare their disk as C:
|
||||
if (path.startsWith("/")) {
|
||||
path = "C:" + path;
|
||||
}
|
||||
return path.replace('/', '\\');
|
||||
}
|
||||
};
|
||||
|
||||
public abstract String convert(String path);
|
||||
}
|
||||
|
||||
private void doTest(String outputPath, String... sourcePathArray) {
|
||||
doTest(TargetOS.UNIX, outputPath, sourcePathArray);
|
||||
doTest(TargetOS.WINDOWS, outputPath, sourcePathArray);
|
||||
}
|
||||
|
||||
private void doTest(TargetOS os, String outputPath, String... sourcePathArray) {
|
||||
File[] sourceFileArray = new File[sourcePathArray.length];
|
||||
for (int i = 0; i < sourcePathArray.length; i++) {
|
||||
String path = sourcePathArray[i];
|
||||
sourceFileArray[i] = new File(os.convert(path));
|
||||
}
|
||||
doTest(new File(os.convert(outputPath)), sourceFileArray);
|
||||
}
|
||||
|
||||
private void doTest(File outputFile, File... sourceFileArray) {
|
||||
List<File> sourceFiles = Arrays.asList(sourceFileArray);
|
||||
String message = OutputMessageUtil.formatOutputMessage(sourceFiles, outputFile);
|
||||
OutputMessageUtil.Output output = OutputMessageUtil.parseOutputMessage(message);
|
||||
assertNotNull("Output is null", output);
|
||||
assertEquals(sourceFiles, output.sourceFiles);
|
||||
assertEquals(outputFile, output.outputFile);
|
||||
}
|
||||
|
||||
public void testOneInOneOut() throws Exception {
|
||||
doTest("foo/bar.class", "foo/bar.kt");
|
||||
doTest("/foo/bar.class", "/foo/bar.kt");
|
||||
doTest("/foo/bar.class", "foo/bar.kt");
|
||||
doTest("foo/bar.class", "/foo/bar.kt");
|
||||
}
|
||||
|
||||
public void testTwoInOneOut() throws Exception {
|
||||
doTest("foo/bar.class", "foo/bar.kt", "foo/buzz.kt");
|
||||
doTest("/foo/bar.class", "/foo/bar.kt", "/foo/buzz.kt");
|
||||
doTest("foo/bar.class", "/foo/bar.kt", "foo/buzz.kt");
|
||||
doTest("foo/bar.class", "foo/bar.kt", "/foo/buzz.kt");
|
||||
}
|
||||
|
||||
public void testOneInNoneOut() throws Exception {
|
||||
doTest("foo/bar.class");
|
||||
doTest("/foo/bar.class");
|
||||
}
|
||||
|
||||
public void testWrongStart() throws Exception {
|
||||
assertNull(OutputMessageUtil.parseOutputMessage("foo\nOutput:\nfoo"));
|
||||
}
|
||||
|
||||
public void testTwoOuts() throws Exception {
|
||||
assertNull(OutputMessageUtil.parseOutputMessage("Output:\nfoo\nbar\nInputs:\n"));
|
||||
}
|
||||
|
||||
public void testTooFewStrings() throws Exception {
|
||||
assertNull(OutputMessageUtil.parseOutputMessage("Output:\nInputs:"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user