Rev 2761 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
/*
* Copyright (C) 2010.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 or
* version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*/
package func.style;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import uk.me.parabola.mkgmap.main.StyleTester;
import func.lib.TestUtils;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* A set of tests written as files, using the StyleTester.
*/
public class ScriptedStyleTest
{
private OutputStream output
;
/**
* This is to check that the tests are working. Run a test that fails
* on purpose to check that we can detect this.
*/
@Test
public void failureTest
() {
TestUtils.
registerFile("styletester.style");
StyleTester.
runSimpleTest("test/resources/rules/fails-on-purpose.fail");
String result = output.
toString();
assertTrue
("failure check", result.
contains("ERROR"));
}
/**
* This is really a whole bunch of tests as we find test files in a
* directory and run each one in turn.
*/
@Test
public void testAllRuleFiles
() throws IOException {
File d =
new File("test/resources/rules/");
assertTrue
(d.
isDirectory());
// Only run files ending in .test
FilenameFilter filter =
new FilenameFilter() {
public boolean accept
(File dir,
String name
) {
if (name.
endsWith(".test"))
return true;
return false;
}
};
int count =
0;
File[] files = d.
listFiles(filter
);
for (File file : files
) {
setup
();
String name = file.
getCanonicalPath();
StyleTester.
runSimpleTest(name
);
String result = output.
toString();
// Make sure that the result does not contain an error
if (result.
contains("ERROR")) {
System.
out.
println(result
);
assertFalse
(name,
true);
}
// make sure that the output was reasonable (and not 'cannot open
// file', for example).
assertTrue
(name, result.
contains("WAY 1:"));
count++
;
}
// Check that some tests were run (ie. it will fail if you just delete
// them all).
assertTrue
("tests run", count
>=
3);
}
@Before
public void setup
() {
output =
new ByteArrayOutputStream();
PrintStream ps =
new PrintStream(output
);
StyleTester.
setOut(ps
);
// Make sure that there is a given result set
StyleTester.
forceUseOfGiven(true);
}
}