// Path: src/starbeast2/TreeLengthLogger.java
// @Description("Logger to report total length of a tree")
// public class TreeLengthLogger extends CalculationNode implements Loggable, Function {
//     final public Input<TreeInterface> treeInput = new Input<>("tree", "tree to report length for.", Validate.REQUIRED);
// 
//     @Override
//     public void initAndValidate() {
//         // nothing to do
//     }
// 
//     @Override
//     public void init(PrintStream out) {
//         final TreeInterface tree = treeInput.get();
//         if (getID() == null || getID().matches("\\s*")) {
//             out.print(tree.getID() + ".length\t");
//         } else {
//             out.print(getID() + "\t");
//         }
//     }
// 
//     @Override
//     public void log(long sample, PrintStream out) {
//         final double treeLength = TreeStats.getLength(treeInput.get());
//         out.print(treeLength + "\t");
//     }
// 
//     @Override
//     public void close(PrintStream out) {
//         // nothing to do
//     }
// 
//     @Override
//     public int getDimension() {
//         return 1;
//     }
// 
//     @Override
//     public double getArrayValue() {
//         return TreeStats.getLength(treeInput.get());
//     }
// 
//     @Override
//     public double getArrayValue(int dim) {
//         return TreeStats.getLength(treeInput.get());
//     }
// }


import static org.junit.Assert.assertEquals;
import org.junit.Test;
import beast.core.State;
import beast.util.TreeParser;
import starbeast2.TreeLengthLogger;
package sb2tests;




public class TreeLengthLoggerTest {
    private String newickTree = "((((a1:0.3,a2:0.3):1.6,(b1:1.8,b2:1.8):0.1):0.5,c1:2.4):0.6,c2:3.0)";
    private TreeParser testTree;

    final double expectedLength = 12.4;
    final double allowedError = 10e-6;
// Path: src/starbeast2/TreeLengthLogger.java
// @Description("Logger to report total length of a tree")
// public class TreeLengthLogger extends CalculationNode implements Loggable, Function {
//     final public Input<TreeInterface> treeInput = new Input<>("tree", "tree to report length for.", Validate.REQUIRED);
// 
//     @Override
//     public void initAndValidate() {
//         // nothing to do
//     }
// 
//     @Override
//     public void init(PrintStream out) {
//         final TreeInterface tree = treeInput.get();
//         if (getID() == null || getID().matches("\\s*")) {
//             out.print(tree.getID() + ".length\t");
//         } else {
//             out.print(getID() + "\t");
//         }
//     }
// 
//     @Override
//     public void log(long sample, PrintStream out) {
//         final double treeLength = TreeStats.getLength(treeInput.get());
//         out.print(treeLength + "\t");
//     }
// 
//     @Override
//     public void close(PrintStream out) {
//         // nothing to do
//     }
// 
//     @Override
//     public int getDimension() {
//         return 1;
//     }
// 
//     @Override
//     public double getArrayValue() {
//         return TreeStats.getLength(treeInput.get());
//     }
// 
//     @Override
//     public double getArrayValue(int dim) {
//         return TreeStats.getLength(treeInput.get());
//     }
// }


// Path: src/sb2tests/TreeLengthLoggerTest.java
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import beast.core.State;
import beast.util.TreeParser;
import starbeast2.TreeLengthLogger;

package sb2tests;




public class TreeLengthLoggerTest {
    private String newickTree = "((((a1:0.3,a2:0.3):1.6,(b1:1.8,b2:1.8):0.1):0.5,c1:2.4):0.6,c2:3.0)";
    private TreeParser testTree;

    final double expectedLength = 12.4;
    final double allowedError = 10e-6;
    private TreeLengthLogger treeLengthLogger;