lang: add test

This commit is contained in:
Schrottkatze 2024-04-03 00:28:45 +02:00
parent ca84af4e1b
commit de008263ca
Signed by: schrottkatze
SSH key fingerprint: SHA256:hXb3t1vINBFCiDCmhRABHX5ocdbLiKyCdKI4HK2Rbbc

View file

@ -125,10 +125,117 @@ mod tests {
(5..32).into() (5..32).into()
)) ))
), ),
(0..0).into() (0..32).into()
) )
)]) )])
} }
); );
} }
fn test_parse_multiple_top_level_complex() {
const INPUT: &str = r#"def main = meow
| uwu
[ foo: @bar
, hello: world @| test [ more: params ] | yay
]
!| awa
@| nya
| rawr;
def test = meow
[ hello: $foo
, world: @bar
];
"#;
assert_eq!(
parse(INPUT).unwrap(),
File {
decls: IndexMap::from_iter([
(
("main", (4..8).into()),
(
Expr::SimplePipe(
Box::new(Expr::Node(("meow", (11..15).into()), None)),
Box::new(Expr::NullPipe(
Box::new(Expr::Node(
("uwu", (20..23).into()),
Some((
IndexMap::from_iter([
(
("foo", (29..32).into()),
Expr::InputVar(("bar", (34..38).into()))
),
(
("hello", (44..49).into()),
Expr::MappingPipe(
Box::new(Expr::Node(
("world", (51..56).into()),
None
)),
Box::new(Expr::SimplePipe(
Box::new(Expr::Node(
("test", (60..64).into()),
Some((
IndexMap::from_iter([(
("more", (67..71).into()),
Expr::Node(
(
"params",
(73..79).into()
),
None
)
)]),
(65..81).into()
))
)),
Box::new(Expr::Node(
("yay", (84..87).into()),
None
))
))
)
)
]),
(27..92).into()
))
)),
Box::new(Expr::MappingPipe(
Box::new(Expr::Node(("awa", (97..100).into()), None)),
Box::new(Expr::SimplePipe(
Box::new(Expr::Node(("nya", (106..109).into()), None)),
Box::new(Expr::Node(("rawr", (114..118).into()), None))
))
))
))
),
(11..118).into()
),
),
(
("test", (125..129).into()),
(
Expr::Node(
("meow", (132..136).into()),
Some((
IndexMap::from_iter([
(
("hello", (141..146).into()),
Expr::Var(("foo", (148..152).into()))
),
(
("world", (156..161).into()),
Expr::InputVar(("bar", (163..167).into()))
)
]),
(139..171).into()
))
),
(132..171).into()
)
)
])
}
);
}
} }