blob: 55cb0995942f9fd7bd9b419d9b3fa0f5ee880145 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010-2014 SAP AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.skalli.model;
import static org.junit.Assert.assertTrue;
import java.text.MessageFormat;
import java.util.TreeSet;
import org.eclipse.skalli.testutil.AssertUtils;
import org.eclipse.skalli.testutil.TestExtension;
import org.eclipse.skalli.testutil.TestExtension1;
import org.eclipse.skalli.testutil.TestUUIDs;
import org.junit.Assert;
import org.junit.Test;
@SuppressWarnings("nls")
public class IssueTest implements Issuer {
private static final Class<? extends Issuer> ISSUER = IssueTest.class;
private class SomeIssuer implements Issuer {
}
private class AnotherIssuer implements Issuer {
}
@Test
public void testBasics() {
Issue issue = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0]);
Assert.assertEquals(Severity.WARNING, issue.getSeverity());
Assert.assertEquals(ISSUER, issue.getIssuer());
Assert.assertEquals(TestUUIDs.TEST_UUIDS[0], issue.getEntityId());
Assert.assertEquals(
MessageFormat.format("Entity {0} is invalid", TestUUIDs.TEST_UUIDS[0].toString()),
issue.getMessage());
Assert.assertNull(issue.getExtension());
Assert.assertNull(issue.getPropertyId());
Assert.assertNull(issue.getDescription());
issue = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], "message");
Assert.assertEquals(Severity.WARNING, issue.getSeverity());
Assert.assertEquals(ISSUER, issue.getIssuer());
Assert.assertEquals(TestUUIDs.TEST_UUIDS[0], issue.getEntityId());
Assert.assertEquals("message", issue.getMessage());
Assert.assertEquals("message", issue.toString());
Assert.assertNull(issue.getExtension());
Assert.assertNull(issue.getPropertyId());
Assert.assertNull(issue.getDescription());
issue = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], TestExtension.class, null);
Assert.assertEquals(Severity.WARNING, issue.getSeverity());
Assert.assertEquals(ISSUER, issue.getIssuer());
Assert.assertEquals(TestUUIDs.TEST_UUIDS[0], issue.getEntityId());
Assert.assertEquals(MessageFormat.format("Extension {0} of entity {1} is invalid",
TestExtension.class.getName(), TestUUIDs.TEST_UUIDS[0].toString()),
issue.getMessage());
Assert.assertEquals(TestExtension.class.getName(), issue.getExtension().getName());
Assert.assertNull(issue.getPropertyId());
Assert.assertNull(issue.getDescription());
issue = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], TestExtension.class,
TestExtension.PROPERTY_STR);
Assert.assertEquals(Severity.WARNING, issue.getSeverity());
Assert.assertEquals(ISSUER, issue.getIssuer());
Assert.assertEquals(TestUUIDs.TEST_UUIDS[0], issue.getEntityId());
Assert.assertEquals(
MessageFormat.format("Property {0} of extension {1} of entity {2} is invalid",
TestExtension.PROPERTY_STR, TestExtension.class.getName(),
TestUUIDs.TEST_UUIDS[0].toString()),
issue.getMessage());
Assert.assertEquals(TestExtension.class.getName(), issue.getExtension().getName());
Assert.assertEquals(TestExtension.PROPERTY_STR, issue.getPropertyId());
Assert.assertNull(issue.getDescription());
issue = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], TestExtension.class,
TestExtension.PROPERTY_STR, "message");
issue.setDescription("foobar");
Assert.assertEquals(Severity.WARNING, issue.getSeverity());
Assert.assertEquals(ISSUER, issue.getIssuer());
Assert.assertEquals(TestUUIDs.TEST_UUIDS[0], issue.getEntityId());
Assert.assertEquals("message", issue.getMessage());
Assert.assertEquals(TestExtension.class.getName(), issue.getExtension().getName());
Assert.assertEquals(TestExtension.PROPERTY_STR, issue.getPropertyId());
Assert.assertEquals("foobar", issue.getDescription());
issue.setExtension(TestExtension1.class);
Assert.assertEquals(TestExtension1.class.getName(), issue.getExtension().getName());
issue.setPropertyId(TestExtension1.PROPERTY_ITEMS);
Assert.assertEquals(TestExtension1.PROPERTY_ITEMS, issue.getPropertyId());
issue.setDescription("abc");
Assert.assertEquals("abc", issue.getDescription());
issue.setItem(4711);
Assert.assertEquals(4711, issue.getItem());
long timestamp = System.currentTimeMillis();
issue.setTimestamp(timestamp);
Assert.assertEquals(timestamp, issue.getTimestamp());
}
@Test(expected = IllegalArgumentException.class)
public void testBasics_noSeverity() {
new Issue(null, ISSUER, TestUUIDs.TEST_UUIDS[0]);
}
@Test(expected = IllegalArgumentException.class)
public void testBasics_noIssuer() {
new Issue(Severity.WARNING, null, TestUUIDs.TEST_UUIDS[0]);
}
@Test
public void testCompareToEquals() {
Issue issue = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0]);
Assert.assertTrue(issue.equals(issue));
Assert.assertEquals(0, issue.compareTo(issue));
Issue issue1 = new Issue(Severity.FATAL, ISSUER, TestUUIDs.TEST_UUIDS[0]);
Assert.assertFalse(issue.equals(issue1));
Assert.assertFalse(issue1.equals(issue));
Assert.assertTrue(issue.compareTo(issue1) > 0);
Assert.assertTrue(issue1.compareTo(issue) < 0);
issue1 = new Issue(Severity.FATAL, ISSUER, TestUUIDs.TEST_UUIDS[1]);
Assert.assertFalse(issue.equals(issue1));
Assert.assertFalse(issue1.equals(issue));
Assert.assertTrue(issue.compareTo(issue1) > 0);
Assert.assertTrue(issue1.compareTo(issue) < 0);
issue1 = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[1]);
Assert.assertFalse(issue.equals(issue1));
Assert.assertFalse(issue1.equals(issue));
Assert.assertEquals(TestUUIDs.TEST_UUIDS[0].compareTo(TestUUIDs.TEST_UUIDS[1]),
issue.compareTo(issue1));
Assert.assertEquals(TestUUIDs.TEST_UUIDS[1].compareTo(TestUUIDs.TEST_UUIDS[0]),
issue1.compareTo(issue));
issue = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], TestExtension.class, null);
issue1 = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], TestExtension1.class, null);
Assert.assertFalse(issue.equals(issue1));
Assert.assertFalse(issue1.equals(issue));
Assert.assertTrue(issue.compareTo(issue1) < 0);
Assert.assertTrue(issue1.compareTo(issue) > 0);
issue = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], TestExtension.class, 456, null);
issue1 = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], TestExtension.class, 123, null);
Assert.assertFalse(issue.equals(issue1));
Assert.assertFalse(issue1.equals(issue));
Assert.assertTrue(issue.compareTo(issue1) > 0);
Assert.assertTrue(issue1.compareTo(issue) < 0);
issue1.setExtension(null);
Assert.assertFalse(issue.equals(issue1));
Assert.assertFalse(issue1.equals(issue));
Assert.assertTrue(issue.compareTo(issue1) > 0);
Assert.assertTrue(issue1.compareTo(issue) < 0);
issue1.setExtension(TestExtension1.class);
issue.setExtension(null);
Assert.assertFalse(issue.equals(issue1));
Assert.assertFalse(issue1.equals(issue));
Assert.assertTrue(issue.compareTo(issue1) < 0);
Assert.assertTrue(issue1.compareTo(issue) > 0);
issue = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], TestExtension.class,
TestExtension.PROPERTY_BOOL);
issue1 = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], TestExtension.class,
TestExtension.PROPERTY_STR);
Assert.assertFalse(issue.equals(issue1));
Assert.assertFalse(issue1.equals(issue));
Assert.assertTrue(issue.compareTo(issue1) < 0);
Assert.assertTrue(issue1.compareTo(issue) > 0);
issue1.setPropertyId(null);
Assert.assertFalse(issue.equals(issue1));
Assert.assertFalse(issue1.equals(issue));
Assert.assertTrue(issue.compareTo(issue1) > 0);
Assert.assertTrue(issue1.compareTo(issue) < 0);
issue.setPropertyId(null);
issue1.setPropertyId(TestExtension.PROPERTY_BOOL);
Assert.assertFalse(issue.equals(issue1));
Assert.assertFalse(issue1.equals(issue));
Assert.assertTrue(issue.compareTo(issue1) < 0);
Assert.assertTrue(issue1.compareTo(issue) > 0);
issue = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], TestExtension.class,
TestExtension.PROPERTY_BOOL, "foo");
issue1 = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], TestExtension.class,
TestExtension.PROPERTY_BOOL, "bar");
Assert.assertTrue(issue.equals(issue1));
Assert.assertTrue(issue1.equals(issue));
issue = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], TestExtension.class,
TestExtension.PROPERTY_BOOL, "foo");
issue1 = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], TestExtension.class,
TestExtension.PROPERTY_BOOL, null);
Assert.assertTrue(issue.equals(issue1));
Assert.assertTrue(issue1.equals(issue));
issue = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], TestExtension.class,
TestExtension.PROPERTY_BOOL, null);
issue1 = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], TestExtension.class,
TestExtension.PROPERTY_BOOL, "bar");
Assert.assertTrue(issue.equals(issue1));
Assert.assertTrue(issue1.equals(issue));
issue = new Issue(Severity.WARNING, SomeIssuer.class, TestUUIDs.TEST_UUIDS[0], TestExtension.class,
TestExtension.PROPERTY_BOOL);
issue1 = new Issue(Severity.WARNING, AnotherIssuer.class, TestUUIDs.TEST_UUIDS[0],
TestExtension.class, TestExtension.PROPERTY_BOOL);
Assert.assertFalse(issue.equals(issue1));
Assert.assertFalse(issue1.equals(issue));
Assert.assertTrue(issue.compareTo(issue1) > 0);
Assert.assertTrue(issue1.compareTo(issue) < 0);
}
@Test
public void testGetMessage() {
TreeSet<Issue> issues = new TreeSet<Issue>();
issues.add(new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], "IssueWarn"));
issues.add(new Issue(Severity.ERROR, ISSUER, TestUUIDs.TEST_UUIDS[1], "IssueError"));
issues.add(new Issue(Severity.INFO, ISSUER, TestUUIDs.TEST_UUIDS[2], "IssueInfo"));
issues.add(new Issue(Severity.ERROR, ISSUER, TestUUIDs.TEST_UUIDS[3], "IssueAnotherError"));
Assert.assertEquals(
"Message\n - IssueAnotherError\n - IssueError\n - IssueWarn\n - IssueInfo",
Issue.getMessage("Message", issues));
issues = new TreeSet<Issue>();
issues.add(new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], ""));
issues.add(new Issue(Severity.ERROR, ISSUER, TestUUIDs.TEST_UUIDS[1], null));
issues.add(new Issue(Severity.INFO, ISSUER, TestUUIDs.TEST_UUIDS[2], "IssueInfo"));
issues.add(new Issue(Severity.ERROR, ISSUER, TestUUIDs.TEST_UUIDS[3], ""));
Assert.assertEquals("Message\n" +
" - Entity " + TestUUIDs.TEST_UUIDS[3] + " is invalid\n" +
" - Entity " + TestUUIDs.TEST_UUIDS[1] + " is invalid\n" +
" - Entity " + TestUUIDs.TEST_UUIDS[0] + " is invalid\n" +
" - IssueInfo",
Issue.getMessage("Message", issues));
issues = new TreeSet<Issue>();
issues.add(new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], null));
issues.add(new Issue(Severity.ERROR, ISSUER, TestUUIDs.TEST_UUIDS[1], ""));
Assert.assertEquals(
" - Entity " + TestUUIDs.TEST_UUIDS[1] + " is invalid\n" +
" - Entity " + TestUUIDs.TEST_UUIDS[0] + " is invalid",
Issue.getMessage("", issues));
issues = new TreeSet<Issue>();
issues.add(new Issue(Severity.FATAL, ISSUER, TestUUIDs.TEST_UUIDS[0], null));
Assert.assertEquals(
"Message\n" +
" - Entity " + TestUUIDs.TEST_UUIDS[0] + " is invalid",
Issue.getMessage("Message", issues));
issues = new TreeSet<Issue>();
issues.add(new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], null));
Assert.assertEquals(
"Entity " + TestUUIDs.TEST_UUIDS[0] + " is invalid",
Issue.getMessage(null, issues));
Assert.assertEquals("Message", Issue.getMessage("Message", new TreeSet<Issue>()));
Assert.assertEquals("Message", Issue.getMessage("Message", null));
Assert.assertEquals("", Issue.getMessage("", new TreeSet<Issue>()));
Assert.assertEquals("", Issue.getMessage("", null));
}
@Test
public void testFilterBySeverity() throws Exception {
TreeSet<Issue> issues = new TreeSet<Issue>();
Issue issue0 = new Issue(Severity.WARNING, ISSUER, TestUUIDs.TEST_UUIDS[0], "");
Issue issue1 = new Issue(Severity.ERROR, ISSUER, TestUUIDs.TEST_UUIDS[1], null);
Issue issue2 = new Issue(Severity.INFO, ISSUER, TestUUIDs.TEST_UUIDS[2], "IssueInfo");
Issue issue3 = new Issue(Severity.FATAL, ISSUER, TestUUIDs.TEST_UUIDS[3], "");
issues.add(issue0);
issues.add(issue1);
issues.add(issue2);
issues.add(issue3);
assertTrue(Issue.hasFatalIssues(issues));
AssertUtils.assertEquals("filter FATAL", Issue.filterBySeverity(issues, Severity.FATAL), issue3);
AssertUtils.assertEquals("filter ERROR", Issue.filterBySeverity(issues, Severity.ERROR), issue3, issue1);
AssertUtils.assertEquals("filter WARNING", Issue.filterBySeverity(issues,
Severity.WARNING), issue3, issue1, issue0);
AssertUtils.assertEquals("filter INFO", Issue.filterBySeverity(issues,
Severity.INFO), issue3, issue1, issue0, issue2);
}
}