// Path: src/test/java/org/fuin/ddd4j/test/AId.java
// public class AId implements ImplRootId {
// 
//     private static final long serialVersionUID = 1L;
// 
//     public static final EntityType TYPE = new StringBasedEntityType("A");
// 
//     private final long id;
// 
//     public AId(final long id) {
//         this.id = id;
//     }
// 
//     @Override
//     public EntityType getType() {
//         return TYPE;
//     }
// 
//     @Override
//     public String asString() {
//         return "" + id;
//     }
// 
//     @Override
//     public String asTypedString() {
//         return getType() + " " + asString();
//     }
// 
//     @Override
//     public String toString() {
//         return "AId [id=" + id + "]";
//     }
// 
// }
// 
// Path: src/test/java/org/fuin/ddd4j/test/BId.java
// public class BId implements EntityId {
// 
//     private static final long serialVersionUID = 1L;
// 
//     public static final EntityType TYPE = new StringBasedEntityType("B");
// 
//     private final long id;
// 
//     public BId(final long id) {
//         this.id = id;
//     }
// 
//     @Override
//     public EntityType getType() {
//         return TYPE;
//     }
// 
//     @Override
//     public String asString() {
//         return "" + id;
//     }
// 
//     @Override
//     public String asTypedString() {
//         return getType() + " " + asString();
//     }
// 
//     @Override
//     public String toString() {
//         return "BId [id=" + id + "]";
//     }
// 
// }
// 
// Path: src/test/java/org/fuin/ddd4j/test/CId.java
// public class CId implements EntityId {
// 
//     private static final long serialVersionUID = 1L;
// 
//     public static final EntityType TYPE = new StringBasedEntityType("C");
// 
//     private final long id;
// 
//     public CId(final long id) {
//         this.id = id;
//     }
// 
//     @Override
//     public EntityType getType() {
//         return TYPE;
//     }
// 
//     @Override
//     public String asString() {
//         return "" + id;
//     }
// 
//     @Override
//     public String asTypedString() {
//         return getType() + " " + asString();
//     }
// 
//     @Override
//     public String toString() {
//         return "CId [id=" + id + "]";
//     }
// 
// }


import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.fuin.ddd4j.test.AId;
import org.fuin.ddd4j.test.BId;
import org.fuin.ddd4j.test.CId;
import org.fuin.objects4j.common.ConstraintViolationException;
import org.junit.Test;
    public void testConstructorListEmpty() {

        try {
            new EntityIdPath(new ArrayList<EntityId>());
            fail();
        } catch (ConstraintViolationException ex) {
            assertThat(ex.getMessage()).isEqualTo("Identifier list cannot be empty");
        }

    }

    @Test
    public void testConstructorListNullValues() {

        try {
            final List<EntityId> list = new ArrayList<>();
            list.add(null);
            new EntityIdPath(list);
            fail();
        } catch (ConstraintViolationException ex) {
            assertThat(ex.getMessage()).isEqualTo("Identifiers in the list cannot be null");
        }

    }

    @Test
    public void testIterator() {

        // PREPARE
        final AId aid = new AId(1L);
// Path: src/test/java/org/fuin/ddd4j/test/AId.java
// public class AId implements ImplRootId {
// 
//     private static final long serialVersionUID = 1L;
// 
//     public static final EntityType TYPE = new StringBasedEntityType("A");
// 
//     private final long id;
// 
//     public AId(final long id) {
//         this.id = id;
//     }
// 
//     @Override
//     public EntityType getType() {
//         return TYPE;
//     }
// 
//     @Override
//     public String asString() {
//         return "" + id;
//     }
// 
//     @Override
//     public String asTypedString() {
//         return getType() + " " + asString();
//     }
// 
//     @Override
//     public String toString() {
//         return "AId [id=" + id + "]";
//     }
// 
// }
// 
// Path: src/test/java/org/fuin/ddd4j/test/BId.java
// public class BId implements EntityId {
// 
//     private static final long serialVersionUID = 1L;
// 
//     public static final EntityType TYPE = new StringBasedEntityType("B");
// 
//     private final long id;
// 
//     public BId(final long id) {
//         this.id = id;
//     }
// 
//     @Override
//     public EntityType getType() {
//         return TYPE;
//     }
// 
//     @Override
//     public String asString() {
//         return "" + id;
//     }
// 
//     @Override
//     public String asTypedString() {
//         return getType() + " " + asString();
//     }
// 
//     @Override
//     public String toString() {
//         return "BId [id=" + id + "]";
//     }
// 
// }
// 
// Path: src/test/java/org/fuin/ddd4j/test/CId.java
// public class CId implements EntityId {
// 
//     private static final long serialVersionUID = 1L;
// 
//     public static final EntityType TYPE = new StringBasedEntityType("C");
// 
//     private final long id;
// 
//     public CId(final long id) {
//         this.id = id;
//     }
// 
//     @Override
//     public EntityType getType() {
//         return TYPE;
//     }
// 
//     @Override
//     public String asString() {
//         return "" + id;
//     }
// 
//     @Override
//     public String asTypedString() {
//         return getType() + " " + asString();
//     }
// 
//     @Override
//     public String toString() {
//         return "CId [id=" + id + "]";
//     }
// 
// }


// Path: src/test/java/org/fuin/ddd4j/ddd/EntityIdPathTest.java
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.fuin.ddd4j.test.AId;
import org.fuin.ddd4j.test.BId;
import org.fuin.ddd4j.test.CId;
import org.fuin.objects4j.common.ConstraintViolationException;
import org.junit.Test;

    public void testConstructorListEmpty() {

        try {
            new EntityIdPath(new ArrayList<EntityId>());
            fail();
        } catch (ConstraintViolationException ex) {
            assertThat(ex.getMessage()).isEqualTo("Identifier list cannot be empty");
        }

    }

    @Test
    public void testConstructorListNullValues() {

        try {
            final List<EntityId> list = new ArrayList<>();
            list.add(null);
            new EntityIdPath(list);
            fail();
        } catch (ConstraintViolationException ex) {
            assertThat(ex.getMessage()).isEqualTo("Identifiers in the list cannot be null");
        }

    }

    @Test
    public void testIterator() {

        // PREPARE
        final AId aid = new AId(1L);
        final BId bid = new BId(2L);