Meshroom/tests/test_multiviewPipeline.py
Fabien Castan 041f98ae8a [tests] tests UIDs on the multiview pipeline
* ensure that identical graphs have the same UIDs
* ensure that multiview pipeline graphs with different input images have
different UIDs on all output attributes
2017-10-31 12:12:51 +01:00

76 lines
3.3 KiB
Python

#!/usr/bin/env python
# coding:utf-8
import meshroom.multiview
def test_multiviewPipeline():
graph1 = meshroom.multiview.photogrammetryPipeline(inputFolder='/non/existing/folder')
graph2 = meshroom.multiview.photogrammetryPipeline(inputImages=[])
graph2b = meshroom.multiview.photogrammetryPipeline(inputImages=[])
graph3 = meshroom.multiview.photogrammetryPipeline(inputImages=['/non/existing/file1', '/non/existing/file2'])
graph4 = meshroom.multiview.photogrammetryPipeline(inputViewpoints=[
{'image': '/non/existing/file1', 'focal': 50},
{'image': '/non/existing/file2', 'focal': 55}
])
graph4b = meshroom.multiview.photogrammetryPipeline(inputViewpoints=[
{'image': '/non/existing/file1', 'focal': 50},
{'image': '/non/existing/file2', 'focal': 55}
])
assert graph1.findNode('CameraInit').imageDirectory.value == '/non/existing/folder'
assert graph2.findNode('CameraInit').imageDirectory.value == ''
assert graph3.findNode('CameraInit').imageDirectory.value == ''
assert graph4.findNode('CameraInit').imageDirectory.value == ''
assert len(graph1.findNode('CameraInit').viewpoints) == 0
assert len(graph2.findNode('CameraInit').viewpoints) == 0
assert len(graph3.findNode('CameraInit').viewpoints) == 2
assert len(graph4.findNode('CameraInit').viewpoints) == 2
viewpoints = graph3.findNode('CameraInit').viewpoints
assert viewpoints[0].image.value == '/non/existing/file1'
assert viewpoints[0].focal.value == -1
assert viewpoints[1].image.value == '/non/existing/file2'
assert viewpoints[1].focal.value == -1
for graph in (graph4, graph4b):
viewpoints = graph.findNode('CameraInit').viewpoints
assert viewpoints[0].image.value == '/non/existing/file1'
assert viewpoints[0].focal.value == 50
assert viewpoints[1].image.value == '/non/existing/file2'
assert viewpoints[1].focal.value == 55
# Ensure that all output UIDs are different as the input is different:
# graph1 != graph2 != graph3 != graph4
for otherGraph in (graph2, graph3, graph4):
for node in graph1.nodes:
otherNode = otherGraph.node(node.name)
for key, attr in node.attributes.items():
if attr.isOutput:
otherAttr = otherNode.attribute(key)
assert attr.uid(None) != otherAttr.uid(None)
# graph2 == graph2b
nodes, edges = graph2.dfsOnFinish()
for node in nodes:
otherNode = graph2b.node(node.name)
for key, attr in node.attributes.items():
otherAttr = otherNode.attribute(key)
if attr.isOutput:
assert attr.uid(None) == otherAttr.uid(None)
else:
for uidIndex in attr.desc.uid:
assert attr.uid(uidIndex) == otherAttr.uid(uidIndex)
# graph4 == graph4b
nodes, edges = graph4.dfsOnFinish()
for node in nodes:
otherNode = graph4b.node(node.name)
for key, attr in node.attributes.items():
otherAttr = otherNode.attribute(key)
if attr.isOutput:
assert attr.uid(None) == otherAttr.uid(None)
else:
for uidIndex in attr.desc.uid:
assert attr.uid(uidIndex) == otherAttr.uid(uidIndex)