/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates.
*
* 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.drools.workbench.services.verifier.webworker.client.testutil;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import org.drools.workbench.services.verifier.api.client.reporting.ExplanationProvider;
import org.drools.workbench.services.verifier.api.client.reporting.Issue;
import org.drools.workbench.services.verifier.api.client.reporting.Severity;
import org.drools.workbench.services.verifier.webworker.client.DecisionTableAnalyzerFromFileTest;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.fail;
import static org.assertj.core.api.Assertions.assertThat;
public class TestUtil {
public static String loadResource(final String name) throws
Exception {
final InputStream in = DecisionTableAnalyzerFromFileTest.class.getResourceAsStream(name);
final Reader reader = new InputStreamReader(in);
final StringBuilder text = new StringBuilder();
final char[] buf = new char[1024];
int len = 0;
while ((len = reader.read(buf)) >= 0) {
text.append(buf,
0,
len);
}
return text.toString();
}
public static void assertOnlyContains(final Set<Issue> result,
final String... expected) {
if (result.isEmpty()) {
fail("Data is empty.");
}
Set<String> resultTitles = result.stream()
.map(issue -> ExplanationProvider.toTitle(issue))
.collect(Collectors.toSet());
assertThat(resultTitles).containsOnly(expected);
}
public static void assertContains(final Set<Issue> result,
final String expected,
final Severity severity,
final Integer... rowNumbers) {
assertTrue("Could not find: " + expected + " for rows: " + rowNumbers + " and severity: " + severity,
result.stream()
.filter(issue -> issue.getSeverity() == severity)
.filter(issue -> titleEquals(issue,
expected))
.filter(issue -> rowNumberContains(issue,
Arrays.asList(rowNumbers)))
.count() > 0);
}
public static void assertDoesNotContain(final String notExpected,
final Set<Issue> result) {
assertFalse("Found " + notExpected,
result.stream().filter(issue -> titleEquals(issue,
notExpected)).count() > 0);
}
public static void assertDoesNotContain(final String notExpected,
final Set<Issue> result,
final int rowNumber) {
assertFalse("Found " + notExpected,
result.stream()
.filter(issue -> titleEquals(issue,
notExpected))
.filter(issue -> rowNumberContains(issue,
Arrays.asList(rowNumber)))
.count() > 0);
}
private static boolean titleEquals(Issue issue,
String expected) {
return ExplanationProvider.toTitle(issue).contains(expected);
}
private static boolean rowNumberContains(Issue issue,
List<Integer> rowNumbers) {
return issue.getRowNumbers().containsAll(rowNumbers);
}
}