use super::super::super::*;
#[test]
fn rewrite_switch_statements_supports_temp_case_values() {
let mut statements = vec![
"let t1 = 0;".to_string(),
"if loc0 == t1 {".to_string(),
" do0;".to_string(),
"}".to_string(),
"else if loc0 == 1 {".to_string(),
" do1;".to_string(),
"}".to_string(),
"else {".to_string(),
" do2;".to_string(),
"}".to_string(),
];
HighLevelEmitter::rewrite_switch_statements(&mut statements);
assert_eq!(statements[0], "let t1 = 0;");
assert_eq!(statements[1], "switch loc0 {");
assert!(statements.iter().any(|line| line.trim() == "case 0 {"));
assert!(statements.iter().any(|line| line.trim() == "case 1 {"));
assert!(statements.iter().any(|line| line.trim() == "default {"));
assert!(statements.iter().any(|line| line.trim() == "do0;"));
assert!(statements.iter().any(|line| line.trim() == "do1;"));
assert!(statements.iter().any(|line| line.trim() == "do2;"));
}
#[test]
fn rewrite_switch_statements_supports_string_literal_case_values() {
let mut statements = vec![
"let t0 = \"0\";".to_string(),
"let t1 = loc0 == t0;".to_string(),
"if t1 {".to_string(),
" do0;".to_string(),
"}".to_string(),
"let t2 = \"1\";".to_string(),
"let t3 = loc0 == t2;".to_string(),
"if t3 {".to_string(),
" do1;".to_string(),
"}".to_string(),
"let t4 = \"2\";".to_string(),
"let t5 = loc0 == t4;".to_string(),
"if t5 {".to_string(),
" do2;".to_string(),
"}".to_string(),
];
HighLevelEmitter::rewrite_switch_statements(&mut statements);
assert!(statements.iter().any(|line| line.trim() == "switch loc0 {"));
assert!(statements.iter().any(|line| line.trim() == "case \"0\" {"));
assert!(statements.iter().any(|line| line.trim() == "case \"1\" {"));
assert!(statements.iter().any(|line| line.trim() == "case \"2\" {"));
}