blob: 923d372b3eea39e8d8cdbe6d3e21db7fbf04e639 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* 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:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.ote.message.other;
import org.eclipse.osee.ote.message.elements.IntegerElement;
import org.eclipse.osee.ote.message.mock.TestMessage;
import org.eclipse.osee.ote.message.mock.UnitTestSupport;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
/**
* @author Roberto E. Escobar
*/
public class TestIntegerOperations {
private UnitTestSupport support;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Before
public void setUp() throws Exception {
support = new UnitTestSupport();
}
@After
public void tearDown() throws Exception {
support.cleanup();
}
/**
* Not sure how this is even supposed to work.
*
* @throws InterruptedException
*/
@Ignore
@Test
public void testCheckWaitForValue() throws InterruptedException {
TestMessage msg = new TestMessage();
support.activateMsg(msg);
int maxElementValue = getMaxIntValue(msg.INT_ELEMENT_1);
support.genericTestCheckWaitForValue(msg.INT_ELEMENT_1, new Integer[] {
10,
30,
31,
30,
50,
75,
maxElementValue,
maxElementValue,
400,
1,
maxElementValue,
0,
maxElementValue,
1,
0,
1,
2}, 49);
}
@Test
public void testCheckNot() throws InterruptedException {
TestMessage msg = new TestMessage();
support.activateMsg(msg);
int maxElementValue = getMaxIntValue(msg.INT_ELEMENT_1);
support.genericTestCheckNot(msg.INT_ELEMENT_1, new Integer[] {0, maxElementValue, 10, 100, 1000, 5});
}
@Test
public void testCheckMaintain() throws InterruptedException {
TestMessage msg = new TestMessage();
support.activateMsg(msg);
int maxElementValue = getMaxIntValue(msg.INT_ELEMENT_1);
support.genericCheckMaintain(msg.INT_ELEMENT_1, new Integer[] {
0,
maxElementValue,
0,
0,
maxElementValue,
maxElementValue,
1000,
5,
1,
maxElementValue - 1});
}
@Test
public void testCheckRange() throws InterruptedException {
TestMessage msg = new TestMessage();
support.activateMsg(msg);
msg.INT_ELEMENT_1.setValue(50);
support.checkRange(msg.INT_ELEMENT_1, 0, true, 100, true, 100);
// test lower bound, inclusive
msg.INT_ELEMENT_1.setValue(0);
support.checkRangeFail(msg.INT_ELEMENT_1, 1, true, 100, true, 100);
support.setAfter(msg.INT_ELEMENT_1, 1, 50);
support.checkRange(msg.INT_ELEMENT_1, 1, true, 100, true, 100);
// test upper bound, inclusive
msg.INT_ELEMENT_1.setValue(101);
support.checkRangeFail(msg.INT_ELEMENT_1, 1, true, 100, true, 100);
support.setAfter(msg.INT_ELEMENT_1, 100, 50);
support.checkRange(msg.INT_ELEMENT_1, 1, true, 100, true, 100);
// test middle
msg.INT_ELEMENT_1.setValue(1000);
support.setAfter(msg.INT_ELEMENT_1, 50, 50);
support.checkRange(msg.INT_ELEMENT_1, 1, true, 100, true, 100);
// test lower bound, exclusive
msg.INT_ELEMENT_1.setValue(1);
support.checkRangeFail(msg.INT_ELEMENT_1, 1, false, 100, false, 100); // make sure lower bound is exclusive
support.setAfter(msg.INT_ELEMENT_1, 2, 50);
support.checkRange(msg.INT_ELEMENT_1, 1, false, 100, false, 100);
// test upper bound, exclusive
msg.INT_ELEMENT_1.setValue(100);
support.checkRangeFail(msg.INT_ELEMENT_1, 1, false, 100, false, 100); // make sure upper bound is exclusive
support.setAfter(msg.INT_ELEMENT_1, 99, 50);
support.checkRange(msg.INT_ELEMENT_1, 1, false, 100, false, 100);
// check multiple out of range values
msg.INT_ELEMENT_1.setValue(10);
support.setAfter(msg.INT_ELEMENT_1, 100, 20);
support.setAfter(msg.INT_ELEMENT_1, 9, 40);
support.setAfter(msg.INT_ELEMENT_1, 101, 60);
support.checkRangeFail(msg.INT_ELEMENT_1, 10, false, 100, false, 160);
support.checkWaitForValue(msg.INT_ELEMENT_1, 101, 0); // make sure we did not fail before we should have
}
@Test
public void testCheckMaintainRange() throws InterruptedException {
TestMessage msg = new TestMessage();
support.activateMsg(msg);
msg.INT_ELEMENT_1.setValue(50);
support.checkMaintainRange(msg.INT_ELEMENT_1, 0, true, 100, true, 100);
msg.INT_ELEMENT_1.setValue(0);
support.checkMaintainRange(msg.INT_ELEMENT_1, 0, true, 100, true, 100);
msg.INT_ELEMENT_1.setValue(100);
support.checkMaintainRange(msg.INT_ELEMENT_1, 0, true, 100, true, 100);
// check lower bound, inclusive
msg.INT_ELEMENT_1.setValue(10);
support.setAfter(msg.INT_ELEMENT_1, 9, 50);
support.checkMaintainRangeFail(msg.INT_ELEMENT_1, 10, true, 100, true, 100);
// check upper bound, inclusive
msg.INT_ELEMENT_1.setValue(100);
support.setAfter(msg.INT_ELEMENT_1, 101, 50);
support.checkMaintainRangeFail(msg.INT_ELEMENT_1, 10, true, 100, true, 100);
support.checkWaitForValue(msg.INT_ELEMENT_1, 101, 0);
// check lower bound, exclusive
msg.INT_ELEMENT_1.setValue(1);
support.setAfter(msg.INT_ELEMENT_1, 0, 50);
support.checkMaintainRangeFail(msg.INT_ELEMENT_1, 0, false, 100, false, 100);
support.checkWaitForValue(msg.INT_ELEMENT_1, 0, 0);
// check upper bound, exclusive
msg.INT_ELEMENT_1.setValue(99);
support.setAfter(msg.INT_ELEMENT_1, 100, 50);
support.checkMaintainRangeFail(msg.INT_ELEMENT_1, 0, false, 100, false, 100);
// check bouncing between upper and lower inclusive
msg.INT_ELEMENT_1.setValue(0);
support.setAfter(msg.INT_ELEMENT_1, 100, 20);
support.setAfter(msg.INT_ELEMENT_1, 50, 40);
support.setAfter(msg.INT_ELEMENT_1, 1, 60);
support.checkMaintainRange(msg.INT_ELEMENT_1, 0, true, 100, true, 100);
support.checkWaitForValue(msg.INT_ELEMENT_1, 1, 0);
// check approaching upper fail boundary
msg.INT_ELEMENT_1.setValue(97);
support.setAfter(msg.INT_ELEMENT_1, 98, 20);
support.setAfter(msg.INT_ELEMENT_1, 99, 40);
support.setAfter(msg.INT_ELEMENT_1, 100, 60);
support.checkMaintainRangeFail(msg.INT_ELEMENT_1, 0, false, 100, false, 100);
// check approaching lower fail boundary
msg.INT_ELEMENT_1.setValue(3);
support.setAfter(msg.INT_ELEMENT_1, 2, 20);
support.setAfter(msg.INT_ELEMENT_1, 1, 40);
support.setAfter(msg.INT_ELEMENT_1, 0, 60);
support.checkMaintainRangeFail(msg.INT_ELEMENT_1, 0, false, 100, false, 100);
// check mixed inclusive, exclusive
msg.INT_ELEMENT_1.setValue(1);
support.setAfter(msg.INT_ELEMENT_1, 100, 60);
support.checkMaintainRange(msg.INT_ELEMENT_1, 0, false, 100, true, 100);
// check mixed inclusive, exclusive
msg.INT_ELEMENT_1.setValue(99);
support.setAfter(msg.INT_ELEMENT_1, 0, 60);
support.checkMaintainRange(msg.INT_ELEMENT_1, 0, true, 100, false, 100);
// check bouncing between upper and lower exclusive
support.setSequence(msg.INT_ELEMENT_1, new Integer[] {1, 99, 50, 2, 2, 2, 1, 2, 1, 2, 44});
support.checkMaintainRange(msg.INT_ELEMENT_1, 0, false, 100, false, 240);
support.checkWaitForValue(msg.INT_ELEMENT_1, 44, 0);
// check fail fast behavior
msg.INT_ELEMENT_1.setValue(1);
support.setAfter(msg.INT_ELEMENT_1, 100, 30);
support.setAfter(msg.INT_ELEMENT_1, 50, 60);
support.checkMaintainRangeFail(msg.INT_ELEMENT_1, 0, false, 100, false, 100);
support.checkWaitForValue(msg.INT_ELEMENT_1, 100, 0); // should immediately check value since it should have caused the above to fail
support.checkWaitForValue(msg.INT_ELEMENT_1, 50, 100);
}
@Test
public void testCheckMaintainNotRange() throws InterruptedException {
TestMessage msg = new TestMessage();
support.activateMsg(msg);
// bounce around boundaries, make sure it doesn't fail, inclusive
support.setSequence(msg.INT_ELEMENT_1, new Integer[] {0, 101, 9, 102, 8, 102, 101, 101, 101, 9, 9, 101, 9});
support.checkMaintainNotRange(msg.INT_ELEMENT_1, 10, true, 100, true, 400);
// bounce around boundaries, make sure it doesn't fail, exclusive
msg.INT_ELEMENT_1.setValue(0);
support.setAfter(msg.INT_ELEMENT_1, 100, 20);
support.setAfter(msg.INT_ELEMENT_1, 10, 40);
support.setAfter(msg.INT_ELEMENT_1, 101, 60);
support.setAfter(msg.INT_ELEMENT_1, 9, 80);
support.checkMaintainNotRange(msg.INT_ELEMENT_1, 10, false, 100, false, 200);
// explore boundary then cause failure, exclusive
msg.INT_ELEMENT_1.setValue(10);
support.setAfter(msg.INT_ELEMENT_1, 100, 20);
support.setAfter(msg.INT_ELEMENT_1, 55, 80);
support.checkMaintainNotRangeFail(msg.INT_ELEMENT_1, 10, false, 100, false, 200);
support.checkWaitForValue(msg.INT_ELEMENT_1, 55, 0); // make sure our plan failure actually caused it to fail
// explore boundary then cause failure, inclusive
support.setSequence(msg.INT_ELEMENT_1, new Integer[] {9, 9, 101, 101, 9, 101, 55});
support.checkMaintainNotRangeFail(msg.INT_ELEMENT_1, 10, true, 100, true, 200);
support.checkWaitForValue(msg.INT_ELEMENT_1, 55, 0); // make sure our planned failure actually caused it to fail
// check transition to upper boundary causes failure, inclusive
support.maintain(msg.INT_ELEMENT_1, 105, 100, 50);
support.checkMaintainNotRangeFail(msg.INT_ELEMENT_1, 10, true, 100, true, 200);
support.checkWaitForValue(msg.INT_ELEMENT_1, 100, 0); // make sure our planned failure actually caused it to fail
// check transition to upper boundary causes failure, exclusive
support.maintain(msg.INT_ELEMENT_1, 100, 99, 50);
support.checkMaintainNotRangeFail(msg.INT_ELEMENT_1, 10, false, 100, false, 200);
support.checkWaitForValue(msg.INT_ELEMENT_1, 99, 0); // make sure our planned failure actually caused it to fail
// check transition to lower boundary causes failure, inclusive
support.maintain(msg.INT_ELEMENT_1, 9, 10, 50);
support.checkMaintainNotRangeFail(msg.INT_ELEMENT_1, 10, true, 100, true, 200);
support.checkWaitForValue(msg.INT_ELEMENT_1, 10, 0); // make sure our planned failure actually caused it to fail
// check transition to lower boundary causes failure, exclusive
support.maintain(msg.INT_ELEMENT_1, 10, 11, 50);
support.checkMaintainNotRangeFail(msg.INT_ELEMENT_1, 10, false, 100, false, 200);
support.checkWaitForValue(msg.INT_ELEMENT_1, 11, 0); // make sure our planned failure actually caused it to fail
}
@Test
public void testCheckList() throws InterruptedException {
TestMessage msg = new TestMessage();
support.activateMsg(msg);
support.genericTestCheckList(msg.INT_ELEMENT_1, new Integer[] {20, 40, 50, 60, 80, 100}, new Integer[] {
200,
300,
400,
500,
600});
}
@Test
public void testCheckNotInList() throws InterruptedException {
TestMessage msg = new TestMessage();
support.activateMsg(msg);
support.genericTestCheckNotList(msg.INT_ELEMENT_1, new Integer[] {20, 40, 50, 60, 80, 100}, new Integer[] {
200,
300,
400,
500,
600});
}
@Test
public void testCheckMaintainList() throws InterruptedException {
TestMessage msg = new TestMessage();
support.activateMsg(msg);
Integer[] values = {20, 40, 50, 60, 80};
support.genericTestCheckMaintainList(msg.INT_ELEMENT_1, values, 999);
}
@Test
public void testCheckPulse() throws InterruptedException {
TestMessage msg = new TestMessage();
support.activateMsg(msg);
support.setSequence(msg.INT_ELEMENT_1, new Integer[] {2, 100, 33, 100, 2, 99});
support.checkPulse(msg.INT_ELEMENT_1, 100, 99);
support.setSequence(msg.INT_ELEMENT_1, new Integer[] {100, 100, 99});
support.checkPulse(msg.INT_ELEMENT_1, 100, 99);
}
private int getMaxIntValue(IntegerElement e) {
return (1 << e.getBitLength()) - 1;
}
}