11use std:: fs;
22
33use ccompiler:: prelude:: * ;
4- use number_types:: Number ;
5- use tokens_types:: TokenValue ;
64
75const PREFIX : & str = "./tests/data/" ;
86
@@ -14,22 +12,6 @@ fn test_lexer_on_file(file: &str) {
1412 let _tokens = lex_file ( & content, & mut location) . unwrap_or_display ( & [ ( path, & content) ] , "lexer" ) ;
1513}
1614
17- fn test_lexer_on_number ( content : & str , expected : Number ) {
18- let path = String :: new ( ) ;
19- let mut location = Location :: from ( path. as_str ( ) ) ;
20- let tokens = lex_file ( content, & mut location) . unwrap_or_display ( & [ ( path, content) ] , "lexer" ) ;
21- assert ! ( tokens. len( ) == 1 , "Lexer error: cut expression into 2 tokens, but only a number was expected: {content} was cut into {tokens:?}" ) ;
22- let value = tokens. first ( ) . unwrap ( ) . get_value ( ) ;
23- if let TokenValue :: Number ( nb) = value {
24- assert ! (
25- * nb == expected,
26- "Lexer error: computed wrong number: Expected: {expected:?}\n != Computed: {value:?}"
27- ) ;
28- } else {
29- panic ! ( "Lexer error: waiting for Number, but lexer returned {value:?}" )
30- }
31- }
32-
3315#[ test]
3416fn lexer_escape ( ) {
3517 test_lexer_on_file ( "escape" ) ;
@@ -44,55 +26,3 @@ fn lexer_general() {
4426fn lexer_operators ( ) {
4527 test_lexer_on_file ( "general" ) ;
4628}
47-
48- macro_rules! gen_number_test {
49- ( $( $name: ident: $input: expr => $output: expr; ) * ) => {
50- $(
51- #[ test]
52- fn $name( ) {
53- test_lexer_on_number( $input, $output)
54- }
55- ) *
56- } ;
57- }
58-
59- gen_number_test ! (
60- lexer_numbers_1: "1" => Number :: Int ( 1 ) ;
61- lexer_numbers_2: "0xf.ep+02f" => Number :: Float ( 63.5 ) ;
62- lexer_numbers_3: "1.23e+10" => Number :: Double ( 1.23e10 ) ;
63- lexer_numbers_4: "3.14159265358979323846e-2" => Number :: Double ( 0.031415926535897934 ) ;
64- lexer_numbers_5: "0x1.abc2p+4f" => Number :: Float ( 26.734863 ) ;
65- lexer_numbers_6: "0.0e-0" => Number :: Double ( 0. ) ;
66- lexer_numbers_7: "0x1.2p+3f" => Number :: Float ( 9. ) ;
67- lexer_numbers_8: "1e+1000" => Number :: Double ( f64 :: INFINITY ) ;
68- lexer_numbers_9: "1e-1000" => Number :: Double ( 0. ) ;
69- lexer_numbers_10: "0x1.23p+4" => Number :: Double ( 18.1875 ) ;
70- lexer_numbers_11: "1.23E4f" => Number :: Float ( 12300. ) ;
71- lexer_numbers_12: "9.87E-3f" => Number :: Float ( 0.00987 ) ;
72- lexer_numbers_13: "0x1.abc3p+10" => Number :: Double ( 1711.046875 ) ;
73- lexer_numbers_14: "0x10.0p+3f" => Number :: Float ( 128. ) ;
74- lexer_numbers_15: "0xA.Fp+2" => Number :: Double ( 43.75 ) ;
75- lexer_numbers_16: "0x1.1p-2" => Number :: Double ( 0.265625 ) ;
76- lexer_numbers_17: "0xF.FFFp+3" => Number :: Double ( 127.998046875 ) ;
77- lexer_numbers_18: "0b101010" => Number :: Int ( 42 ) ;
78- lexer_numbers_19: "072" => Number :: Int ( 58 ) ;
79- lexer_numbers_20: "0xA7F" => Number :: Int ( 2687 ) ;
80- lexer_numbers_21: "12345" => Number :: Int ( 12345 ) ;
81- lexer_numbers_22: "1.23e+10" => Number :: Double ( 1.23e10 ) ;
82- lexer_numbers_23: "4.56e-5" => Number :: Double ( 4.56e-5 ) ;
83- lexer_numbers_24: "7.89E-2" => Number :: Double ( 7.89e-2 ) ;
84- lexer_numbers_25: "1.23E+100" => Number :: Double ( 1.23e100 ) ;
85- lexer_numbers_26: "1.23F" => Number :: Float ( 1.23 ) ;
86- // lexer_numbers_27: "4.56L" => Number::LongDouble(4.56); // long double not supported
87- lexer_numbers_28: ".5" => Number :: Double ( 0.5 ) ;
88- lexer_numbers_29: "5." => Number :: Double ( 5. ) ;
89- lexer_numbers_30: "1e10" => Number :: Double ( 1e10 ) ;
90- lexer_numbers_31: "3.45E-2" => Number :: Double ( 3.45e-2 ) ;
91- lexer_numbers_32: "0b11111111" => Number :: Int ( 255 ) ;
92- lexer_numbers_33: "0xABC12345" => Number :: UInt ( 2881561413 ) ;
93- lexer_numbers_34: "04567U" => Number :: UInt ( 2423 ) ;
94- lexer_numbers_35: "1000000000000000LL" => Number :: LongLong ( 1000000000000000 ) ;
95- lexer_numbers_36: "123.456f" => Number :: Float ( 123.456 ) ;
96- lexer_numbers_37: "789.0123" => Number :: Double ( 789.0123 ) ;
97- lexer_numbers_38: "0.0001e5f" => Number :: Float ( 10. ) ;
98- ) ;
0 commit comments