package com.horstmann.violet.product.diagram.classes.node;
import static org.junit.Assert.*;
import java.awt.geom.Rectangle2D;
import org.junit.Test;
import com.horstmann.violet.product.diagram.abstracts.property.MultiLineString;
public class ClassNodeTest {
@Test
public void testEmptyClassNodeBounds() {
ClassNode node = new ClassNode();
assertBounds(getEmptyClassNodeBounds(), node.getBounds());
}
@Test
public void testClassNodeWithNameBounds() {
ClassNode node = new ClassNode();
node.setName(createMultiLineString("TestClass"));
assertBounds(getClassNodeWithNameBounds(), node.getBounds());
}
@Test
public void testFullClassNodeBounds() {
ClassNode node = new ClassNode();
node.setName(createMultiLineString("TestClass"));
node.setAttributes(createMultiLineString("attributes"));
node.setMethods(createMultiLineString("methods"));
assertBounds(getFullClassNodeBounds(), node.getBounds());
}
@Test
public void testClassNodeWithAttributesBounds() {
ClassNode node = new ClassNode();
node.setAttributes(createMultiLineString("attributes"));
assertBounds(getClassNodeWithAttributesBounds(), node.getBounds());
}
@Test
public void testClassNodeWithNameAndMethodsBounds() {
ClassNode node = new ClassNode();
node.setName(createMultiLineString("TestClass"));
node.setMethods(createMultiLineString("methods"));
assertBounds(getClassNodeWithNameAndMethodsBounds(), node.getBounds());
}
@Test
public void testClassNodeWithMethodsBounds() {
ClassNode node = new ClassNode();
node.setMethods(createMultiLineString("methods"));
assertBounds(getClassNodeWithMethodsBounds(), node.getBounds());
}
private Rectangle2D getClassNodeWithAttributesBounds() {
return new Rectangle2D.Double(0.0, 0.0, 100.0, 76.0);
}
private Rectangle2D getClassNodeWithNameBounds() {
return new Rectangle2D.Double(0.0, 0.0, 100.0, 60.0);
}
private Rectangle2D getClassNodeWithMethodsBounds() {
return new Rectangle2D.Double(0.0, 0.0, 100.0, 76.0);
}
private Rectangle2D getClassNodeWithNameAndMethodsBounds() {
return new Rectangle2D.Double(0.0, 0.0, 100.0, 92.0);
}
private Rectangle2D getFullClassNodeBounds() {
return new Rectangle2D.Double(0.0, 0.0, 100.0, 108.0);
}
private Rectangle2D getEmptyClassNodeBounds() {
return new Rectangle2D.Double(0.0, 0.0, 100.0, 60.0);
}
private void assertBounds(Rectangle2D expected, Rectangle2D actual) {
assertEquals(expected.getX(), actual.getX(), 0.0);
assertEquals(expected.getY(), actual.getY(), 0.0);
assertEquals(expected.getHeight(), actual.getHeight(), 0.0);
assertEquals(expected.getWidth(), actual.getWidth(), 0.0);
}
private MultiLineString createMultiLineString(String text) {
MultiLineString result = new MultiLineString();
result.setText(text);
return result;
}
}