use myc::ast::nodes::SyntaxKind; use myc::ast::parser::Parser; use myc::ast::types::Value; #[test] fn test_parse_integer_constant() { let source = "123"; let mut parser = Parser::new(source); let ast = parser.parse_expression(); if let SyntaxKind::Constant(Value::Int(val)) = ast.kind { assert_eq!(val, 123); } else { panic!("Expected Integer constant, got {:?}", ast.kind); } } #[test] fn test_parse_negative_integer() { let source = "-42"; let mut parser = Parser::new(source); let ast = parser.parse_expression(); if let SyntaxKind::Constant(Value::Int(val)) = ast.kind { assert_eq!(val, -42); } else { panic!("Expected Integer constant, got {:?}", ast.kind); } } #[test] fn test_parse_float_constant() { let source = "123.45"; let mut parser = Parser::new(source); let ast = parser.parse_expression(); if let SyntaxKind::Constant(Value::Float(val)) = ast.kind { assert_eq!(val, 123.45); } else { panic!("Expected Float constant, got {:?}", ast.kind); } } #[test] fn test_parse_negative_float() { let source = "-10.5"; let mut parser = Parser::new(source); let ast = parser.parse_expression(); if let SyntaxKind::Constant(Value::Float(val)) = ast.kind { assert_eq!(val, -10.5); } else { panic!("Expected Float constant, got {:?}", ast.kind); } }