Advertisement
HTG_YT

parser_test.rs

Sep 6th, 2020
1,999
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.46 KB | None | 0 0
  1. #[test]
  2. fn parse_class() {
  3.     let code = "\
  4.                class Car {\n\
  5.                string name;\n\
  6.                Car new(string name);\n\
  7.                void bar(int i);\n\
  8.                }";
  9.  
  10.     let mut parser = Parser::new("", code);
  11.  
  12.     for lexeme in &parser.lexemes {
  13.         println!("{}", lexeme)
  14.     }
  15.  
  16.     let class = parser.parse_class(None).unwrap();
  17.  
  18.     assert_eq!(
  19.         class,
  20.         Class::new(
  21.             LexemeLocation::from(1, 0),
  22.             None,
  23.             vec![],
  24.             "Car",
  25.             vec![],
  26.             vec![
  27.                 ClassMember::Field(Field::new(
  28.                     LexemeLocation::from(2, 0),
  29.                     "name",
  30.                     ParsedType::type_name("string"),
  31.                     None
  32.                 )),
  33.                 ClassMember::StaticMethod(Method::new_declaration(
  34.                     LexemeLocation::from(3, 2),
  35.                     None,
  36.                     "new",
  37.                     vec![Parameter::new("name", ParsedType::type_name("string"))],
  38.                     ParsedType::type_name("Car"),
  39.                 )),
  40.                 ClassMember::Method(Method::new_declaration(
  41.                     LexemeLocation::from(4, 0),
  42.                     None,
  43.                     "bar",
  44.                     vec![Parameter::new("i", ParsedType::type_name("int"))],
  45.                     ParsedType::type_name("void"),
  46.                 )),
  47.             ]
  48.         )
  49.     )
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement