/******************************************************************************* * Copyright (c) 2010 protos software gmbh (http://www.protos.de). * 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 *******************************************************************************/ package org.eclipse.etrice.runtime.java.messaging; import org.eclipse.etrice.runtime.java.messaging.Address; import org.eclipse.etrice.runtime.java.messaging.Message; import org.eclipse.etrice.runtime.java.messaging.MessageSeQueue; import junit.framework.TestCase; public class MessageSeQueueTest extends TestCase { public void testPushPop() { MessageSeQueue queue = new MessageSeQueue(null, "QueueName"); Message msg1 = new Message(new Address(0, 0, 0)); Message msg2 = new Message(new Address(0, 0, 0)); Message msg3 = new Message(new Address(0, 0, 0)); Message msg_received = null; // check fresh queue assertEquals(null, queue.getFirst()); assertEquals(null, queue.getLast()); // push first message queue.push(msg1); assertEquals(null, msg1.getNext()); assertEquals(msg1, queue.getFirst()); assertEquals(msg1, queue.getLast()); // push second message queue.push(msg2); assertEquals(msg2, msg1.getNext()); assertEquals(null, msg2.getNext()); assertEquals(msg1, queue.getFirst()); assertEquals(msg2, queue.getLast()); // push third message queue.push(msg3); assertEquals(msg2, msg1.getNext()); assertEquals(msg3, msg2.getNext()); assertEquals(null, msg3.getNext()); assertEquals(msg1, queue.getFirst()); assertEquals(msg3, queue.getLast()); // pop msg1 msg_received = queue.pop(); assertEquals(msg1, msg_received); assertEquals(null, msg1.getNext()); assertEquals(msg3, msg2.getNext()); assertEquals(null, msg3.getNext()); assertEquals(msg2, queue.getFirst()); assertEquals(msg3, queue.getLast()); // pop msg2 msg_received = queue.pop(); assertEquals(msg2, msg_received); assertEquals(null, msg2.getNext()); assertEquals(null, msg3.getNext()); assertEquals(msg3, queue.getFirst()); assertEquals(msg3, queue.getLast()); // pop msg3 msg_received = queue.pop(); assertEquals(msg3, msg_received); assertEquals(null, msg3.getNext()); assertEquals(null, queue.getFirst()); assertEquals(null, queue.getLast()); msg_received = queue.pop(); assertEquals(null, msg_received); } public void testSizeAndHighwatermark() { MessageSeQueue queue = new MessageSeQueue(null, "QueueName"); Message msg1 = new Message(new Address(0, 0, 0)); Message msg2 = new Message(new Address(0, 0, 0)); Message msg3 = new Message(new Address(0, 0, 0)); Message msg_received = null; assertEquals(0, queue.getSize()); assertEquals(0, queue.getHightWaterMark()); queue.push(msg1); assertEquals(1, queue.getSize()); assertEquals(1, queue.getHightWaterMark()); queue.push(msg2); assertEquals(2, queue.getSize()); assertEquals(2, queue.getHightWaterMark()); queue.push(msg3); assertEquals(3, queue.getSize()); assertEquals(3, queue.getHightWaterMark()); msg_received = queue.pop(); assertEquals(msg1, msg_received); assertEquals(2, queue.getSize()); assertEquals(3, queue.getHightWaterMark()); msg_received = queue.pop(); assertEquals(msg2, msg_received); assertEquals(1, queue.getSize()); assertEquals(3, queue.getHightWaterMark()); msg_received = queue.pop(); assertEquals(msg3, msg_received); assertEquals(0, queue.getSize()); assertEquals(3, queue.getHightWaterMark()); } }