[dna-commits] DNA SVN: r1254 - in trunk/dna-common/src: test/java/org/jboss/dna/common/text and 1 other directory.

dna-commits at lists.jboss.org dna-commits at lists.jboss.org
Wed Sep 23 14:56:31 EDT 2009


Author: rhauch
Date: 2009-09-23 14:56:31 -0400 (Wed, 23 Sep 2009)
New Revision: 1254

Modified:
   trunk/dna-common/src/main/java/org/jboss/dna/common/text/TokenStream.java
   trunk/dna-common/src/test/java/org/jboss/dna/common/text/TokenStreamTest.java
Log:
DNA-IllegalStateException calling TokenStream.canConsume(String str) after consuming all tokens via canConsume(String[])

Fix to ensure that the TokenStream.canConsume(...) methods that take multiple values or types properly sets the close state if it reaches the end of the tokens.

Modified: trunk/dna-common/src/main/java/org/jboss/dna/common/text/TokenStream.java
===================================================================
--- trunk/dna-common/src/main/java/org/jboss/dna/common/text/TokenStream.java	2009-09-22 18:27:32 UTC (rev 1253)
+++ trunk/dna-common/src/main/java/org/jboss/dna/common/text/TokenStream.java	2009-09-23 18:56:31 UTC (rev 1254)
@@ -754,6 +754,7 @@
         }
         this.tokenIterator = iter;
         this.currentToken = tokenIterator.hasNext() ? tokenIterator.next() : null;
+        this.completed = this.currentToken == null;
         return true;
     }
 
@@ -794,6 +795,7 @@
         }
         this.tokenIterator = iter;
         this.currentToken = tokenIterator.hasNext() ? tokenIterator.next() : null;
+        this.completed = this.currentToken == null;
         return true;
     }
 
@@ -834,6 +836,7 @@
         }
         this.tokenIterator = iter;
         this.currentToken = tokenIterator.hasNext() ? tokenIterator.next() : null;
+        this.completed = this.currentToken == null;
         return true;
     }
 

Modified: trunk/dna-common/src/test/java/org/jboss/dna/common/text/TokenStreamTest.java
===================================================================
--- trunk/dna-common/src/test/java/org/jboss/dna/common/text/TokenStreamTest.java	2009-09-22 18:27:32 UTC (rev 1253)
+++ trunk/dna-common/src/test/java/org/jboss/dna/common/text/TokenStreamTest.java	2009-09-23 18:56:31 UTC (rev 1254)
@@ -23,8 +23,12 @@
  */
 package org.jboss.dna.common.text;
 
+import java.util.Arrays;
+
 import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.assertThat;
+
+import org.jboss.dna.common.text.TokenStream.BasicTokenizer;
 import org.jboss.dna.common.text.TokenStream.Tokenizer;
 import org.junit.Before;
 import org.junit.Test;
@@ -354,4 +358,37 @@
         assertThat(tokens.canConsume("SELECT", "ALL", "COLUMNS", "FROM", TokenStream.ANY_VALUE, "TABLE"), is(true));
         assertThat(tokens.hasNext(), is(false));
     }
+    
+    @Test
+    public void shouldCanConsumeSingleAfterTokensCompleteFromCanConsumeStringList() {
+        makeCaseInsensitive();
+        // consume ALL the tokens using canConsume()
+        tokens.canConsume("SELECT", "ALL", "COLUMNS", "FROM", "THIS", "TABLE");
+        // try to canConsume() single word
+        assertThat(tokens.canConsume("SELECT"), is(false));
+        assertThat(tokens.canConsume(TokenStream.ANY_VALUE), is(false));
+        assertThat(tokens.canConsume(BasicTokenizer.SYMBOL), is(false));
+    }
+    
+    @Test
+    public void shouldCanConsumeStringAfterTokensCompleteFromCanConsumeStringArray() {
+        makeCaseInsensitive();
+        // consume ALL the tokens using canConsume()
+        tokens.canConsume(new String[] {"SELECT", "ALL", "COLUMNS", "FROM", "THIS", "TABLE"});
+        // try to canConsume() single word
+        assertThat(tokens.canConsume("SELECT"), is(false));
+        assertThat(tokens.canConsume(TokenStream.ANY_VALUE), is(false));
+        assertThat(tokens.canConsume(BasicTokenizer.SYMBOL), is(false));
+    }
+    
+    @Test
+    public void shouldCanConsumeStringAfterTokensCompleteFromCanConsumeStringIterator() {
+        makeCaseInsensitive();       
+        // consume ALL the tokens using canConsume()
+        tokens.canConsume(Arrays.asList(new String[] {"SELECT", "ALL", "COLUMNS", "FROM", "THIS", "TABLE"}));
+        // try to canConsume() single word
+        assertThat(tokens.canConsume("SELECT"), is(false));
+        assertThat(tokens.canConsume(TokenStream.ANY_VALUE), is(false));
+        assertThat(tokens.canConsume(BasicTokenizer.SYMBOL), is(false));
+    }
 }



More information about the dna-commits mailing list