All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jp.vmi.html.result.TestSuiteTree Maven / Gradle / Ivy

package jp.vmi.html.result;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import jp.vmi.selenium.selenese.Selenese;
import jp.vmi.selenium.selenese.TestSuite;

/**
 * Test-suite tree for HTML result.
 */
public class TestSuiteTree {

    @SuppressWarnings("javadoc")
    public static class Node {

        public Node parent = null;
        public final TestSuite testSuite;
        public final TestSuiteSummary summary;
        public final List children = new ArrayList();

        private Node(Node parent, TestSuite testSuite, TestSuiteSummary summary) {
            this.parent = parent;
            this.testSuite = testSuite;
            this.summary = summary;
        }
    }

    private final Node root = new Node(null, null, null);
    private final Map map = new HashMap();

    /**
     * Get test-suite result summary.
     *
     * @param testSuite test-suite instance.
     * @return summary.
     */
    public TestSuiteSummary getSummary(TestSuite testSuite) {
        Node node = map.get(testSuite);
        return node != null ? node.summary : null;
    }

    /**
     * Add test-suite and it's summary.
     *
     * @param testSuite test-suite instance.
     * @param summary summary.
     */
    public void add(TestSuite testSuite, TestSuiteSummary summary) {
        Node node = new Node(root, testSuite, summary);
        for (Selenese selenese : testSuite.getSeleneseList()) {
            Node child = map.get(selenese);
            if (child != null) {
                child.parent.children.remove(child);
                child.parent = node;
                node.children.add(child);
            }
        }
        root.children.add(node);
        map.put(testSuite, node);
    }

    /**
     * Get root node list of tree.
     *
     * @return node list.
     */
    public List getRootNodeList() {
        return root.children;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy