package com.xenoage.zong.layout;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import org.junit.Test;
import com.xenoage.zong.core.format.PageFormat;
import com.xenoage.zong.layout.frames.GroupFrame;
import com.xenoage.zong.layout.frames.TestFrame;
/**
* Tests for {@link Layout}.
*
* @author Andreas Wenger
*/
public class LayoutTest {
TestFrame frame_1_1, frame_2_1, frame_2_2_1_1, frame_2_2_1_2, frame_2_2_2, frame_3_1;
GroupFrame group_2_2_1, group_2_2;
Page page_1, page_2, page_3;
Layout layout;
/**
* Creates a simple nested layout and checks the parent relationships.
*/
@Test public void testParents() {
createTestLayout();
assertEquals(3, layout.getPages().size());
//direct parents
assertEquals(page_1, frame_1_1.getParent());
assertEquals(page_2, frame_2_1.getParent());
assertEquals(page_2, group_2_2.getParent());
assertEquals(page_3, frame_3_1.getParent());
assertEquals(group_2_2, group_2_2_1.getParent());
assertEquals(group_2_2_1, frame_2_2_1_1.getParent());
assertEquals(group_2_2_1, frame_2_2_1_2.getParent());
assertEquals(group_2_2, frame_2_2_2.getParent());
//parent pages
assertEquals(page_1, frame_1_1.getParentPage());
assertEquals(page_2, frame_2_1.getParentPage());
assertEquals(page_2, group_2_2.getParentPage());
assertEquals(page_3, frame_3_1.getParentPage());
assertEquals(page_2, group_2_2_1.getParentPage());
assertEquals(page_2, frame_2_2_1_1.getParentPage());
assertEquals(page_2, frame_2_2_1_2.getParentPage());
assertEquals(page_2, frame_2_2_2.getParentPage());
}
@Test public void removeFrameTest1() {
createTestLayout();
//remove group_2_2
page_2.removeFrame(group_2_2);
assertFalse(page_2.getFrames().contains(group_2_2));
assertNull(group_2_2.getParent());
assertNull(group_2_2.getParentPage());
}
@Test public void removeFrameTest2() {
createTestLayout();
//remove frame_2_2_1_1
group_2_2_1.removeChildFrame(frame_2_2_1_1);
assertFalse(group_2_2_1.getChildren().contains(frame_2_2_1_1));
assertNull(frame_2_2_1_1.getParent());
assertNull(frame_2_2_1_1.getParentPage());
}
private void createTestLayout() {
//layout:
//[page 1 [frame 1_1]]
//[page 2 [frame 2_1] [group 2_2 [group 2_2_1 [frame 2_2_1_1] [frame 2_2_1_2]] [frame 2_2_2]]]
//[page 3 [frame 3_1]]
layout = new Layout(null);
//page 1
page_1 = new Page(PageFormat.defaultValue);
layout.addPage(page_1);
frame_1_1 = new TestFrame();
page_1.addFrame(frame_1_1);
//page 2
page_2 = new Page(PageFormat.defaultValue);
layout.addPage(page_2);
frame_2_1 = new TestFrame();
page_2.addFrame(frame_2_1);
group_2_2 = new GroupFrame();
page_2.addFrame(group_2_2);
group_2_2_1 = new GroupFrame();
group_2_2.addChildFrame(group_2_2_1);
frame_2_2_1_1 = new TestFrame();
group_2_2_1.addChildFrame(frame_2_2_1_1);
frame_2_2_1_2 = new TestFrame();
group_2_2_1.addChildFrame(frame_2_2_1_2);
frame_2_2_2 = new TestFrame();
group_2_2.addChildFrame(frame_2_2_2);
//page 3
page_3 = new Page(PageFormat.defaultValue);
layout.addPage(page_3);
frame_3_1 = new TestFrame();
page_3.addFrame(frame_3_1);
}
}