/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.component.execution.api;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import org.junit.Assert;
import org.junit.Test;
import de.rcenvironment.core.component.execution.impl.ConsoleRowImpl;
/**
* Test cases for ConsoleRow.
*
* @author Doreen Seider
* @author Robert Mischke
*/
public class ConsoleRowTest {
private static final int PREVENT_TIMESTAMP_COLLISION_WAIT_TIME_MSEC = 100;
private final String workflowId = "workflow-id";
private final String componentId = "component-id";
private final String workflowName = "workflow-name";
private final String componentName = "component-name";
private final String firstMessageLine = "1. console message line";
private final String secondMessageLine = "2. console message line";
private final ConsoleRow.Type type = ConsoleRow.Type.TOOL_OUT;
/** Test. */
@Test
public void test() {
ConsoleRowImpl row1 = new ConsoleRowImpl();
row1.setWorkflowIdentifier(workflowId);
row1.setComponentIdentifier(componentId);
row1.setWorkflowName(workflowName);
row1.setComponentName(componentName);
row1.setType(type);
row1.setPayload(firstMessageLine);
row1.setTimestamp(1);
assertTrue(row1.getComponentIdentifier().equals(componentId));
assertTrue(row1.getWorkflowIdentifier().equals(workflowId));
assertTrue(row1.getComponentName().equals(componentName));
assertTrue(row1.getPayload().equals(firstMessageLine));
assertNotNull(row1.getTimestamp());
assertTrue(row1.getType().equals(type));
assertTrue(row1.getWorkflowName().equals(workflowName));
assertTrue(row1.toString().contains(componentName));
assertTrue(row1.toString().contains(firstMessageLine));
assertTrue(row1.toString().contains(type.toString()));
assertTrue(row1.toString().contains(workflowName));
ConsoleRowImpl row2 = new ConsoleRowImpl();
row2.setWorkflowIdentifier(workflowId);
row2.setComponentIdentifier(componentId);
row2.setWorkflowName(workflowName);
row2.setComponentName(componentName);
row2.setType(type);
row2.setPayload(secondMessageLine);
row2.setTimestamp(2);
assertTrue(row2.compareTo(row1) > 0);
row1.setIndex(1);
row2.setIndex(2);
assertTrue(row2.compareTo(row1) > 0);
// prevent rows 1 and 3 having the same timestamp by accident
try {
Thread.sleep(PREVENT_TIMESTAMP_COLLISION_WAIT_TIME_MSEC);
} catch (InterruptedException e) {
Assert.fail();
}
// create row with same data and new number;
// should not be equal due to timestamp and index
ConsoleRowImpl row3 = new ConsoleRowImpl();
row3.setWorkflowIdentifier(workflowId);
row3.setComponentIdentifier(componentId);
row3.setWorkflowName(workflowName);
row3.setComponentName(componentName);
row3.setType(type);
row3.setPayload(firstMessageLine);
row3.setTimestamp(3);
row3.setIndex(3);
assertFalse(row3.equals(row1));
assertFalse(row1.equals(row3));
// set to same index; should still not be equal due to timestamp
row3.setIndex(1);
assertFalse(row3.equals(row1));
assertFalse(row1.equals(row3));
// set to same timestamp; now they should be equal
row3.setTimestamp(row1.getTimestamp());
assertTrue(row3.equals(row1));
assertTrue(row1.equals(row3));
assertEquals(row1.toString().hashCode(), row1.hashCode());
}
}