add: стабильная версия

This commit is contained in:
2024-02-27 14:20:49 +03:00
commit 38dd350d59
19 changed files with 749 additions and 0 deletions

View 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());
}
}