Skip to content

Commit 3bd2b77

Browse files
fix tests
1 parent 0586102 commit 3bd2b77

File tree

6 files changed

+85
-23
lines changed

6 files changed

+85
-23
lines changed

src/opengeodeweb_viewer/vtk_protocol.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -296,16 +296,22 @@ def takeScreenshot(self, params):
296296

297297
if not include_background:
298298
renderWindow.SetAlphaBitPlanes(1)
299+
w2if.SetInputBufferTypeToRGBA()
300+
else:
301+
renderWindow.SetAlphaBitPlanes(0)
302+
w2if.SetInputBufferTypeToRGB()
303+
304+
renderWindow.Render()
299305

300306
w2if.SetInput(renderWindow)
301-
w2if.SetInputBufferTypeToRGBA()
302307
w2if.ReadFrontBufferOff()
303308
w2if.Update()
304-
renderWindow.SetAlphaBitPlanes(0)
305309

306310
if output_extension == "png":
307311
writer = vtkPNGWriter()
308-
elif output_extension == "jpg":
312+
elif output_extension in ["jpg", "jpeg"]:
313+
if not include_background:
314+
raise Exception("output_extension not supported with background")
309315
writer = vtkJPEGWriter()
310316
else:
311317
raise Exception("output_extension not supported")

src/tests/conftest.py

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ def __init__(self, log):
3030
self.call("viewport.image.push.observer.add", [-1])
3131
for i in range(5):
3232
print(f"{i=}", flush=True)
33-
reponse = self.ws.recv()
34-
print(f"{reponse=}", flush=True)
33+
response = self.ws.recv()
34+
print(f"{response=}", flush=True)
3535

3636
def call(self, rpc, params=[{}]):
3737
print(f"{rpc=} {params=}", flush=True)
@@ -62,6 +62,26 @@ def get_response(self):
6262
return response
6363
else:
6464
return eval(response)
65+
def images_diff(self, first_image_path, second_image_path):
66+
if ".png" in first_image_path:
67+
first_reader = vtk.vtkPNGReader()
68+
elif (".jpg" in first_image_path) or (".jpeg" in first_image_path):
69+
first_reader = vtk.vtkJPEGReader()
70+
first_reader.SetFileName(first_image_path)
71+
72+
if ".png" in second_image_path:
73+
second_reader = vtk.vtkPNGReader()
74+
elif (".jpg" in second_image_path) or (".jpeg" in second_image_path):
75+
second_reader = vtk.vtkJPEGReader()
76+
second_reader.SetFileName(second_image_path)
77+
78+
images_diff = vtk.vtkImageDifference()
79+
images_diff.SetInputConnection(first_reader.GetOutputPort())
80+
images_diff.SetImageConnection(second_reader.GetOutputPort())
81+
images_diff.Update()
82+
83+
print(f"{images_diff.GetThresholdedError()=}")
84+
return images_diff.GetThresholdedError()
6585

6686
def compare_image(self, nb_messages, filename):
6787
for message in range(nb_messages):
@@ -86,20 +106,10 @@ def compare_image(self, nb_messages, filename):
86106
f.write(image)
87107
f.close()
88108

89-
test_reader = vtk.vtkJPEGReader()
90-
test_reader.SetFileName(test_file_path)
91-
92109
path_image = os.path.join(self.images_dir_path, filename)
93-
answer_reader = vtk.vtkJPEGReader()
94-
answer_reader.SetFileName(path_image)
95110

96-
images_diff = vtk.vtkImageDifference()
97-
images_diff.SetInputConnection(test_reader.GetOutputPort())
98-
images_diff.SetImageConnection(answer_reader.GetOutputPort())
99-
images_diff.Update()
111+
return self.images_diff(test_file_path, path_image)==0.0
100112

101-
print(f"{images_diff.GetThresholdedError()=}")
102-
return images_diff.GetThresholdedError() == 0.0
103113

104114

105115
class FixtureHelper:
Loading
Loading
Loading

src/tests/test_protocol.py

Lines changed: 53 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -107,22 +107,68 @@ def test_set_color(server):
107107

108108

109109
def test_take_screenshot(server):
110-
110+
# Create an object
111111
server.call(
112112
"create_object_pipeline",
113113
[{"id": "123456789", "file_name": "hat.vtp"}],
114114
)
115115
assert server.compare_image(3, "create_object_pipeline.jpeg") == True
116116

117+
118+
# Take a screenshot with background jpg
119+
server.call(
120+
"take_screenshot",
121+
[{"filename": "take_screenshot_with_background", "output_extension": "jpg", "include_background": True}],
122+
)
123+
124+
response = server.get_response()
125+
blob = server.get_response()
126+
assert type(blob) is bytes
127+
128+
with open(os.path.join(server.test_output_dir, "test.jpg"), "wb") as f:
129+
f.write(blob)
130+
f.close()
131+
first_image_path = os.path.join(server.test_output_dir, "test.jpg")
132+
second_image_path = os.path.join(server.images_dir_path, "take_screenshot_with_background.jpg")
133+
134+
assert server.images_diff(first_image_path, second_image_path) == 0.0
135+
136+
# Take a screenshot without background png
117137
server.call(
118138
"take_screenshot",
119-
[{"filename": "screenshot", "output_extension": "png", "include_background": False}],
139+
[{"filename": "take_screenshot_without_background", "output_extension": "png", "include_background": True}],
120140
)
141+
142+
response = server.get_response()
143+
response = server.get_response()
144+
blob = server.get_response()
145+
print(f"{blob=}", flush=True)
146+
assert type(blob) is bytes
121147

122-
response1 = server.get_response()
123-
print(f"{response1=}", flush=True)
124-
response2 = server.get_response()
125-
print(f"{response2=}", flush=True)
148+
with open(os.path.join(server.test_output_dir, "test.png"), "wb") as f:
149+
f.write(blob)
150+
f.close()
151+
first_image_path = os.path.join(server.test_output_dir, "test.png")
152+
second_image_path = os.path.join(server.images_dir_path, "take_screenshot_without_background.png")
126153

127-
blob = response2
154+
assert server.images_diff(first_image_path, second_image_path) == 0.0
155+
156+
# Take a screenshot with background png
157+
server.call(
158+
"take_screenshot",
159+
[{"filename": "take_screenshot_with_background", "output_extension": "png", "include_background": True}],
160+
)
161+
162+
response = server.get_response()
163+
response = server.get_response()
164+
blob = server.get_response()
165+
print(f"{blob=}", flush=True)
128166
assert type(blob) is bytes
167+
168+
with open(os.path.join(server.test_output_dir, "test.png"), "wb") as f:
169+
f.write(blob)
170+
f.close()
171+
first_image_path = os.path.join(server.test_output_dir, "test.png")
172+
second_image_path = os.path.join(server.images_dir_path, "take_screenshot_with_background.png")
173+
174+
assert server.images_diff(first_image_path, second_image_path) == 0.0

0 commit comments

Comments
 (0)