blob: cd175054b390c4ec9655402f17d7707254019502 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011-2014 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Bernd Hufmann - Initial API and implementation
* Alexandre Montplaisir - Port to JUnit4
*******************************************************************************/
package org.eclipse.tracecompass.tmf.ui.tests.views.uml2sd.dialogs;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
import java.util.regex.Pattern;
import org.eclipse.jface.dialogs.DialogSettings;
import org.eclipse.tracecompass.tmf.ui.views.uml2sd.dialogs.Criteria;
import org.eclipse.tracecompass.tmf.ui.views.uml2sd.dialogs.FilterCriteria;
import org.eclipse.tracecompass.tmf.ui.views.uml2sd.handlers.provider.ISDFilterProvider;
import org.eclipse.tracecompass.tmf.ui.views.uml2sd.handlers.provider.ISDGraphNodeSupporter;
import org.junit.Test;
/**
* Test cases to test Criteria class.
*/
public class CriteriaTest {
/**
* Test default constructor.
*/
@Test
public void testCriteria() {
Criteria criteria = new Criteria();
assertFalse("testCriteria", criteria.isAsyncMessageReturnSelected());
assertFalse("testCriteria", criteria.isAsyncMessageSelected());
assertFalse("testCriteria", criteria.isCaseSenstiveSelected());
assertFalse("testCriteria", criteria.isLifeLineSelected());
assertFalse("testCriteria", criteria.isStopSelected());
assertFalse("testCriteria", criteria.isSyncMessageReturnSelected());
assertFalse("testCriteria", criteria.isSyncMessageSelected());
assertNull("testCriteria", criteria.getExpression());
assertNull("testCriteria", criteria.getPattern());
}
/**
* Test copy constructor.
*/
@Test
public void testCriteriaCriteria() {
Criteria criteria = new Criteria();
criteria.setExpression("test");
criteria.setLifeLineSelected(true);
criteria.setSyncMessageSelected(true);
Criteria copy = new Criteria(criteria);
assertEquals("testCriteriaCriteria", criteria.isAsyncMessageReturnSelected(), copy.isAsyncMessageReturnSelected());
assertEquals("testCriteriaCriteria", criteria.isAsyncMessageSelected(), copy.isAsyncMessageSelected());
assertEquals("testCriteriaCriteria", criteria.isCaseSenstiveSelected(), copy.isCaseSenstiveSelected());
assertEquals("testCriteriaCriteria", criteria.isLifeLineSelected(), copy.isLifeLineSelected());
assertEquals("testCriteriaCriteria", criteria.isStopSelected(), copy.isStopSelected());
assertEquals("testCriteriaCriteria", criteria.isSyncMessageReturnSelected(), copy.isSyncMessageReturnSelected());
assertEquals("testCriteriaCriteria", criteria.isSyncMessageSelected(), copy.isSyncMessageSelected());
assertEquals("testCriteriaCriteria", criteria.getExpression(), copy.getExpression());
assertEquals("testCriteriaCriteria", criteria.getPattern().pattern(), copy.getPattern().pattern());
}
/**
* Test accessor methods.
*/
@Test
public void testAccessors() {
Criteria criteria = new Criteria();
criteria.setAsyncMessageReturnSelected(true);
criteria.setAsyncMessageSelected(true);
criteria.setCaseSenstiveSelected(true);
criteria.setLifeLineSelected(true);
criteria.setStopSelected(true);
criteria.setSyncMessageReturnSelected(true);
criteria.setSyncMessageSelected(true);
criteria.setExpression("test.*");
// set true to all flags
assertTrue("testAccessors", criteria.isAsyncMessageReturnSelected());
assertTrue("testAccessors", criteria.isAsyncMessageSelected());
assertTrue("testAccessors", criteria.isCaseSenstiveSelected());
assertTrue("testAccessors", criteria.isLifeLineSelected());
assertTrue("testAccessors", criteria.isStopSelected());
assertTrue("testAccessors", criteria.isSyncMessageReturnSelected());
assertTrue("testAccessors", criteria.isSyncMessageSelected());
assertEquals("testAccessors", "test.*", criteria.getExpression());
assertNotNull("testAccessors", criteria.getPattern());
assertEquals("testAccessors", "test.*", criteria.getPattern().pattern());
assertEquals("testAccessors", 0, criteria.getPattern().flags() & Pattern.CASE_INSENSITIVE);
// set false to all flags
criteria.setAsyncMessageReturnSelected(false);
criteria.setAsyncMessageSelected(false);
criteria.setCaseSenstiveSelected(false);
criteria.setLifeLineSelected(false);
criteria.setStopSelected(false);
criteria.setSyncMessageReturnSelected(false);
criteria.setSyncMessageSelected(false);
assertFalse("testAccessors", criteria.isAsyncMessageReturnSelected());
assertFalse("testAccessors", criteria.isAsyncMessageSelected());
assertFalse("testAccessors", criteria.isCaseSenstiveSelected());
assertFalse("testAccessors", criteria.isLifeLineSelected());
assertFalse("testAccessors", criteria.isStopSelected());
assertFalse("testAccessors", criteria.isSyncMessageReturnSelected());
assertFalse("testAccessors", criteria.isSyncMessageSelected());
assertEquals("testAccessors", "test.*", criteria.getExpression());
assertNotNull("testAccessors", criteria.getPattern());
assertEquals("testAccessors", "test.*", criteria.getPattern().pattern());
assertEquals("testAccessors", Pattern.CASE_INSENSITIVE, criteria.getPattern().flags() & Pattern.CASE_INSENSITIVE);
}
/**
* Test compartTo method.
*/
@Test
public void testCompareTo() {
Criteria criteria = new Criteria();
criteria.setExpression("test");
criteria.setLifeLineSelected(true);
criteria.setSyncMessageSelected(true);
Criteria copy = new Criteria(criteria);
assertTrue("testCompareTo", criteria.compareTo(copy));
assertTrue("testCompareTo", copy.compareTo(criteria));
assertTrue("testCompareTo", criteria.compareTo(criteria));
copy.setExpression(null);
assertFalse("testCompareTo", criteria.compareTo(copy));
assertFalse("testCompareTo", copy.compareTo(criteria));
criteria.setExpression(null);
assertTrue("testCompareTo", criteria.compareTo(copy));
assertTrue("testCompareTo", copy.compareTo(criteria));
criteria.setExpression("test");
copy.setExpression("test.*[12345]");
assertFalse("testCompareTo", criteria.compareTo(copy));
assertFalse("testCompareTo", copy.compareTo(criteria));
copy.setExpression("test");
copy.setAsyncMessageReturnSelected(true);
assertFalse("testCompareTo", criteria.compareTo(copy));
assertFalse("testCompareTo", copy.compareTo(criteria));
}
/**
* Test save to disk.
*/
@Test
public void testSave() {
DialogSettings settings = new DialogSettings("mysettings");
Criteria criteria = new Criteria();
criteria.setExpression("test");
criteria.setLifeLineSelected(true);
criteria.setSyncMessageSelected(true);
// Save the criteria to the dialog settings
criteria.save(settings);
// Check if all values are saved as expected
assertEquals("testSave", "test", settings.get("expression"));
assertEquals("testSave", "false", settings.get("isCaseSenstiveSelected"));
assertEquals("testSave", "false", settings.get("isAsyncMessageReturnSelected"));
assertEquals("testSave", "false", settings.get("isAsyncMessageSelected"));
assertEquals("testSave", "true", settings.get("isLifeLineSelected"));
assertEquals("testSave", "false", settings.get("isStopSelected"));
assertEquals("testSave", "false", settings.get("isSyncMessageReturnSelected"));
assertEquals("testSave", "true", settings.get("isSyncMessageSelected"));
}
/**
* Test restore from disk.
*/
@Test
public void testLoad() {
DialogSettings settings = new DialogSettings("mysettings");
Criteria criteria = new Criteria();
criteria.setExpression("test");
criteria.setLifeLineSelected(true);
criteria.setSyncMessageSelected(true);
// Save the criteria to the dialog settings
criteria.save(settings);
// Load the criteria from the dialog settings
Criteria copy = new Criteria();
copy.load(settings);
assertTrue("testCompareTo", criteria.compareTo(copy));
assertTrue("testCompareTo", copy.compareTo(criteria));
}
/**
* Test graph node summary usage.
*/
@Test
public void testGetGraphNodeSummary() {
// Create a dummy provider
ISDFilterProvider provider = new ISDFilterProvider() {
@Override
public boolean isNodeSupported(int nodeType) {
return true;
}
@Override
public String getNodeName(int nodeType, String loaderClassName) {
// not clear about purpose loaderClassName
switch (nodeType) {
case ISDGraphNodeSupporter.LIFELINE:
return "MyLifeline";
case ISDGraphNodeSupporter.SYNCMESSAGE:
return "MySyncMessage";
case ISDGraphNodeSupporter.SYNCMESSAGERETURN:
return "MySyncMessageReturn";
case ISDGraphNodeSupporter.ASYNCMESSAGE:
return "MyAsyncMessage";
case ISDGraphNodeSupporter.ASYNCMESSAGERETURN:
return "MyAsyncMessageReturn";
case ISDGraphNodeSupporter.STOP:
return "MyStop";
default:
return "";
}
}
@Override
public boolean filter(List<FilterCriteria> filters) {
return false;
}
};
Criteria criteria = new Criteria();
criteria.setExpression("BALL_.*");
criteria.setAsyncMessageReturnSelected(true);
criteria.setAsyncMessageSelected(true);
criteria.setLifeLineSelected(true);
criteria.setStopSelected(true);
criteria.setSyncMessageReturnSelected(true);
criteria.setSyncMessageSelected(true);
// Test summary when provider is available
String summary = criteria.getGraphNodeSummary(provider, null);
assertEquals("testGetGraphNodeSummary", "[MyLifeline or MySyncMessage or MySyncMessageReturn or MyAsyncMessage or MyAsyncMessageReturn or MyStop]", summary);
// Test default summary when no provider is provided
summary = criteria.getGraphNodeSummary(null, null);
assertEquals("testGetGraphNodeSummary", "[Lifeline or Synchronous message or Synchronous message return or Asynchronous message or Asynchronous message return or Stop]", summary);
}
/**
* Test matches algorithm.
*/
@Test
public void testMatches() {
Criteria criteria = new Criteria();
criteria.setExpression("BALL_.*");
/*
* Note that method matches uses the Pattern class. Test
* only case sensitive/case insensitive case. All other regular
* expression cases are covered by Pattern class.
*/
// case insensitive
assertTrue("testMatches", criteria.matches("BALL_REQUEST"));
assertTrue("testMatches", criteria.matches("BALL_REPLY"));
assertTrue("testMatches", criteria.matches("BALL_R"));
assertTrue("testMatches", criteria.matches("ball_request"));
assertTrue("testMatches", criteria.matches("ball_request"));
assertFalse("testMatches", criteria.matches("NOBALL_REQUEST"));
assertFalse("testMatches", criteria.matches("BLABLA"));
// case sensitive
criteria.setCaseSenstiveSelected(true);
assertTrue("testMatches", criteria.matches("BALL_REQUEST"));
assertTrue("testMatches", criteria.matches("BALL_REPLY"));
assertTrue("testMatches", criteria.matches("BALL_R"));
assertFalse("testMatches", criteria.matches("ball_request"));
assertFalse("testMatches", criteria.matches("ball_request"));
assertFalse("testMatches", criteria.matches("NOBALL_REQUEST"));
assertFalse("testMatches", criteria.matches("BLABLA"));
}
}