1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
Files
v/vlib/v/gen/cgen_test.v
Alexander Medvednikov 093a025ebf parse_files(); ast.File
2019-12-30 16:55:59 +01:00

55 lines
1.0 KiB
V

import (
os
filepath
v.parser
v.ast
v.gen
v.table
term
)
const (
nr_tests = 2
)
fn test_c_files() {
println('Running V => C tests')
vexe := os.getenv('VEXE')
vroot := filepath.dir(vexe)
for i in 1 .. nr_tests + 1 {
text := os.read_file('$vroot/vlib/v/gen/tests/${i}.vv') or {
panic(err)
}
ctext := os.read_file('$vroot/vlib/v/gen/tests/${i}.c') or {
panic(err)
}
table := &table.Table{}
program := parser.parse_file(text, table)
res := gen.cgen([program])
if compare_texts(res, ctext) {
eprintln('${i}... ' + term.green('OK'))
}
else {
eprintln('${i}... ' + term.red('FAIL'))
eprintln('expected:\n$ctext\ngot:\n$res')
}
}
}
fn compare_texts(a, b string) bool {
lines_a := a.trim_space().split_into_lines()
lines_b := b.trim_space().split_into_lines()
if lines_a.len != lines_b.len {
println('different len')
return false
}
for i, line_a in lines_a {
line_b := lines_b[i]
if line_a.trim_space() != line_b.trim_space() {
println('!' + line_a)
return false
}
}
return true
}