/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.notification;
import java.util.Date;
import junit.framework.TestCase;
import de.rcenvironment.core.communication.common.InstanceNodeSessionId;
/**
* Test cases for the class {@link NotificationHeader}.
*
* @author Andre Nurzenski
* @author Doreen Seider
* @author Robert Mischke (8.0.0 id adaptations)
*/
public class NotificationHeaderTest extends TestCase {
/** Time this thread is suspended. */
private static final int SLEEP = 100;
private NotificationHeader myNotificationHeader = null;
@Override
protected void setUp() throws Exception {
super.setUp();
myNotificationHeader = new NotificationHeader(NotificationTestConstants.NOTIFICATION_ID,
NotificationTestConstants.NOTIFICATION_EDITION, NotificationTestConstants.LOCAL_INSTANCE_SESSION);
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
myNotificationHeader = null;
}
/*
* #################### Test for success ####################
*/
/**
* Test if the method can be called.
*/
public final void testGetTimestampForSuccess() {
myNotificationHeader.getTimestamp();
}
/**
* Test if the method can be called.
*/
public final void testGetPublisherNameForSuccess() {
myNotificationHeader.getNotificationIdentifier();
}
/**
* Test if the method can be called.
*/
public final void testGetPublisherPlatformForSuccess() {
myNotificationHeader.getPublishPlatform();
}
/*
* #################### Test for failure ####################
*/
/*
* #################### Test for sanity ####################
*/
/**
* Test for the correct timestamp.
*
* @throws InterruptedException if an exception occurs.
*/
public final void testGetTimestampForSanity() throws InterruptedException {
Date timestamp = myNotificationHeader.getTimestamp();
Thread.sleep(SLEEP);
assertNotNull(timestamp);
assertTrue(timestamp.before(new Date()));
}
/**
* Test for the correct publisher.
*/
public final void testGetPublisherNameForSanity() {
String name = myNotificationHeader.getNotificationIdentifier();
assertNotNull(name);
assertEquals(name, NotificationTestConstants.NOTIFICATION_ID);
}
/**
* Test for the correct publisher.
*/
public final void testGetPublisherPlatformForSanity() {
InstanceNodeSessionId platform = myNotificationHeader.getPublishPlatform();
assertNotNull(platform);
assertEquals(platform, NotificationTestConstants.LOCAL_INSTANCE_SESSION);
}
/**
* Test if two equal headers are announced as equal.
*/
public final void testEqualsForSanity() {
NotificationHeader header = new NotificationHeader(NotificationTestConstants.NOTIFICATION_ID,
NotificationTestConstants.NOTIFICATION_EDITION, NotificationTestConstants.LOCAL_INSTANCE_SESSION);
assertTrue(myNotificationHeader.equals(header));
header = new NotificationHeader("myPublisherName",
NotificationTestConstants.NOTIFICATION_EDITION, NotificationTestConstants.LOCAL_INSTANCE_SESSION);
assertFalse(myNotificationHeader.equals(header));
header = new NotificationHeader(NotificationTestConstants.NOTIFICATION_ID,
NotificationTestConstants.NOTIFICATION_EDITION, NotificationTestConstants.REMOTE_INSTANCE_SESSION);
assertFalse(myNotificationHeader.equals(header));
}
/**
* Test if two equal headers are announced as equal.
*/
public final void testHashCodeForSanity() {
assertEquals(myNotificationHeader.toString().hashCode(), myNotificationHeader.hashCode());
NotificationHeader header = new NotificationHeader(NotificationTestConstants.NOTIFICATION_ID,
NotificationTestConstants.NOTIFICATION_EDITION, NotificationTestConstants.LOCAL_INSTANCE_SESSION);
assertEquals(myNotificationHeader.toString().hashCode(), header.hashCode());
}
/**
* Test if the header is correctly represented as a string.
*/
public final void testToStringForSanity() {
String expected = myNotificationHeader.getNotificationIdentifier() + "[" + myNotificationHeader.getNumber() + "]"
+ "@" + myNotificationHeader.getPublishPlatform() + " - " + myNotificationHeader.getTimestamp();
String actual = myNotificationHeader.toString();
assertNotNull(actual);
assertEquals(expected, actual);
}
/**
* Test if two headers are correctly compared.
*
* @throws Exception if an error occur.
*/
public final void testCompareToForSanity() throws Exception {
final int lower = -1;
final int greater = 1;
final int equal = 0;
NotificationHeader newerNotification = new NotificationHeader(NotificationTestConstants.NOTIFICATION_ID,
NotificationTestConstants.NOTIFICATION_EDITION + greater, NotificationTestConstants.LOCAL_INSTANCE_SESSION);
assertEquals(lower, myNotificationHeader.compareTo(newerNotification));
assertEquals(greater, newerNotification.compareTo(myNotificationHeader));
assertEquals(equal, myNotificationHeader.compareTo(myNotificationHeader));
}
}