/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.bearsoft.gui.grid.tree;
import com.bearsoft.gui.grid.data.TableFront2TreedModel;
import com.bearsoft.gui.grid.data.TreedModel;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author Gala
*/
public class TreedDataChangesTest extends FacadeBaseTest {
@Test
public void forwardCellsChangesTest() {
System.out.println("forwardCellsChangesTest");
initTree();
JFrame frame = new JFrame();
frame.getContentPane().setLayout(new BorderLayout());
TreedModel model = new TestTreedModel();
TableFront2TreedModel tModel = new TableFront2TreedModel(model);
JTable tbl = new JTable(tModel);
frame.getContentPane().add(new JScrollPane(tbl), BorderLayout.CENTER);
frame.setSize(800, 700);
//frame.setVisible(true);
String test1Data = "Changed1";
String test2Data = "Changed2";
String test3Data = "Changed3";
tbl.setValueAt(test1Data, 0, 0);
tbl.setValueAt(test2Data, 1, 1);
tbl.setValueAt(test3Data, 2, 2);
assertEquals(test1Data, tbl.getValueAt(0, 0));
assertEquals(test2Data, tbl.getValueAt(1, 1));
assertEquals(test3Data, tbl.getValueAt(2, 2));
assertEquals(test1Data, tree.get(0).data1);
assertEquals(test2Data, tree.get(1).data2);
assertEquals(test3Data, tree.get(2).data3);
int oldRowCount = tbl.getRowCount();
tModel.expand(tree.get(1), false);
assertEquals(oldRowCount + 30, tbl.getRowCount());
//frame.setVisible(false);
}
@Test
public void backwardCellsChangesTest() {
System.out.println("backwardCellsChangesTest");
initTree();
JFrame frame = new JFrame();
frame.getContentPane().setLayout(new BorderLayout());
TreedModel model = new TestTreedModel();
TableFront2TreedModel tModel = new TableFront2TreedModel(model);
JTable tbl = new JTable(tModel);
frame.getContentPane().add(new JScrollPane(tbl), BorderLayout.CENTER);
frame.setSize(800, 700);
//frame.setVisible(true);
int oldRowCount = tbl.getRowCount();
tModel.expand(tree.get(1), false);
assertEquals(oldRowCount + 30, tbl.getRowCount());
String test1Data = "Changed1";
String test2Data = "Changed2";
String test3Data = "Changed3";
model.setValue(tree.get(0), 0, test1Data);
model.setValue(tree.get(1), 1, test2Data);
model.setValue(tree.get(2), 2, test3Data);
assertEquals(test1Data, tbl.getValueAt(0, 0));
assertEquals(test2Data, tbl.getValueAt(1, 1));
assertEquals(test3Data, tbl.getValueAt(2 + 30, 2));
//frame.setVisible(false);
}
@Test
public void addedElementsTest() {
System.out.println("addedElementsTest");
initTree();
JFrame frame = new JFrame();
frame.getContentPane().setLayout(new BorderLayout());
TestTreedModel model = new TestTreedModel();
TableFront2TreedModel tModel = new TableFront2TreedModel(model);
JTable tbl = new JTable(tModel);
frame.getContentPane().add(new JScrollPane(tbl), BorderLayout.CENTER);
frame.setSize(800, 700);
//frame.setVisible(true);
// fill some node and than try to expand it
// the right case is children count would double.
int oldRowCount = tbl.getRowCount();
TreeItem toFill = tree.get(6);
int oldChildrenCount = toFill.children.size();
for (int i = 0; i < oldChildrenCount; i++) {
model.add(toFill, new TreeItem("inserted " + i + "; col0", "inserted " + i + "; col1", "inserted " + i + "; col2"), 0);
}
// so, let's see...
assertEquals(oldRowCount, tbl.getRowCount());
tModel.expand(toFill, false);
assertEquals(oldRowCount + oldChildrenCount * 2, tbl.getRowCount());
tModel.collapse(toFill);
assertEquals(oldRowCount, tbl.getRowCount());
// fill some already expanded node
toFill = tree.get(7);
oldRowCount = tbl.getRowCount();
tModel.expand(toFill, false);
assertEquals(oldRowCount + 30, tbl.getRowCount());
oldRowCount = tbl.getRowCount();
oldChildrenCount = toFill.children.size();
for (int i = 0; i < oldChildrenCount; i++) {
model.add(toFill, new TreeItem("inserted " + i + "; col0", "inserted " + i + "; col1", "inserted " + i + "; col2"), 0);
}
assertEquals(oldRowCount + 30, tbl.getRowCount());
// let's perform some operations on fill node and see what it will lead to.
tModel.collapse(toFill);
assertEquals(oldRowCount - 30, tbl.getRowCount());
tModel.expand(toFill, false);
assertEquals(oldRowCount + 30, tbl.getRowCount());
tModel.expand(toFill, false);
assertEquals(oldRowCount + 30, tbl.getRowCount());
tModel.collapse(toFill);
assertEquals(oldRowCount - 30, tbl.getRowCount());
// add a node in top level
oldRowCount = tbl.getRowCount();
for (int i = 0; i < 10; i++) {
toFill = new TreeItem(8 + i + "top inserted; col0", 8 + i + "top inserted; col1", 8 + i + "top inserted; col2");
model.add(null, toFill, 8 + i);
}
assertEquals(oldRowCount + 10, tbl.getRowCount());
}
@Test
public void addedMultipleElementsTest() {
System.out.println("addedMultipleElementsTest");
initTree();
JFrame frame = new JFrame();
frame.getContentPane().setLayout(new BorderLayout());
TestTreedModel model = new TestTreedModel();
TableFront2TreedModel tModel = new TableFront2TreedModel(model);
JTable tbl = new JTable(tModel);
frame.getContentPane().add(new JScrollPane(tbl), BorderLayout.CENTER);
frame.setSize(800, 700);
//frame.setVisible(true);
// fill some node and than try to expand it
// the right case is children count would double.
int oldRowCount = tbl.getRowCount();
TreeItem toFill = tree.get(6);
int oldChildrenCount = toFill.children.size();
for (int i = 0; i < oldChildrenCount; i++) {
model.add(toFill, new TreeItem("inserted " + i + "; col0", "inserted " + i + "; col1", "inserted " + i + "; col2"), 0);
}
// so, let's see...
assertEquals(oldRowCount, tbl.getRowCount());
tModel.expand(toFill, false);
assertEquals(oldRowCount + oldChildrenCount * 2, tbl.getRowCount());
tModel.collapse(toFill);
assertEquals(oldRowCount, tbl.getRowCount());
// fill some already expanded node
toFill = tree.get(7);
oldRowCount = tbl.getRowCount();
tModel.expand(toFill, false);
assertEquals(oldRowCount + 30, tbl.getRowCount());
oldRowCount = tbl.getRowCount();
oldChildrenCount = toFill.children.size();
for (int i = 0; i < oldChildrenCount; i++) {
model.add(toFill, new TreeItem("inserted " + i + "; col0", "inserted " + i + "; col1", "inserted " + i + "; col2"), 0,
new TreeItem("inserted_ " + i + "; col0", "inserted " + i + "; col1", "inserted " + i + "; col2"), 2,
new TreeItem("inserted__ " + i + "; col0", "inserted " + i + "; col1", "inserted " + i + "; col2"), 3);
}
assertEquals(oldRowCount + 30*3, tbl.getRowCount());
// let's perform some operations on fill node and see what it will lead to.
tModel.collapse(toFill);
assertEquals(oldRowCount - 30, tbl.getRowCount());
tModel.expand(toFill, false);
assertEquals(oldRowCount + 30*3, tbl.getRowCount());
tModel.expand(toFill, false);
assertEquals(oldRowCount + 30*3, tbl.getRowCount());
tModel.collapse(toFill);
assertEquals(oldRowCount - 30, tbl.getRowCount());
// add a node in top level
oldRowCount = tbl.getRowCount();
for (int i = 0; i < 10; i++) {
toFill = new TreeItem(8 + i + "top inserted; col0", 8 + i + "top inserted; col1", 8 + i + "top inserted; col2");
model.add(null, toFill, 8 + i);
}
assertEquals(oldRowCount + 10, tbl.getRowCount());
}
@Test
public void removedElementsTest() {
System.out.println("removedElementsTest");
initTree();
JFrame frame = new JFrame();
frame.getContentPane().setLayout(new BorderLayout());
TestTreedModel model = new TestTreedModel();
TableFront2TreedModel tModel = new TableFront2TreedModel(model);
JTable tbl = new JTable(tModel);
frame.getContentPane().add(new JScrollPane(tbl), BorderLayout.CENTER);
frame.setSize(800, 700);
//frame.setVisible(true);
// clear some node and than try to expand it
// the right case is nothing changes.
int oldRowCount = tbl.getRowCount();
TreeItem toClear = tree.get(6);
for (int i = toClear.children.size() - 1; i >= 0; i--) {
model.remove(toClear.children.get(i));
}
// so, let's see...
tModel.expand(toClear, false);
assertEquals(oldRowCount, tbl.getRowCount());
tModel.collapse(toClear);
assertEquals(oldRowCount, tbl.getRowCount());
// clear some already expanded node
toClear = tree.get(7);
oldRowCount = tbl.getRowCount();
tModel.expand(toClear, false);
assertEquals(oldRowCount + 30, tbl.getRowCount());
for (int i = toClear.children.size() - 1; i >= 0; i--) {
model.remove(toClear.children.get(i));
}
assertEquals(oldRowCount, tbl.getRowCount());
// let's perform some operations on empty node and see what it will lead to.
tModel.collapse(toClear);
tModel.expand(toClear, false);
tModel.expand(toClear, false);
tModel.collapse(toClear);
assertEquals(oldRowCount, tbl.getRowCount());
// remove node without expanding it
toClear = tree.get(8);
model.remove(toClear);
// remove already expanded node
toClear = tree.get(8);
oldRowCount = tbl.getRowCount();
tModel.expand(toClear, false);
assertEquals(oldRowCount + 30, tbl.getRowCount());
oldRowCount = tbl.getRowCount();
model.remove(toClear);
assertEquals(oldRowCount - 30 - 1, tbl.getRowCount());
}
}