// Path: src/main/java/uk/co/compendiumdev/javafortesters/domain/tree/TreeBranch.java
// public class TreeBranch<T> {
//     private final ArrayList<TreeBranch> children;
//     private T leaf;
//     private String label;
// 
//     public TreeBranch(){
//         this("branch");
//     }
// 
//     public TreeBranch(String label){
//         this(label, null);
//     }
// 
//     public TreeBranch(String label, T entity) {
//         this.leaf = entity;
//         this.label = label;
//         this.children = new ArrayList<TreeBranch>();
//     }
// 
//     public boolean isLeaf() {
//         return leaf!=null;
//     }
// 
//     public String getLabel() {
//         return label;
//     }
// 
//     public void setLabel(String label) {
//         this.label = label;
//     }
// 
//     public TreeBranch addChild(String branchLabel) {
//         TreeBranch<T> child = new TreeBranch<T>(branchLabel);
//         children.add(child);
//         return child;
//     }
// 
//     public TreeBranch addChild(String branchLabel, T entity){
//         TreeBranch<T> child = new TreeBranch<T>(branchLabel, entity);
//         children.add(child);
//         return child;
//     }
// 
//     public int countChildren() {
//         return children.size();
//     }
// 
//     public T getLeaf() {
//         return leaf;
//     }
// 
//     public String toString(){
//         return stringify(0);
// 
//     }
// 
//     private String stringify(int indent) {
//         StringBuilder out = new StringBuilder();
// 
//         for(int i=0; i<indent; i++){
//             out.append(" ");
//         }
// 
//         out.append(label).append("\n");
// 
//         for(TreeBranch child : children){
//             out.append(child.stringify(indent+1));
//         }
// 
//         return out.toString();
//     }
// 
// 
//     public ArrayList<TreeBranch> getChildren() {
//         return children;
//     }
// 
//     public void addChild(TreeBranch<T> lastBranch) {
//         children.add(lastBranch);
//     }
// }


import uk.co.compendiumdev.javafortesters.domain.tree.TreeBranch;
import org.junit.Assert;
import org.junit.Test;
package uk.co.compendiumdev.javafortesters.domain.cannedtext;


/**
 * Created by Alan on 27/02/2015.
 * To allow creation and exploration of canned text functionality
 */
public class CannedTextCreationTest {

    @Test
    public void canCreateASimpleCannedTextItem(){
        CannedTextItem text = new CannedTextItem("0");
        Assert.assertEquals("0",text.getTextValue());
    }

    @Test
    public void canCreateASimpleCannedTextItemWithDefaultLabel(){
        CannedTextItem text = new CannedTextItem("defaultLabel");
        Assert.assertEquals("defaultLabel",text.getTextValue());
        Assert.assertEquals("defaultLabel",text.getLabel());
    }

    @Test
    public void canCreateCannedTextItemWithLabel(){
        CannedTextItem text = new CannedTextItem("number1","1");
        Assert.assertEquals("1",text.getTextValue());
        Assert.assertEquals("number1",text.getLabel());
    }

    @Test
    public void canCreateCannedTextItemsWithUniqueIDs(){
        CannedTextItem text1 = new CannedTextItem("number2","2");
        CannedTextItem text2 = new CannedTextItem("number3","3");
        Assert.assertTrue(text1.getId().length() > 0);
        Assert.assertTrue(text2.getId().length()>0);
        Assert.assertNotEquals(text1.getId(), text2.getId());
    }

    @Test
    public void canCreateATreeOfCannedTextItems(){

// Path: src/main/java/uk/co/compendiumdev/javafortesters/domain/tree/TreeBranch.java
// public class TreeBranch<T> {
//     private final ArrayList<TreeBranch> children;
//     private T leaf;
//     private String label;
// 
//     public TreeBranch(){
//         this("branch");
//     }
// 
//     public TreeBranch(String label){
//         this(label, null);
//     }
// 
//     public TreeBranch(String label, T entity) {
//         this.leaf = entity;
//         this.label = label;
//         this.children = new ArrayList<TreeBranch>();
//     }
// 
//     public boolean isLeaf() {
//         return leaf!=null;
//     }
// 
//     public String getLabel() {
//         return label;
//     }
// 
//     public void setLabel(String label) {
//         this.label = label;
//     }
// 
//     public TreeBranch addChild(String branchLabel) {
//         TreeBranch<T> child = new TreeBranch<T>(branchLabel);
//         children.add(child);
//         return child;
//     }
// 
//     public TreeBranch addChild(String branchLabel, T entity){
//         TreeBranch<T> child = new TreeBranch<T>(branchLabel, entity);
//         children.add(child);
//         return child;
//     }
// 
//     public int countChildren() {
//         return children.size();
//     }
// 
//     public T getLeaf() {
//         return leaf;
//     }
// 
//     public String toString(){
//         return stringify(0);
// 
//     }
// 
//     private String stringify(int indent) {
//         StringBuilder out = new StringBuilder();
// 
//         for(int i=0; i<indent; i++){
//             out.append(" ");
//         }
// 
//         out.append(label).append("\n");
// 
//         for(TreeBranch child : children){
//             out.append(child.stringify(indent+1));
//         }
// 
//         return out.toString();
//     }
// 
// 
//     public ArrayList<TreeBranch> getChildren() {
//         return children;
//     }
// 
//     public void addChild(TreeBranch<T> lastBranch) {
//         children.add(lastBranch);
//     }
// }


// Path: src/test/java/uk/co/compendiumdev/javafortesters/domain/cannedtext/CannedTextCreationTest.java
import uk.co.compendiumdev.javafortesters.domain.tree.TreeBranch;
import org.junit.Assert;
import org.junit.Test;

package uk.co.compendiumdev.javafortesters.domain.cannedtext;


/**
 * Created by Alan on 27/02/2015.
 * To allow creation and exploration of canned text functionality
 */
public class CannedTextCreationTest {

    @Test
    public void canCreateASimpleCannedTextItem(){
        CannedTextItem text = new CannedTextItem("0");
        Assert.assertEquals("0",text.getTextValue());
    }

    @Test
    public void canCreateASimpleCannedTextItemWithDefaultLabel(){
        CannedTextItem text = new CannedTextItem("defaultLabel");
        Assert.assertEquals("defaultLabel",text.getTextValue());
        Assert.assertEquals("defaultLabel",text.getLabel());
    }

    @Test
    public void canCreateCannedTextItemWithLabel(){
        CannedTextItem text = new CannedTextItem("number1","1");
        Assert.assertEquals("1",text.getTextValue());
        Assert.assertEquals("number1",text.getLabel());
    }

    @Test
    public void canCreateCannedTextItemsWithUniqueIDs(){
        CannedTextItem text1 = new CannedTextItem("number2","2");
        CannedTextItem text2 = new CannedTextItem("number3","3");
        Assert.assertTrue(text1.getId().length() > 0);
        Assert.assertTrue(text2.getId().length()>0);
        Assert.assertNotEquals(text1.getId(), text2.getId());
    }

    @Test
    public void canCreateATreeOfCannedTextItems(){

        TreeBranch<CannedTextItem> root = new TreeBranch<CannedTextItem>();