@@ -258,6 +258,18 @@ fn string_errors() {
258
258
Spanning :: zero_width(
259
259
& SourcePosition :: new( 6 , 0 , 6 ) ,
260
260
LexerError :: UnknownEscapeSequence ( "\\ uXXXF" . to_owned( ) ) ) ) ;
261
+
262
+ assert_eq ! (
263
+ tokenize_error( r#""unterminated in string \""# ) ,
264
+ Spanning :: zero_width(
265
+ & SourcePosition :: new( 26 , 0 , 26 ) ,
266
+ LexerError :: UnterminatedString ) ) ;
267
+
268
+ assert_eq ! (
269
+ tokenize_error( r#""unterminated \"# ) ,
270
+ Spanning :: zero_width(
271
+ & SourcePosition :: new( 15 , 0 , 15 ) ,
272
+ LexerError :: UnterminatedString ) ) ;
261
273
}
262
274
263
275
#[ test]
@@ -276,6 +288,13 @@ fn numbers() {
276
288
& SourcePosition :: new( 5 , 0 , 5 ) ,
277
289
Token :: Float ( 4.123 ) ) ) ;
278
290
291
+ assert_eq ! (
292
+ tokenize_single( "4.0" ) ,
293
+ Spanning :: start_end(
294
+ & SourcePosition :: new( 0 , 0 , 0 ) ,
295
+ & SourcePosition :: new( 3 , 0 , 3 ) ,
296
+ Token :: Float ( 4.0 ) ) ) ;
297
+
279
298
assert_eq ! (
280
299
tokenize_single( "-4" ) ,
281
300
Spanning :: start_end(
@@ -534,3 +553,45 @@ fn punctuation_error() {
534
553
& SourcePosition :: new( 0 , 0 , 0 ) ,
535
554
LexerError :: UnknownCharacter ( '\u{200b}' ) ) ) ;
536
555
}
556
+
557
+ #[ test]
558
+ fn display ( ) {
559
+ assert_eq ! (
560
+ format!( "{}" , Token :: Name ( "identifier" ) ) ,
561
+ "identifier"
562
+ ) ;
563
+
564
+ assert_eq ! (
565
+ format!( "{}" , Token :: Int ( 123 ) ) ,
566
+ "123"
567
+ ) ;
568
+
569
+ assert_eq ! (
570
+ format!( "{}" , Token :: Float ( 4.123 ) ) ,
571
+ "4.123"
572
+ ) ;
573
+
574
+ assert_eq ! (
575
+ format!( "{}" , Token :: String ( "some string" . to_owned( ) ) ) ,
576
+ "\" some string\" "
577
+ ) ;
578
+
579
+ assert_eq ! (
580
+ format!( "{}" , Token :: String ( "string with \\ escape and \" quote" . to_owned( ) ) ) ,
581
+ "\" string with \\ \\ escape and \\ \" quote\" "
582
+ ) ;
583
+
584
+ assert_eq ! ( format!( "{}" , Token :: ExclamationMark ) , "!" ) ;
585
+ assert_eq ! ( format!( "{}" , Token :: Dollar ) , "$" ) ;
586
+ assert_eq ! ( format!( "{}" , Token :: ParenOpen ) , "(" ) ;
587
+ assert_eq ! ( format!( "{}" , Token :: ParenClose ) , ")" ) ;
588
+ assert_eq ! ( format!( "{}" , Token :: BracketOpen ) , "[" ) ;
589
+ assert_eq ! ( format!( "{}" , Token :: BracketClose ) , "]" ) ;
590
+ assert_eq ! ( format!( "{}" , Token :: CurlyOpen ) , "{" ) ;
591
+ assert_eq ! ( format!( "{}" , Token :: CurlyClose ) , "}" ) ;
592
+ assert_eq ! ( format!( "{}" , Token :: Ellipsis ) , "..." ) ;
593
+ assert_eq ! ( format!( "{}" , Token :: Colon ) , ":" ) ;
594
+ assert_eq ! ( format!( "{}" , Token :: Equals ) , "=" ) ;
595
+ assert_eq ! ( format!( "{}" , Token :: At ) , "@" ) ;
596
+ assert_eq ! ( format!( "{}" , Token :: Pipe ) , "|" ) ;
597
+ }
0 commit comments