package schemacrawler.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import org.junit.Test;
import schemacrawler.schemacrawler.SchemaCrawlerException;
import schemacrawler.tools.lint.LintSeverity;
import schemacrawler.tools.lint.LinterConfig;
import schemacrawler.tools.lint.LinterConfigs;
public class LinterConfigsTest
{
private static Reader readerForResource(final String resource)
throws IOException
{
final InputStream inputStream = LinterConfigsTest.class
.getResource(resource).openStream();
Reader reader;
if (inputStream != null)
{
reader = new InputStreamReader(inputStream);
}
else
{
reader = null;
}
return reader;
}
@Test
public void testParseBadLinterConfigs1()
throws SchemaCrawlerException, IOException
{
final Reader reader = readerForResource("/bad-schemacrawler-linter-configs-a.xml");
final LinterConfigs linterConfigs = new LinterConfigs();
linterConfigs.parse(reader);
assertEquals(3, linterConfigs.size());
LinterConfig linterConfig;
linterConfig = linterConfigs.get("linter.Linter1");
assertEquals(null, linterConfig.getConfig().getStringValue("exclude", null));
linterConfig = linterConfigs.get("linter.Linter2");
assertEquals(".*", linterConfig.getConfig().getStringValue("exclude", null));
linterConfig = linterConfigs.get("linter.Linter3");
assertNull(linterConfig.getSeverity());
}
@Test(expected = IllegalArgumentException.class)
public void testParseBadXml0()
throws SchemaCrawlerException
{
final LinterConfigs linterConfigs = new LinterConfigs();
linterConfigs.parse(null);
}
@Test(expected = SchemaCrawlerException.class)
public void testParseBadXml1()
throws SchemaCrawlerException, IOException
{
final Reader reader = readerForResource("/bad-schemacrawler-linter-configs-1.xml");
final LinterConfigs linterConfigs = new LinterConfigs();
linterConfigs.parse(reader);
assertEquals(0, linterConfigs.size());
}
@Test
public void testParseBadXml2()
throws SchemaCrawlerException, IOException
{
final Reader reader = readerForResource("/bad-schemacrawler-linter-configs-2.xml");
final LinterConfigs linterConfigs = new LinterConfigs();
linterConfigs.parse(reader);
}
@Test
public void testParseGoodLinterConfigs()
throws SchemaCrawlerException, IOException
{
final Reader reader = readerForResource("/schemacrawler-linter-configs-1.xml");
final LinterConfigs linterConfigs = new LinterConfigs();
linterConfigs.parse(reader);
assertEquals(3, linterConfigs.size());
LinterConfig linterConfig;
linterConfig = linterConfigs.get("linter.Linter1");
assertEquals(LintSeverity.medium, linterConfig.getSeverity());
linterConfig = linterConfigs.get("linter.Linter2");
assertTrue(linterConfig.getSeverity() == null);
assertEquals(".*", linterConfig.getConfig().getStringValue("exclude", null));
linterConfig = linterConfigs.get("linter.Linter3");
assertEquals(LintSeverity.high, linterConfig.getSeverity());
}
}