// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.searchlib.gbdt;
import org.junit.Test;
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import static org.junit.Assert.*;
/**
* @author Simon Thoresen Hult
*/
public class TreeNodeTestCase {
@Test
public void requireThatFeatureNodeCanBeGeneratedFromDomNode()
throws ParserConfigurationException, IOException, SAXException
{
String xml = "\n" +
" \n" +
" \n" +
"\n";
TreeNode obj = TreeNode.fromDom(XmlHelper.parseXml(xml));
assertTrue(obj instanceof FeatureNode);
NumericFeatureNode node = (NumericFeatureNode)obj;
assertEquals("a", node.feature());
assertEquals(1, node.value().asDouble(), 1E-6);
assertTrue(node.left() instanceof ResponseNode);
assertEquals(2, ((ResponseNode)node.left()).value(), 1E-6);
assertTrue(node.right() instanceof ResponseNode);
assertEquals(4, ((ResponseNode)node.right()).value(), 1E-6);
}
@Test
public void requireThatResponseNodeCanBeGeneratedFromDomNode()
throws ParserConfigurationException, IOException, SAXException
{
String xml = "\n";
TreeNode obj = TreeNode.fromDom(XmlHelper.parseXml(xml));
assertTrue(obj instanceof ResponseNode);
assertEquals(1, ((ResponseNode)obj).value(), 1E-6);
}
@Test
public void requireThatUnknownNodeThrowsException()
throws ParserConfigurationException, IOException, SAXException
{
try {
TreeNode.fromDom(XmlHelper.parseXml(""));
fail();
} catch (UnsupportedOperationException e) {
assertEquals("Unknown", e.getMessage());
}
}
}