public void GetThis()
        {
            Tokenizer testSubject = new Tokenizer("create table test(id int, \"val\" varchar(12));");

            Assert.AreEqual(Token.ValueFor.CREATE, testSubject.GetThis(Token.ValueFor.CREATE));
            Assert.AreEqual(Token.ValueFor.TABLE, testSubject.GetThis(Token.ValueFor.TABLE));

            try
            {
                string actual = testSubject.GetThis("test");

                Assert.Fail("successful invocation of GetThis(string) with non-match value");
            }
            catch (Exception ex)
            {
                Assert.IsInstanceOfType(typeof(HsqlDataSourceException), ex);
            }

            Assert.That(testSubject.WasThis("TEST"));
            Assert.That(testSubject.TokenType == SqlTokenType.Name);

            Assert.AreEqual(Token.ValueFor.OPENBRACKET, testSubject.GetThis(Token.ValueFor.OPENBRACKET));
            Assert.AreEqual("ID", testSubject.GetThis("ID"));
            Assert.AreEqual(Token.ValueFor.INT, testSubject.GetThis(Token.ValueFor.INT));
            Assert.AreEqual(Token.ValueFor.COMMA, testSubject.GetThis(Token.ValueFor.COMMA));

            try
            {
                Assert.AreEqual("val", testSubject.GetThis("val"));
            }
            catch (Exception ex)
            {
                Assert.IsInstanceOfType(typeof(HsqlDataSourceException), ex);
            }
            Assert.That(testSubject.WasDelimitedIdentifier);
            Assert.AreEqual("\"val\"", testSubject.NormalizedToken);

            Assert.AreEqual(Token.ValueFor.VARCHAR, testSubject.GetThis(Token.ValueFor.VARCHAR));
            Assert.AreEqual(Token.ValueFor.OPENBRACKET, testSubject.GetThis(Token.ValueFor.OPENBRACKET));
            Assert.AreEqual("12", testSubject.GetThis("12"));
            Assert.That(testSubject.TokenType == SqlTokenType.IntegerLiteral);
            Assert.That(testSubject.LiteralValueDataType == HsqlProviderType.Integer);
            Assert.AreEqual(Token.ValueFor.CLOSEBRACKET, testSubject.GetThis(Token.ValueFor.CLOSEBRACKET));
            Assert.AreEqual(Token.ValueFor.CLOSEBRACKET, testSubject.GetThis(Token.ValueFor.CLOSEBRACKET));
            Assert.AreEqual(Token.ValueFor.SEMICOLON, testSubject.GetThis(Token.ValueFor.SEMICOLON));
        }
        public void WasThis()
        {
            Tokenizer testSubject = new Tokenizer("foo bar \"baz\" foo.bar");

            testSubject.GetThis("FOO");
            testSubject.GetThis("BAR");

            Assert.AreEqual(true, testSubject.WasThis("BAR"));
            Assert.AreEqual(false, testSubject.WasThis("bar"));
            Assert.AreEqual(false, testSubject.WasThis(" BAR "));
            Assert.AreEqual(false, testSubject.WasThis("NOTBAR"));

            string name = testSubject.GetNextAsName();

            // not for use with delimited identifier.

            Assert.AreEqual(false, testSubject.WasThis("baz"));
            Assert.AreEqual(false, testSubject.WasThis("BAZ"));
            Assert.AreEqual(false, testSubject.WasThis(" baz "));
            Assert.AreEqual(false, testSubject.WasThis("notbaz"));

            string s = testSubject.GetNextAsString();

            // not for use with identifier chain.

            Assert.AreEqual(false, testSubject.WasThis("bar"));
            Assert.AreEqual(false, testSubject.WasThis("BAR"));
            Assert.AreEqual(false, testSubject.WasThis(" bar "));
            Assert.AreEqual(false, testSubject.WasThis("notbar"));
        }