public void EnforceTwoPartIdentifierChain()
        {
            Tokenizer testSubject = new Tokenizer();

            Assert.AreEqual(false, testSubject.EnforceTwoPartIdentifierChain);

            testSubject.EnforceTwoPartIdentifierChain = true;

            Assert.AreEqual(true, testSubject.EnforceTwoPartIdentifierChain);

            testSubject.Reset("foo.bar.baz");

            try
            {
                testSubject.GetNextAsName();
            }
            catch (HsqlDataSourceException hdse)
            {
                Assert.AreEqual(org.hsqldb.Trace.THREE_PART_IDENTIFIER, -hdse.ErrorCode);
            }

            testSubject.EnforceTwoPartIdentifierChain = false;

            testSubject.Reset("foo.\"bar\".baz.null.true.false");

            testSubject.GetNextAsName();

            Token[] expected = new Token[]
            {
                new Token("FOO",SqlTokenType.Name),
                new Token("bar",SqlTokenType.DelimitedIdentifier),
                new Token("BAZ",SqlTokenType.Name),
                new Token("NULL",SqlTokenType.Name),
                new Token("TRUE",SqlTokenType.Name),
                new Token("FALSE",SqlTokenType.Name),
            };

            int i = 0;

            foreach (Token token in testSubject.IdentifierChain)
            {
                Console.WriteLine(token);
                Console.WriteLine(expected[i]);
                Assert.AreEqual(expected[i], token);

                i++;
            }
        }
 /// <summary>
 /// Determines whether the specified <c>HsqlToken</c> equals
 /// this <c>HsqlToken</c>.
 /// </summary>
 /// <param name="token">The token to test.</param>
 /// <returns>
 /// <c>true</c> if the specified <c>HsqlToken</c> equals
 /// this <c>HsqlToken</c>; otherwise, <c>false</c>.
 /// </returns>
 public bool Equals(Token token)
 {
     return (token != null) &&
            (m_type == token.m_type) &&
            (m_value == token.m_value);
 }