41 lines
1.3 KiB
Nim
41 lines
1.3 KiB
Nim
|
|
## XML language validator tests.
|
||
|
|
|
||
|
|
import std/[unittest, strutils, strformat]
|
||
|
|
import ../src/nimcheck
|
||
|
|
import test_common
|
||
|
|
|
||
|
|
proc checkValid(result: ValidationResult, context: string = "") =
|
||
|
|
if result.errors.len > 0:
|
||
|
|
var msg = &"Expected valid, got {result.errors.len} error(s)"
|
||
|
|
if context.len > 0: msg.add(&" [{context}]")
|
||
|
|
for e in result.errors: msg.add(&"\n [{e.code}] {e.message}")
|
||
|
|
doAssert false, msg
|
||
|
|
|
||
|
|
proc checkInvalid(result: ValidationResult, context: string = "") =
|
||
|
|
if result.errors.len == 0:
|
||
|
|
doAssert false, &"Expected errors, got none [{context}]"
|
||
|
|
|
||
|
|
suite "XML Validator":
|
||
|
|
test "valid XML code":
|
||
|
|
let result = validateSource(XmlGoodCode, flavor = lfXML)
|
||
|
|
checkValid(result)
|
||
|
|
|
||
|
|
test "invalid XML code returns errors":
|
||
|
|
let result = validateSource(XmlBadCode, flavor = lfXML)
|
||
|
|
checkInvalid(result)
|
||
|
|
|
||
|
|
test "valid .xml file":
|
||
|
|
let result = validateFile("tests/fixtures/xml/valid.xml")
|
||
|
|
checkValid(result)
|
||
|
|
|
||
|
|
test "invalid .xml file returns errors":
|
||
|
|
let result = validateFile("tests/fixtures/xml/invalid.xml")
|
||
|
|
check result.errors.len > 0
|
||
|
|
|
||
|
|
test "detectFlavor detects XML":
|
||
|
|
check $detectFlavor(XmlGoodCode) == "xml"
|
||
|
|
|
||
|
|
test "inspectSource returns JSON":
|
||
|
|
let json = inspectSource(XmlGoodCode, flavor = lfXML)
|
||
|
|
check json.kind == JObject
|