mirror of
https://github.com/nushell/nushell.git
synced 2024-11-29 20:03:54 +01:00
baseline coverage for xml parsing.
This commit is contained in:
parent
8923e91e39
commit
4329629ee9
@ -134,3 +134,73 @@ fn from_xml(args: CommandArgs, registry: &CommandRegistry) -> Result<OutputStrea
|
|||||||
|
|
||||||
Ok(stream.to_output_stream())
|
Ok(stream.to_output_stream())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
|
||||||
|
use crate::commands::from_xml;
|
||||||
|
use crate::data::meta::*;
|
||||||
|
use crate::Value;
|
||||||
|
use indexmap::IndexMap;
|
||||||
|
|
||||||
|
fn string(input: impl Into<String>) -> Tagged<Value> {
|
||||||
|
Value::string(input.into()).tagged_unknown()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn row(entries: IndexMap<String, Tagged<Value>>) -> Tagged<Value> {
|
||||||
|
Value::row(entries).tagged_unknown()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn table(list: &Vec<Tagged<Value>>) -> Tagged<Value> {
|
||||||
|
Value::table(list).tagged_unknown()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parse(xml: &str) -> Tagged<Value> {
|
||||||
|
from_xml::from_xml_string_to_value(xml.to_string(), Tag::unknown()).unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parses_empty_element() {
|
||||||
|
let source = "<nu></nu>";
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
parse(source),
|
||||||
|
row(indexmap! {
|
||||||
|
"nu".into() => table(&vec![])
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parses_element_with_text() {
|
||||||
|
let source = "<nu>La era de los tres caballeros</nu>";
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
parse(source),
|
||||||
|
row(indexmap! {
|
||||||
|
"nu".into() => table(&vec![string("La era de los tres caballeros")])
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parses_element_with_elements() {
|
||||||
|
let source = "\
|
||||||
|
<nu>
|
||||||
|
<dev>Andrés</dev>
|
||||||
|
<dev>Jonathan</dev>
|
||||||
|
<dev>Yehuda</dev>
|
||||||
|
</nu>";
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
parse(source),
|
||||||
|
row(indexmap! {
|
||||||
|
"nu".into() => table(&vec![
|
||||||
|
row(indexmap! {"dev".into() => table(&vec![string("Andrés")])}),
|
||||||
|
row(indexmap! {"dev".into() => table(&vec![string("Jonathan")])}),
|
||||||
|
row(indexmap! {"dev".into() => table(&vec![string("Yehuda")])})
|
||||||
|
])
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user