3 Commits

Author SHA1 Message Date
bcbbcef321 Add SelectionAttributes unit tests
All checks were successful
CI / build-and-test (pull_request) Successful in 19s
Test core data type for selected/unselected state, default values,
ID constant, interface compliance, and instance independence.

8 tests covering all public API of SelectionAttributes.

Closes #6
2026-03-27 16:56:45 +00:00
692a03ee88 Merge pull request 'test: add ColorAttributes unit tests' (#17) from issue-7/color-attributes-tests into master
All checks were successful
CI / build-and-test (push) Successful in 17s
Reviewed-on: #17
2026-03-27 16:56:35 +00:00
e83a6ba7d1 test: add ColorAttributes unit tests
All checks were successful
CI / build-and-test (pull_request) Successful in 18s
Add 16 tests covering constructor behavior, fill/stroke flags and colors,
null color handling, ID constant, Attributes interface, toString output,
and instance independence.

Closes #7
2026-03-27 17:51:13 +01:00
2 changed files with 201 additions and 0 deletions

View File

@@ -0,0 +1,129 @@
package ovh.gasser.newshapes.attributes;
import org.junit.jupiter.api.Test;
import java.awt.*;
import static org.junit.jupiter.api.Assertions.*;
class ColorAttributesTest {
@Test
void testConstructorStoresFilledFlag() {
ColorAttributes attrs = new ColorAttributes(true, false, Color.RED, Color.BLACK);
assertTrue(attrs.filled, "filled flag should be true when constructed with true");
}
@Test
void testConstructorStoresStrokedFlag() {
ColorAttributes attrs = new ColorAttributes(false, true, Color.RED, Color.BLACK);
assertTrue(attrs.stroked, "stroked flag should be true when constructed with true");
}
@Test
void testConstructorStoresFilledColor() {
ColorAttributes attrs = new ColorAttributes(true, false, Color.BLUE, Color.BLACK);
assertEquals(Color.BLUE, attrs.filledColor, "filledColor should match the constructor argument");
}
@Test
void testConstructorStoresStrokedColor() {
ColorAttributes attrs = new ColorAttributes(false, true, Color.RED, Color.GREEN);
assertEquals(Color.GREEN, attrs.strokedColor, "strokedColor should match the constructor argument");
}
@Test
void testFilledAndStrokedBothTrue() {
ColorAttributes attrs = new ColorAttributes(true, true, Color.RED, Color.BLUE);
assertTrue(attrs.filled);
assertTrue(attrs.stroked);
}
@Test
void testFilledAndStrokedBothFalse() {
ColorAttributes attrs = new ColorAttributes(false, false, Color.RED, Color.BLUE);
assertFalse(attrs.filled);
assertFalse(attrs.stroked);
}
@Test
void testNullFilledColor() {
ColorAttributes attrs = new ColorAttributes(true, false, null, Color.BLACK);
assertNull(attrs.filledColor, "filledColor should accept null");
}
@Test
void testNullStrokedColor() {
ColorAttributes attrs = new ColorAttributes(false, true, Color.RED, null);
assertNull(attrs.strokedColor, "strokedColor should accept null");
}
@Test
void testBothColorsNull() {
ColorAttributes attrs = new ColorAttributes(false, false, null, null);
assertNull(attrs.filledColor);
assertNull(attrs.strokedColor);
}
@Test
void testGetIDReturnsCorrectValue() {
ColorAttributes attrs = new ColorAttributes(false, false, Color.RED, Color.BLACK);
assertEquals(ColorAttributes.ID, attrs.getID());
}
@Test
void testIDConstant() {
assertEquals("COLOR_ATTRS", ColorAttributes.ID);
}
@Test
void testImplementsAttributes() {
ColorAttributes attrs = new ColorAttributes(false, false, Color.RED, Color.BLACK);
assertInstanceOf(Attributes.class, attrs);
}
@Test
void testToStringContainsAllFields() {
ColorAttributes attrs = new ColorAttributes(true, false, Color.RED, Color.BLUE);
String str = attrs.toString();
assertTrue(str.contains("filled=true"), "toString should contain filled value");
assertTrue(str.contains("stroked=false"), "toString should contain stroked value");
assertTrue(str.contains("filledColor"), "toString should contain filledColor");
assertTrue(str.contains("strokedColor"), "toString should contain strokedColor");
}
@Test
void testToStringWithNullColors() {
ColorAttributes attrs = new ColorAttributes(false, false, null, null);
String str = attrs.toString();
assertNotNull(str, "toString should not throw with null colors");
assertTrue(str.contains("filledColor=null"), "toString should show null filledColor");
assertTrue(str.contains("strokedColor=null"), "toString should show null strokedColor");
}
@Test
void testTwoInstancesAreIndependent() {
ColorAttributes attrs1 = new ColorAttributes(true, false, Color.RED, Color.BLACK);
ColorAttributes attrs2 = new ColorAttributes(false, true, Color.BLUE, Color.GREEN);
assertTrue(attrs1.filled);
assertFalse(attrs2.filled);
assertFalse(attrs1.stroked);
assertTrue(attrs2.stroked);
assertEquals(Color.RED, attrs1.filledColor);
assertEquals(Color.BLUE, attrs2.filledColor);
}
@Test
void testFieldsAreImmutable() {
Color fillColor = Color.RED;
Color strokeColor = Color.BLACK;
ColorAttributes attrs = new ColorAttributes(true, true, fillColor, strokeColor);
// Since fields are final, verify they retain their values
assertEquals(Color.RED, attrs.filledColor);
assertEquals(Color.BLACK, attrs.strokedColor);
assertTrue(attrs.filled);
assertTrue(attrs.stroked);
}
}

View File

@@ -0,0 +1,72 @@
package ovh.gasser.newshapes.attributes;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class SelectionAttributesTest {
@Test
void testDefaultConstructorIsUnselected() {
SelectionAttributes attrs = new SelectionAttributes();
assertFalse(attrs.selected, "Default constructor should create unselected state");
}
@Test
void testConstructorWithTrue() {
SelectionAttributes attrs = new SelectionAttributes(true);
assertTrue(attrs.selected, "Constructor with true should create selected state");
}
@Test
void testConstructorWithFalse() {
SelectionAttributes attrs = new SelectionAttributes(false);
assertFalse(attrs.selected, "Constructor with false should create unselected state");
}
@Test
void testGetIDReturnsCorrectValue() {
SelectionAttributes attrs = new SelectionAttributes();
assertEquals(SelectionAttributes.ID, attrs.getID());
}
@Test
void testIDConstant() {
assertEquals("SELECTION_ATTRS", SelectionAttributes.ID);
}
@Test
void testImplementsAttributes() {
SelectionAttributes attrs = new SelectionAttributes();
assertInstanceOf(Attributes.class, attrs);
}
@Test
void testSelectedFieldCanBeToggled() {
SelectionAttributes attrs = new SelectionAttributes(false);
assertFalse(attrs.selected);
attrs.selected = true;
assertTrue(attrs.selected);
attrs.selected = false;
assertFalse(attrs.selected);
}
@Test
void testTwoInstancesAreIndependent() {
SelectionAttributes attrs1 = new SelectionAttributes(true);
SelectionAttributes attrs2 = new SelectionAttributes(false);
assertNotEquals(attrs1.selected, attrs2.selected);
attrs2.selected = true;
assertTrue(attrs1.selected);
assertTrue(attrs2.selected);
// Mutating one doesn't affect the other
attrs1.selected = false;
assertFalse(attrs1.selected);
assertTrue(attrs2.selected);
}
}