From ac8a0a2d65f07f4c24821c8b3170fa3363f294da Mon Sep 17 00:00:00 2001 From: Martin Ritchie Date: Thu, 11 Oct 2007 11:24:36 +0000 Subject: QPID-635 Added a unit test and implemented the equals() method on BlockingMethodFrameListener and SpecificMethodFrameListener. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2.1@583775 13f79535-47bb-0310-9956-ffa450edef68 --- .../protocol/BlockingMethodFrameListener.java | 15 +++++ .../listener/SpecificMethodFrameListener.java | 16 +++++ .../client/SpecificMethodFrameListenerTest.java | 71 ++++++++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 java/client/src/test/java/org/apache/qpid/client/SpecificMethodFrameListenerTest.java diff --git a/java/client/src/main/java/org/apache/qpid/client/protocol/BlockingMethodFrameListener.java b/java/client/src/main/java/org/apache/qpid/client/protocol/BlockingMethodFrameListener.java index 0c59188de1..1badbb601c 100644 --- a/java/client/src/main/java/org/apache/qpid/client/protocol/BlockingMethodFrameListener.java +++ b/java/client/src/main/java/org/apache/qpid/client/protocol/BlockingMethodFrameListener.java @@ -293,4 +293,19 @@ public abstract class BlockingMethodFrameListener implements AMQMethodListener _lock.unlock(); } } + + public boolean equals(Object o) + { + + if (o instanceof BlockingMethodFrameListener) + { + BlockingMethodFrameListener other = (BlockingMethodFrameListener) o; + + return _channelId == other._channelId; + } + + return false; + } + + } diff --git a/java/client/src/main/java/org/apache/qpid/client/state/listener/SpecificMethodFrameListener.java b/java/client/src/main/java/org/apache/qpid/client/state/listener/SpecificMethodFrameListener.java index 623591e0b6..4a4f4a0a38 100644 --- a/java/client/src/main/java/org/apache/qpid/client/state/listener/SpecificMethodFrameListener.java +++ b/java/client/src/main/java/org/apache/qpid/client/state/listener/SpecificMethodFrameListener.java @@ -36,6 +36,22 @@ public class SpecificMethodFrameListener extends BlockingMethodFrameListener public boolean processMethod(int channelId, AMQMethodBody frame) //throws AMQException { + + //equiv to: (frame instanceof _expectedClass) return _expectedClass.isInstance(frame); } + + public boolean equals(Object o) + { + if (o instanceof SpecificMethodFrameListener) + { + SpecificMethodFrameListener other = (SpecificMethodFrameListener) o; + + // here we need to check if the two classes are the same. + return (_channelId == other._channelId) && (_expectedClass.equals(other._expectedClass)); + } + + return false; + } + } diff --git a/java/client/src/test/java/org/apache/qpid/client/SpecificMethodFrameListenerTest.java b/java/client/src/test/java/org/apache/qpid/client/SpecificMethodFrameListenerTest.java new file mode 100644 index 0000000000..4cffcecf8a --- /dev/null +++ b/java/client/src/test/java/org/apache/qpid/client/SpecificMethodFrameListenerTest.java @@ -0,0 +1,71 @@ +package org.apache.qpid.framing; + +import junit.framework.TestCase; +import org.apache.qpid.client.state.listener.SpecificMethodFrameListener; +import org.apache.mina.common.ByteBuffer; + +/* +* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +* +*/ + +public class SpecificMethodFrameListenerTest extends TestCase +{ + + SpecificMethodFrameListener close1a = new SpecificMethodFrameListener(1, ChannelCloseOkBody.class); + SpecificMethodFrameListener close1b = new SpecificMethodFrameListener(1, ChannelCloseOkBody.class); + SpecificMethodFrameListener close2 = new SpecificMethodFrameListener(2, ChannelCloseOkBody.class); + SpecificMethodFrameListener open1a = new SpecificMethodFrameListener(1, ChannelOpenOkBody.class); + SpecificMethodFrameListener open1b = new SpecificMethodFrameListener(1, ChannelOpenOkBody.class); + + public void testEquals() + { + //Check that the the same objects are equal + assertEquals("ChannelCloseOKBody a should equal a", close1a, close1a); + assertEquals("ChannelOpenOkBody a should equal a", open1a, open1a); + + //check that the same values in differnt objects are equal + assertEquals("ChannelCloseOKBody b should equal a", close1b, close1a); + assertEquals("ChannelCloseOKBody a should equal b", close1a, close1b); + assertEquals("ChannelOpenOkBody a should equal b", open1a, open1b); + assertEquals("ChannelOpenOkBody a should equal b", open1a, open1b); + + //Chec that different values fail + //Different channels + assertFalse("ChannelCloseOKBody channel 1 should NOT equal channel 2", close1a.equals(close2)); + assertFalse("ChannelCloseOKBody channel 1 should NOT equal channel 2", close2.equals(close1a)); + + //Different Bodies + assertFalse("ChannelCloseOKBody should not equal ChannelOpenOkBody", close1a.equals(open1a)); + assertFalse("ChannelOpenOkBody should not equal ChannelCloseOKBody", open1a.equals(close1a)); + } + + public void testProcessMethod() throws AMQFrameDecodingException + { + ChannelCloseOkBody ccob = (ChannelCloseOkBody) ChannelCloseOkBody.getFactory().newInstance((byte) 8, (byte) 0, ByteBuffer.allocate(0), 0); + ChannelOpenOkBody coob = (ChannelOpenOkBody) ChannelOpenOkBody.getFactory().newInstance((byte) 8, (byte) 0, ByteBuffer.allocate(0), 0); + + assertTrue("This SpecificMethodFrameListener should process a ChannelCloseOkBody", close1a.processMethod(1, ccob)); + assertFalse("This SpecificMethodFrameListener should NOT process a ChannelOpenOkBody", close1a.processMethod(1, coob)); + + + + + } +} -- cgit v1.2.1