1 /***
2 *
3 * Copyright 2004 Protique Ltd
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 **/
18 package org.codehaus.activemq.message;
19
20 import junit.framework.TestCase;
21 import junit.textui.TestRunner;
22
23 import java.util.List;
24
25 public class ActiveMQDestinationTest extends TestCase {
26 ActiveMQDestination topic1 = new ActiveMQTopic("FOO.BAR");
27 ActiveMQDestination topic2 = new ActiveMQTopic("FOO.XXX");
28 ActiveMQDestination topic3 = new ActiveMQTopic("FOO.BAR");
29 ActiveMQDestination topic4 = new ActiveMQTopic(null);
30
31 ActiveMQDestination queue1 = new ActiveMQQueue("FOO.BAR");
32 ActiveMQDestination queue2 = new ActiveMQQueue("FOO.XXX");
33 ActiveMQDestination queue3 = new ActiveMQQueue("FOO.BAR");
34 ActiveMQDestination queue4 = new ActiveMQQueue(null);
35
36
37 public static void main(String[] args) {
38 TestRunner.run(ActiveMQDestinationTest.class);
39 }
40
41 public void testCompareTopics() {
42 assertCompareTo(topic1, topic2, -1);
43 assertCompareTo(topic2, topic1, 1);
44 assertCompareTo(topic1, topic3, 0);
45 assertCompareTo(topic4, topic1, -1);
46 assertCompareTo(topic1, topic4, 1);
47 }
48
49 public void testCompareQueues() {
50 assertCompareTo(queue1, queue2, -1);
51 assertCompareTo(queue2, queue1, 1);
52 assertCompareTo(queue1, queue3, 0);
53 assertCompareTo(queue4, queue1, -1);
54 assertCompareTo(queue1, queue4, 1);
55 }
56
57 public void testCompareQueuesAndTopics() {
58 assertCompareTo(topic1, queue1, 1);
59 assertCompareTo(queue1, topic1, -1);
60 assertCompareTo(topic1, queue2, -1);
61 assertCompareTo(queue2, topic1, 1);
62 }
63
64 public void testGetClientID() {
65 String clientID = "TestClientId";
66 String temp = ActiveMQDestination.createTemporaryName(clientID);
67 ActiveMQDestination tempDest = new ActiveMQTemporaryTopic(temp);
68 assertTrue(ActiveMQDestination.getClientId(tempDest).equals(clientID));
69 }
70
71 public void testCompositeQueues() {
72 ActiveMQDestination destination = new ActiveMQQueue("FOO.BAR,COM.ACME.WHATNOT,FOO.>");
73 assertTrue(destination.isComposite());
74
75 List destinations = destination.getChildDestinations();
76 assertEquals("Size is wrong", 3, destinations.size());
77
78 assertEquals(new ActiveMQQueue("FOO.BAR"), destinations.get(0));
79 assertEquals(new ActiveMQQueue("COM.ACME.WHATNOT"), destinations.get(1));
80 assertEquals(new ActiveMQQueue("FOO.>"), destinations.get(2));
81
82 }
83
84 public void testCompositeQueueWithChildTopic() {
85 ActiveMQDestination destination = new ActiveMQQueue("FOO.BAR,topic://COM.ACME.WHATNOT,FOO.>");
86 assertTrue(destination.isComposite());
87
88 List destinations = destination.getChildDestinations();
89 assertEquals("Size is wrong", 3, destinations.size());
90
91 assertEquals(new ActiveMQQueue("FOO.BAR"), destinations.get(0));
92 assertEquals(new ActiveMQTopic("COM.ACME.WHATNOT"), destinations.get(1));
93 assertEquals(new ActiveMQQueue("FOO.>"), destinations.get(2));
94
95 }
96
97 public void testCompositeTopics() {
98 ActiveMQDestination destination = new ActiveMQTopic("FOO.BAR,COM.ACME.WHATNOT,FOO.>");
99 assertTrue(destination.isComposite());
100
101 List destinations = destination.getChildDestinations();
102 assertEquals("Size is wrong", 3, destinations.size());
103
104 assertEquals(new ActiveMQTopic("FOO.BAR"), destinations.get(0));
105 assertEquals(new ActiveMQTopic("COM.ACME.WHATNOT"), destinations.get(1));
106 assertEquals(new ActiveMQTopic("FOO.>"), destinations.get(2));
107
108 }
109
110 public void testCompositeTopicsWithChildQueue() {
111 ActiveMQDestination destination = new ActiveMQTopic("queue://FOO.BAR,COM.ACME.WHATNOT,queue://FOO.>");
112 assertTrue(destination.isComposite());
113
114 List destinations = destination.getChildDestinations();
115 assertEquals("Size is wrong", 3, destinations.size());
116
117 assertEquals(new ActiveMQQueue("FOO.BAR"), destinations.get(0));
118 assertEquals(new ActiveMQTopic("COM.ACME.WHATNOT"), destinations.get(1));
119 assertEquals(new ActiveMQQueue("FOO.>"), destinations.get(2));
120
121 }
122
123 public void testNormalDestinationsAreNotComposite() {
124 ActiveMQDestination destination = new ActiveMQQueue("FOO");
125 assertTrue(!destination.isComposite());
126
127 destination = new ActiveMQTopic("FOO");
128 assertTrue(!destination.isComposite());
129
130 System.out.println("Composite queues: " + destination.getChildDestinations());
131 }
132
133 protected void assertCompareTo(ActiveMQDestination dest1, ActiveMQDestination dest2, int expected) {
134 int value = dest1.compareTo(dest2);
135 String message = "Comparsing: " + dest1 + " to: " + dest2 + " found value: " + value + " expected: " + expected;
136 String hashCodeMessage = "HashCode for: " + dest1 + " is " + dest1.hashCode() + " for: " + dest2 + " is " + dest2.hashCode();
137
138
139 switch (expected) {
140 case 0:
141 assertEquals(message, 0, value);
142 assertEquals(hashCodeMessage, dest1.hashCode(), dest2.hashCode());
143 break;
144 case 1:
145 assertTrue(message, value > 0);
146 assertTrue(hashCodeMessage, dest1.hashCode() != dest2.hashCode());
147 break;
148 default:
149 assertTrue(message, value < 0);
150 assertTrue(hashCodeMessage, dest1.hashCode() != dest2.hashCode());
151
152 }
153 }
154
155 }