52 lines
1.3 KiB
V
52 lines
1.3 KiB
V
import v.vmod
|
|
|
|
const quote = '\x22'
|
|
|
|
const apos = '\x27'
|
|
|
|
fn test_ok() ? {
|
|
ok_source := "Module {
|
|
name: 'V'
|
|
description: 'The V programming language.'
|
|
version: '0.2.4'
|
|
license: 'MIT'
|
|
repo_url: 'https://github.com/vlang/v'
|
|
dependencies: []
|
|
}"
|
|
for s in [ok_source, ok_source.replace(apos, quote), ok_source.replace('\n', '\r\n'),
|
|
ok_source.replace('\n', '\r\n '), ok_source.replace('\n', '\n ')] {
|
|
content := vmod.decode(s) ?
|
|
assert content.name == 'V'
|
|
assert content.description == 'The V programming language.'
|
|
assert content.version == '0.2.4'
|
|
assert content.license == 'MIT'
|
|
assert content.repo_url == 'https://github.com/vlang/v'
|
|
assert content.dependencies == []
|
|
assert content.unknown == {}
|
|
}
|
|
e := vmod.decode('Module{}') ?
|
|
assert e.name == ''
|
|
assert e.description == ''
|
|
assert e.version == ''
|
|
assert e.license == ''
|
|
assert e.repo_url == ''
|
|
assert e.dependencies == []
|
|
assert e.unknown == {}
|
|
}
|
|
|
|
fn test_invalid_start() ? {
|
|
vmod.decode('\n\nXYZ') or {
|
|
assert err.msg() == 'vmod: v.mod files should start with Module, at line 3'
|
|
return
|
|
}
|
|
assert false
|
|
}
|
|
|
|
fn test_invalid_end() ? {
|
|
vmod.decode('\nModule{\n \nname: ${quote}zzzz}') or {
|
|
assert err.msg() == 'vmod: invalid token ${quote}eof$quote, at line 4'
|
|
return
|
|
}
|
|
assert false
|
|
}
|