    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;
    19
    20  import junit.framework.TestCase;
    21  import org.apache.commons.logging.Log;
    22  import org.apache.commons.logging.LogFactory;
    23  import org.codehaus.activemq.message.ActiveMQMessage;
    24  import org.codehaus.activemq.message.ActiveMQQueue;
    25  import org.codehaus.activemq.message.ActiveMQTopic;
    26
    27  import javax.jms.Connection;
    28  import javax.jms.Destination;
    29  import javax.jms.JMSException;
    30  import javax.jms.Message;
    31  import javax.jms.TextMessage;
    32
    33
    34  /***
    35   * Useful base class for unit test cases
    36   *
    37   * @version $Revision: 1.10 $
    38   */
    39  public class TestSupport extends TestCase {
    40      protected Log log = LogFactory.getLog(getClass());
    41      protected ActiveMQConnectionFactory connectionFactory;
    42      protected boolean topic = true;
    43
    44      public TestSupport() {
    45          super();
    46      }
    47
    48      public TestSupport(String name) {
    49          super(name);
    50      }
    51
    52      protected ActiveMQMessage createMessage() {
    53          return new ActiveMQMessage();
    54      }
    55
    56      protected Destination createDestination(String subject) {
    57          if (topic) {
    58              return new ActiveMQTopic(subject);
    59          }
    60          else {
    61              return new ActiveMQQueue(subject);
    62          }
    63      }
    64
    65      /***
    66       * @param messsage
    67       * @param firstSet
    68       * @param secondSet
    69       */
    70      protected void assertTextMessagesEqual(String messsage, Message[] firstSet, Message[] secondSet) throws JMSException {
    71          assertEquals("Message count does not match: " + messsage, firstSet.length, secondSet.length);
    72          for (int i = 0; i < secondSet.length; i++) {
    73              TextMessage m1 = (TextMessage) firstSet[i];
    74              TextMessage m2 = (TextMessage) secondSet[i];
    75              assertFalse("Message " + (i + 1) + " did not match : " + messsage + ": expected {" + m1 + "}, but was {" + m2 + "}", m1 == null ^ m2 == null);
    76              assertEquals("Message " + (i + 1) + " did not match: " + messsage + ": expected {" + m1 + "}, but was {" + m2 + "}", m1.getText(), m2.getText());
    77          }
    78      }
    79
    80      protected ActiveMQConnectionFactory createConnectionFactory() throws Exception {
    81          return new ActiveMQConnectionFactory("vm://localhost");
    82      }
    83
    84      /***
    85       * Factory method to create a new connection
    86       */
    87      protected Connection createConnection() throws Exception {
    88          return getConnectionFactory().createConnection();
    89      }
    90
    91      public ActiveMQConnectionFactory getConnectionFactory() throws Exception {
    92          if (connectionFactory == null) {
    93              connectionFactory = createConnectionFactory();
    94              assertTrue("Should have created a connection factory!", connectionFactory != null);
    95          }
    96          return connectionFactory;
    97      }
    98
    99      protected String getConsumerSubject() {
    100         return getSubject();
    101     }
    102
    103     protected String getProducerSubject() {
    104         return getSubject();
    105     }
    106
    107     protected String getSubject() {
    108         return getClass().getName() + "." + getName();
    109     }
    110 }