/******************************************************************************* * 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); } }