@@ -824,7 +824,47 @@ mod tests {
824824 Token :: Whitespace ( Whitespace :: Space ) ,
825825 Token :: make_word( "three" , None ) ,
826826 ] ;
827+ compare ( expected, tokens) ;
828+ }
829+
830+ #[ test]
831+ fn tokenize_logical_xor ( ) {
832+ let sql =
833+ String :: from ( "SELECT true XOR true, false XOR false, true XOR false, false XOR true" ) ;
834+ let dialect = GenericDialect { } ;
835+ let mut tokenizer = Tokenizer :: new ( & dialect, & sql) ;
836+ let tokens = tokenizer. tokenize ( ) . unwrap ( ) ;
827837
838+ let expected = vec ! [
839+ Token :: make_keyword( "SELECT" ) ,
840+ Token :: Whitespace ( Whitespace :: Space ) ,
841+ Token :: make_keyword( "true" ) ,
842+ Token :: Whitespace ( Whitespace :: Space ) ,
843+ Token :: make_keyword( "XOR" ) ,
844+ Token :: Whitespace ( Whitespace :: Space ) ,
845+ Token :: make_keyword( "true" ) ,
846+ Token :: Comma ,
847+ Token :: Whitespace ( Whitespace :: Space ) ,
848+ Token :: make_keyword( "false" ) ,
849+ Token :: Whitespace ( Whitespace :: Space ) ,
850+ Token :: make_keyword( "XOR" ) ,
851+ Token :: Whitespace ( Whitespace :: Space ) ,
852+ Token :: make_keyword( "false" ) ,
853+ Token :: Comma ,
854+ Token :: Whitespace ( Whitespace :: Space ) ,
855+ Token :: make_keyword( "true" ) ,
856+ Token :: Whitespace ( Whitespace :: Space ) ,
857+ Token :: make_keyword( "XOR" ) ,
858+ Token :: Whitespace ( Whitespace :: Space ) ,
859+ Token :: make_keyword( "false" ) ,
860+ Token :: Comma ,
861+ Token :: Whitespace ( Whitespace :: Space ) ,
862+ Token :: make_keyword( "false" ) ,
863+ Token :: Whitespace ( Whitespace :: Space ) ,
864+ Token :: make_keyword( "XOR" ) ,
865+ Token :: Whitespace ( Whitespace :: Space ) ,
866+ Token :: make_keyword( "true" ) ,
867+ ] ;
828868 compare ( expected, tokens) ;
829869 }
830870
0 commit comments