    1   /*
    2    * $Id: GStringTest.java 1924 2005-03-02 08:23:38Z jstrachan $
    3    *
    4    * Copyright 2003 (C) James Strachan and Bob Mcwhirter. All Rights Reserved.
    5    *
    6    * Redistribution and use of this software and associated documentation
    7    * ("Software"), with or without modification, are permitted provided that the
    8    * following conditions are met: 1. Redistributions of source code must retain
    9    * copyright statements and notices. Redistributions must also contain a copy
    10   * of this document. 2. Redistributions in binary form must reproduce the above
    11   * copyright notice, this list of conditions and the following disclaimer in
    12   * the documentation and/or other materials provided with the distribution. 3.
    13   * The name "groovy" must not be used to endorse or promote products derived
    14   * from this Software without prior written permission of The Codehaus. For
    15   * written permission, please contact info@codehaus.org. 4. Products derived
    16   * from this Software may not be called "groovy" nor may "groovy" appear in
    17   * their names without prior written permission of The Codehaus. "groovy" is a
    18   * registered trademark of The Codehaus. 5. Due credit should be given to The
    19   * Codehaus - http://groovy.codehaus.org/
    20   *
    21   * THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS ``AS IS'' AND ANY
    22   * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    23   * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    24   * DISCLAIMED. IN NO EVENT SHALL THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR
    25   * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    26   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
    27   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
    28   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    29   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    30   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
    31   * DAMAGE.
    32   *
    33   */
    34
    35  package groovy.lang;
    36
    37  import org.codehaus.groovy.runtime.InvokerHelper;
    38
    39  import groovy.util.GroovyTestCase;
    40
    41  /***
    42   * Tests the use of the structured Attribute type
    43   *
    44   * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
    45   * @version $Revision: 1924 $
    46   */
    47  public class GStringTest extends GroovyTestCase {
    48
    49      public void testIterateOverText() {
    50          DummyGString compString = new DummyGString(new Object[] { "James" });
    51
    52          assertArrayEquals(new String[] { "Hello ", "!" }, compString.getStrings());
    53          assertArrayEquals(new Object[] { "James" }, compString.getValues());
    54
    55          assertEquals("Hello James!", compString.toString());
    56      }
    57
    58      public void testAppendString() {
    59          DummyGString a = new DummyGString(new Object[] { "James" });
    60
    61          GString result = a.plus(" how are you?");
    62
    63          assertEquals("Hello James! how are you?", result.toString());
    64      }
    65
    66      public void testAppendString2() {
    67          DummyGString a = new DummyGString(new Object[] { "James" }, new String[] { "Hello " });
    68
    69          GString result = a.plus(" how are you?");
    70
    71          System.out.println("Found: " + result);
    72          System.out.println("Strings: " + InvokerHelper.toString(result.getStrings()));
    73          System.out.println("Values: " + InvokerHelper.toString(result.getValues()));
    74
    75          assertEquals("Hello James how are you?", result.toString());
    76      }
    77
    78      public void testAppendGString() {
    79          DummyGString a = new DummyGString(new Object[] { "James" });
    80          DummyGString b = new DummyGString(new Object[] { "Bob" });
    81
    82          GString result = a.plus(b);
    83
    84          //        System.out.println("Found: " + result);
    85          //        System.out.println("Strings: " +
    86  		// InvokerHelper.toString(result.getStrings()));
    87          //        System.out.println("Values: " +
    88  		// InvokerHelper.toString(result.getValues()));
    89
    90          assertEquals("Hello James!Hello Bob!", result.toString());
    91      }
    92
    93      public void testAppendGString2() {
    94          DummyGString a = new DummyGString(new Object[] { "James" }, new String[] { "Hello " });
    95          DummyGString b = new DummyGString(new Object[] { "Bob" }, new String[] { "Hello " });
    96
    97          GString result = a.plus(b);
    98
    99          //        System.out.println("Found: " + result);
    100         //        System.out.println("Strings: " +
    101 		// InvokerHelper.toString(result.getStrings()));
    102         //        System.out.println("Values: " +
    103 		// InvokerHelper.toString(result.getValues()));
    104
    105         assertEquals("Hello JamesHello Bob", result.toString());
    106     }
    107
    108     public void testEqualsAndHashCode() {
    109         DummyGString a = new DummyGString(new Object[] { new Integer(1)});
    110         DummyGString b = new DummyGString(new Object[] { new Long(1)});
    111         DummyGString c = new DummyGString(new Object[] { new Double(2.3)});
    112
    113         assertTrue("a == b", a.equals(b));
    114         assertEquals("hashcode a == b", a.hashCode(), b.hashCode());
    115
    116         assertFalse("a != c", a.equals(c));
    117         assertTrue("hashcode a != c", a.hashCode() != c.hashCode());
    118
    119         assertEquals("a <=> b", 0, a.compareTo(b));
    120         assertEquals("a <=> b", -1, a.compareTo(c));
    121     }
    122 }