/*
* Copyright 2004-2015 the Seasar Foundation and the Others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
package org.seasar.framework.container.util;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestCase;
import org.seasar.framework.container.ComponentDef;
import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.factory.S2ContainerFactory;
/**
* @author koichik
*/
public class TraversalTest extends TestCase {
private S2Container container;
protected void setUp() throws Exception {
container = S2ContainerFactory
.create("org/seasar/framework/container/util/TraversalTest.dicon");
}
/**
* @throws Exception
*/
public void testForEachContainer() throws Exception {
final List l = new ArrayList();
Traversal.forEachContainer(container,
new Traversal.S2ContainerHandler() {
public Object processContainer(S2Container container) {
l.add(container.getNamespace());
return null;
}
});
assertEquals("1", 4, l.size());
assertEquals("2", "root", l.get(0));
assertEquals("3", "1", l.get(1));
assertEquals("4", "2", l.get(2));
assertEquals("5", "3", l.get(3));
}
/**
* @throws Exception
*/
public void testForEachContainerChildLast() throws Exception {
final List l = new ArrayList();
Traversal.forEachContainer(container,
new Traversal.S2ContainerHandler() {
public Object processContainer(S2Container container) {
l.add(container.getNamespace());
return null;
}
}, false);
assertEquals("1", 4, l.size());
assertEquals("2", "1", l.get(0));
assertEquals("3", "3", l.get(1));
assertEquals("4", "2", l.get(2));
assertEquals("5", "root", l.get(3));
}
/**
* @throws Exception
*/
public void testForEachContainerFinding() throws Exception {
String s = (String) Traversal.forEachContainer(container,
new Traversal.S2ContainerHandler() {
public Object processContainer(S2Container container) {
return container.getNamespace();
}
}, false);
assertEquals("1", "1", s);
}
/**
* @throws Exception
*/
public void testForEachComponent() throws Exception {
final List l = new ArrayList();
Traversal.forEachComponent(container,
new Traversal.ComponentDefHandler() {
public Object processComponent(ComponentDef componentDef) {
l.add(componentDef.getComponentName());
return null;
}
});
assertEquals("1", 8, l.size());
assertEquals("2", "1", l.get(0));
assertEquals("3", "2", l.get(1));
assertEquals("4", "1-1", l.get(2));
assertEquals("5", "1-2", l.get(3));
assertEquals("6", "2-1", l.get(4));
assertEquals("7", "2-2", l.get(5));
assertEquals("8", "3-1", l.get(6));
assertEquals("9", "3-2", l.get(7));
}
/**
* @throws Exception
*/
public void testForEachComponentChildFirst() throws Exception {
final List l = new ArrayList();
Traversal.forEachComponent(container,
new Traversal.ComponentDefHandler() {
public Object processComponent(ComponentDef componentDef) {
l.add(componentDef.getComponentName());
return null;
}
}, false);
assertEquals("1", 8, l.size());
assertEquals("2", "1-1", l.get(0));
assertEquals("3", "1-2", l.get(1));
assertEquals("4", "3-1", l.get(2));
assertEquals("5", "3-2", l.get(3));
assertEquals("6", "2-1", l.get(4));
assertEquals("7", "2-2", l.get(5));
assertEquals("8", "1", l.get(6));
assertEquals("9", "2", l.get(7));
}
/**
* @throws Exception
*/
public void testForEachComponentFinding() throws Exception {
String s = (String) Traversal.forEachComponent(container,
new Traversal.ComponentDefHandler() {
public Object processComponent(ComponentDef componentDef) {
return componentDef.getComponentName();
}
}, false);
assertEquals("1", "1-1", s);
}
/**
* @throws Exception
*/
public void testForEachParentContainer() throws Exception {
final List l = new ArrayList();
final S2Container container3 = container.getChild(2);
Traversal.forEachParentContainer(container3,
new Traversal.S2ContainerHandler() {
public Object processContainer(S2Container container) {
l.add(container.getNamespace());
return null;
}
});
assertEquals("1", 3, l.size());
assertEquals("2", "3", l.get(0));
assertEquals("3", "2", l.get(1));
assertEquals("4", "root", l.get(2));
}
/**
* @throws Exception
*/
public void testForEachParentContainerChildLast() throws Exception {
final List l = new ArrayList();
final S2Container container3 = container.getChild(2);
Traversal.forEachParentContainer(container3,
new Traversal.S2ContainerHandler() {
public Object processContainer(S2Container container) {
l.add(container.getNamespace());
return null;
}
}, false);
assertEquals("1", 3, l.size());
assertEquals("2", "root", l.get(0));
assertEquals("3", "2", l.get(1));
assertEquals("4", "3", l.get(2));
}
/**
* @throws Exception
*/
public void testForEachParentContainerFinding() throws Exception {
final S2Container container3 = container.getChild(2);
String s = (String) Traversal.forEachParentContainer(container3,
new Traversal.S2ContainerHandler() {
public Object processContainer(S2Container container) {
return container.getNamespace();
}
}, false);
assertEquals("1", "root", s);
}
}