KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > edu > rice > cs > drjava > model > definitions > reducedmodel > MixedQuoteTest


1 /*BEGIN_COPYRIGHT_BLOCK
2  *
3  * This file is part of DrJava. Download the current version of this project from http://www.drjava.org/
4  * or http://sourceforge.net/projects/drjava/
5  *
6  * DrJava Open Source License
7  *
8  * Copyright (C) 2001-2005 JavaPLT group at Rice University (javaplt@rice.edu). All rights reserved.
9  *
10  * Developed by: Java Programming Languages Team, Rice University, http://www.cs.rice.edu/~javaplt/
11  *
12  * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
13  * documentation files (the "Software"), to deal with the Software without restriction, including without limitation
14  * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and
15  * to permit persons to whom the Software is furnished to do so, subject to the following conditions:
16  *
17  * - Redistributions of source code must retain the above copyright notice, this list of conditions and the
18  * following disclaimers.
19  * - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
20  * following disclaimers in the documentation and/or other materials provided with the distribution.
21  * - Neither the names of DrJava, the JavaPLT, Rice University, nor the names of its contributors may be used to
22  * endorse or promote products derived from this Software without specific prior written permission.
23  * - Products derived from this software may not be called "DrJava" nor use the term "DrJava" as part of their
24  * names without prior written permission from the JavaPLT group. For permission, write to javaplt@rice.edu.
25  *
26  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
27  * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28  * CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
29  * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
30  * WITH THE SOFTWARE.
31  *
32  *END_COPYRIGHT_BLOCK*/

33
34 package edu.rice.cs.drjava.model.definitions.reducedmodel;
35
36 import junit.framework.*;
37
38 /**
39  * Tests the interaction between double and single quotes and comments
40  * @version $Id: MixedQuoteTest.java 3553 2006-02-20 21:22:09Z rcartwright $
41  */

42 public final class MixedQuoteTest extends BraceReductionTestCase
43   implements ReducedModelStates
44 {
45   protected ReducedModelControl _model;
46
47   /**
48    * Initializes the reduced models used in the tests.
49    */

50   protected void setUp() throws Exception JavaDoc {
51     super.setUp();
52     _model = new ReducedModelControl();
53   }
54
55   /**
56    * Creates a test suite for JUnit to use.
57    * @return a test suite for JUnit
58    */

59   public static Test suite() {
60     return new TestSuite(MixedQuoteTest.class);
61   }
62
63   /**
64    * Convenience function to insert a number of non-special characters into a reduced model.
65    * @param model the model being modified
66    * @param size the number of characters being inserted
67    */

68   protected void insertGap(BraceReduction model, int size) {
69     for (int i = 0; i < size; i++) {
70       model.insertChar(' ');
71     }
72   }
73
74   /**
75    * Tests how a single quote can eclipse the effects of a double quote by inserting
76    * the single quote before the double quote. This test caught an error with
77    * getStateAtCurrent(): the check for double quote status checks if there is a double
78    * quote immediately preceding, but it didn't make sure the double quote was FREE.
79    * I fixed that, so now the test passes.
80    */

81   public void testSingleEclipsesDouble() {
82     _model.insertChar('\"');
83     assertEquals("#0.0", INSIDE_DOUBLE_QUOTE, _model.getStateAtCurrent());
84     _model.move(-1);
85     assertEquals("#0.1", FREE, stateOfCurrentToken(_model));
86     _model.move(1);
87     _model.insertChar('A');
88     _model.move(-1);
89     assertEquals("#1.0", INSIDE_DOUBLE_QUOTE, _model.getStateAtCurrent());
90     assertEquals("#1.1", INSIDE_DOUBLE_QUOTE, stateOfCurrentToken(_model));
91     assertTrue("#1.2", _model.currentToken().isGap());
92     _model.move(-1);
93     _model.insertChar('\'');
94     assertEquals("#2.0", INSIDE_SINGLE_QUOTE, _model.getStateAtCurrent());
95     assertEquals("#2.1", INSIDE_SINGLE_QUOTE, stateOfCurrentToken(_model));
96     assertEquals("#2.2", "\"", _model.currentToken().getType());
97     _model.move(1);
98     assertEquals("#3.0", INSIDE_SINGLE_QUOTE, _model.getStateAtCurrent());
99     assertEquals("#3.1", INSIDE_SINGLE_QUOTE, stateOfCurrentToken(_model));
100     assertTrue("#3.2", _model.currentToken().isGap());
101   }
102
103   /**
104    * Tests how a double quote can eclipse the effects of a single quote by inserting
105    * the double quote before the single quote.
106    */

107   public void testDoubleEclipsesSingle() {
108     _model.insertChar('\'');
109     assertEquals("#0.0", INSIDE_SINGLE_QUOTE, _model.getStateAtCurrent());
110     _model.move(-1);
111     assertEquals("#0.1", FREE, stateOfCurrentToken(_model));
112     _model.move(1);
113     _model.insertChar('A');
114     _model.move(-1);
115     assertEquals("#1.0", INSIDE_SINGLE_QUOTE, _model.getStateAtCurrent());
116     assertEquals("#1.1", INSIDE_SINGLE_QUOTE, stateOfCurrentToken(_model));
117     assertTrue("#1.2", _model.currentToken().isGap());
118     _model.move(-1);
119     _model.insertChar('\"');
120     assertEquals("#2.0", INSIDE_DOUBLE_QUOTE, _model.getStateAtCurrent());
121     assertEquals("#2.1", INSIDE_DOUBLE_QUOTE, stateOfCurrentToken(_model));
122     assertEquals("#2.2", "\'", _model.currentToken().getType());
123     _model.move(1);
124     assertEquals("#3.0", INSIDE_DOUBLE_QUOTE, _model.getStateAtCurrent());
125     assertEquals("#3.1", INSIDE_DOUBLE_QUOTE, stateOfCurrentToken(_model));
126     assertTrue("#3.2", _model.currentToken().isGap());
127   }
128 }
129
Popular Tags