sim_lib_lang_javascript/
matrix_row.rs1use sim_kernel::Symbol;
2use sim_lib_standard_core::{
3 LanguageRow, LanguageRowBuilder, SourceConformanceCase, SourceConformanceCaseKind,
4 SourceExpectation,
5};
6pub fn javascript_core_matrix_row() -> LanguageRow {
8 LanguageRowBuilder::new(Symbol::new("javascript"), crate::javascript_core_profile())
9 .with_cases(javascript_core_source_cases())
10 .build()
11}
12pub fn javascript_core_source_cases() -> Vec<SourceConformanceCase> {
14 [
15 (
16 "primitive-coercion-equality",
17 "let answer = '40' == 40; answer;",
18 "true",
19 ),
20 (
21 "declaration-loop",
22 "let answer = 0; while (answer < 42) { answer += 1; } answer;",
23 "42",
24 ),
25 (
26 "destructuring-abrupt",
27 "let [left, right] = [40, 2]; return left + right;",
28 "return 42",
29 ),
30 ("installed-bigint", "let answer = 40n + 2n; answer;", "42n"),
31 ]
32 .into_iter()
33 .map(|(name, source, expected)| SourceConformanceCase {
34 symbol: Symbol::qualified("test/javascript-core", name),
35 organ: Symbol::qualified("codec", "javascript"),
36 source_name: format!("{name}.js"),
37 source: source.into(),
38 kind: SourceConformanceCaseKind::Observed,
39 expectation: SourceExpectation::LowersTo(expected.into()),
40 affects_badge: None,
41 })
42 .collect()
43}
44#[cfg(test)]
45mod tests {
46 #[test]
47 fn row_is_codec_source_backed() {
48 let row = super::javascript_core_matrix_row();
49 assert_eq!(row.cases.len(), 4);
50 assert!(
51 row.cases
52 .iter()
53 .all(|c| c.organ == sim_kernel::Symbol::qualified("codec", "javascript"))
54 );
55 }
56}