add: стабильная версия
This commit is contained in:
72
src/test/java/ru/di9/xml/XmlElementTest.java
Normal file
72
src/test/java/ru/di9/xml/XmlElementTest.java
Normal file
@@ -0,0 +1,72 @@
|
||||
package ru.di9.xml;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class XmlElementTest {
|
||||
// language=XML
|
||||
final String xml = """
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<root>
|
||||
<!-- Комментарий -->
|
||||
<node_str attr="VA-123">some value</node_str>
|
||||
<node_int attr="24">99</node_int>
|
||||
<node_bool attr="false">true</node_bool>
|
||||
<empty/>
|
||||
<node_str_commented>
|
||||
<!-- comment -->
|
||||
content
|
||||
</node_str_commented>
|
||||
</root>
|
||||
""";
|
||||
|
||||
XmlElement rootElement;
|
||||
|
||||
@BeforeEach
|
||||
void setup() {
|
||||
rootElement = new XmlParser().parse(xml);
|
||||
assertNotNull(rootElement);
|
||||
assertEquals("root", rootElement.getTagName());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testIterator() {
|
||||
Iterator<XmlElement> iteratorElement = rootElement.iterator();
|
||||
Iterator<String> iteratorTagName = Arrays.asList("node_str", "node_int", "node_bool", "empty").iterator();
|
||||
Iterator<Object> iteratorAttribute = Arrays.asList(new Object[]{"VA-123", 24, false, null}).iterator();
|
||||
|
||||
while (iteratorElement.hasNext() && iteratorTagName.hasNext() && iteratorAttribute.hasNext()) {
|
||||
var element = iteratorElement.next();
|
||||
var tagName = iteratorTagName.next();
|
||||
var attr = iteratorAttribute.next();
|
||||
|
||||
assertEquals(tagName, element.getTagName());
|
||||
switch (element.getTagName()) {
|
||||
case "node_str" -> assertEquals(attr, element.getAttribute("attr"));
|
||||
case "node_int" -> assertEquals(attr, element.getAttributeAsInt("attr"));
|
||||
case "node_bool" -> assertEquals(attr, element.getAttributeAsBool("attr"));
|
||||
case "empty" -> {
|
||||
assertTrue(StringUtils.isEmpty(element.getValue()));
|
||||
assertFalse(element.hasAttribute("attr"));
|
||||
assertTrue(StringUtils.isEmpty(element.getAttribute("attr")));
|
||||
}
|
||||
default -> fail("Unknown tag '%s'".formatted(element.getTagName()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCommentedContent() {
|
||||
var optElement = rootElement.getFirstElementByTagName("node_str_commented");
|
||||
assertNotNull(optElement);
|
||||
assertTrue(optElement.isPresent());
|
||||
|
||||
var element = optElement.get();
|
||||
assertEquals("content", element.getValue().trim());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user