Skip to content

Commit da39a98

Browse files
committed
add unit tests in addition to e2e tests
1 parent 9a3177d commit da39a98

File tree

2 files changed

+137
-0
lines changed

2 files changed

+137
-0
lines changed

tests/test_layeredimage.py

+86
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import pytest
2+
from PIL import Image
3+
4+
from layeredimage.layeredimage import LayeredImage
5+
from layeredimage.layergroup import Group, Layer
6+
7+
8+
@pytest.fixture()
9+
def example_layer():
10+
# Provide a simple example layer for testing
11+
return Layer(name="Example Layer", image=Image.new("RGBA", (100, 100)))
12+
13+
@pytest.fixture()
14+
def example_group(example_layer):
15+
# Provide a simple example group containing the example layer for testing
16+
return Group(name="Example Group",layers=[example_layer])
17+
18+
@pytest.fixture()
19+
def example_image(example_group):
20+
# Provide a simple example LayeredImage containing the example group for testing
21+
return LayeredImage(layersAndGroups=[example_group])
22+
23+
def test_layered_image_init() -> None:
24+
# Test initialization of LayeredImage
25+
img = LayeredImage([])
26+
assert isinstance(img, LayeredImage)
27+
28+
def test_add_layer_or_group(example_image, example_layer) -> None:
29+
# Test adding a layer to LayeredImage
30+
initial_count = len(example_image.layersAndGroups)
31+
example_image.addLayerOrGroup(example_layer)
32+
assert len(example_image.layersAndGroups) == initial_count + 1
33+
34+
def test_insert_layer_or_group(example_image, example_layer) -> None:
35+
# Test inserting a layer into LayeredImage
36+
example_image.insertLayerOrGroup(example_layer, 0)
37+
assert example_image.layersAndGroups[0] == example_layer
38+
39+
def test_remove_layer_or_group(example_image, example_layer) -> None:
40+
# Test removing a layer from LayeredImage
41+
example_image.addLayerOrGroup(example_layer)
42+
initial_count = len(example_image.layersAndGroups)
43+
example_image.removeLayerOrGroup(0)
44+
assert len(example_image.layersAndGroups) == initial_count - 1
45+
46+
def test_get_layer_or_group(example_image, example_group) -> None:
47+
# Test getting a layer or group from LayeredImage
48+
assert example_image.getLayerOrGroup(0) == example_group
49+
50+
def test_extract_layers(example_image, example_layer) -> None:
51+
# Test extracting layers from LayeredImage
52+
example_image.addLayerOrGroup(example_layer)
53+
assert len(example_image.extractLayers()) == 2
54+
55+
def test_update_layers(example_image, example_layer) -> None:
56+
# Test updating layers in LayeredImage
57+
example_image.addLayerOrGroup(example_layer)
58+
example_image.updateLayers()
59+
assert len(example_image.layers) == 2
60+
61+
def test_extract_groups(example_image, example_group) -> None:
62+
# Test extracting groups from LayeredImage
63+
assert len(example_image.extractGroups()) == 1
64+
65+
def test_update_groups(example_image, example_group) -> None:
66+
# Test updating groups in LayeredImage
67+
example_image.addLayerOrGroup(example_group)
68+
example_image.updateGroups()
69+
assert len(example_image.groups) == 2
70+
71+
def test_get_flatten_layers(example_image) -> None:
72+
# Test flattening layers in LayeredImage
73+
img = example_image.getFlattenLayers()
74+
assert isinstance(img, Image.Image)
75+
76+
def test_layered_image_repr(example_image) -> None:
77+
# Test string representation of LayeredImage
78+
assert repr(example_image) == str(example_image)
79+
80+
def test_layered_image_str(example_image) -> None:
81+
# Test string representation of LayeredImage
82+
assert str(example_image) == "<LayeredImage (100x100) with 1 children>"
83+
84+
def test_layered_image_json(example_image) -> None:
85+
# Test getting LayeredImage as a dictionary
86+
assert isinstance(example_image.json(), dict)

tests/test_layergroup.py

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import pytest
2+
from PIL import Image
3+
4+
from layeredimage.layergroup import Group, Layer
5+
6+
7+
@pytest.fixture()
8+
def example_image():
9+
# Provide a simple example PIL image for testing
10+
return Image.new("RGBA", (100, 100))
11+
12+
@pytest.fixture()
13+
def example_layer(example_image):
14+
# Provide a simple example layer for testing
15+
return Layer(name="Example Layer", image=example_image)
16+
17+
@pytest.fixture()
18+
def example_group(example_layer):
19+
# Provide a simple example group containing the example layer for testing
20+
return Group(name="Example Group", layers=[example_layer])
21+
22+
def test_layer_group_init(example_image) -> None:
23+
# Test initialization of LayerGroup
24+
layer_group = Layer(name="Test Layer", dimensions=(100, 100), image=example_image)
25+
assert isinstance(layer_group, Layer)
26+
27+
def test_layer_init(example_image) -> None:
28+
# Test initialization of Layer
29+
layer = Layer(name="Test Layer", image=example_image)
30+
assert isinstance(layer, Layer)
31+
32+
def test_group_init(example_layer) -> None:
33+
# Test initialization of Group
34+
group = Group(name="Test Group", layers=[example_layer])
35+
assert isinstance(group, Group)
36+
37+
def test_layer_group_repr(example_layer) -> None:
38+
# Test string representation of LayerGroup
39+
assert repr(example_layer) == str(example_layer)
40+
41+
def test_layer_group_str(example_layer) -> None:
42+
# Test string representation of LayerGroup
43+
assert str(example_layer) == f'<LayeredImage "{example_layer.name}" ({example_layer.dimensions[0]}x{example_layer.dimensions[1]})>'
44+
45+
def test_layer_json(example_layer) -> None:
46+
# Test getting Layer as a dictionary
47+
assert isinstance(example_layer.json(), dict)
48+
49+
def test_group_json(example_group) -> None:
50+
# Test getting Group as a dictionary
51+
assert isinstance(example_group.json(), dict)

0 commit comments

Comments
 (0)