Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# |tests] Apply PEP8 linting
ed96364ad9b667c0cb9f719c6c00e3d554f83291
# [tests] nodes: Apply PEP8 linting
7ad706035874185caa13cfe8f79407cbe5d6edf9
# [submitters] Apply PEP8 linting
c3151e0f97ce07dc752e6d63b7f6f7e5ab1c74e4
# [components] Apply PEP8 linting
Expand Down
5 changes: 4 additions & 1 deletion tests/nodes/test/Color.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class Color(desc.Node):
),
]


class NestedColor(desc.Node):
inputs = [
desc.GroupAttribute(
Expand All @@ -27,7 +28,9 @@ class NestedColor(desc.Node):
desc.FloatParam(name="r", label="r", description="r", value=0.0),
desc.FloatParam(name="g", label="g", description="g", value=0.0),
desc.FloatParam(name="b", label="b", description="b", value=0.0),
desc.GroupAttribute(label="test", name="test", description="",
desc.GroupAttribute(
name="test",
label="test",
items=[
desc.FloatParam(name="r", label="r", description="r", value=0.0),
desc.FloatParam(name="g", label="g", description="g", value=0.0),
Expand Down
3 changes: 2 additions & 1 deletion tests/nodes/test/InputDynamicOutputs.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from meshroom.core import desc


class InputDynamicOutputs(desc.InputNode):
inputs = [
desc.File(
Expand All @@ -17,4 +18,4 @@ class InputDynamicOutputs(desc.InputNode):
description="A file Output.",
value=None,
),
]
]
8 changes: 5 additions & 3 deletions tests/nodes/test/NestedTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@ class NestedTest(desc.Node):
exposed=True,
items=[
desc.FloatParam(name="x", label="x", description="x", value=0.0),
desc.FloatParam(name="y", label="z", description="z", value=0.0),
desc.FloatParam(name="y", label="y", description="y", value=0.0),
desc.FloatParam(name="z", label="z", description="z", value=0.0),
desc.GroupAttribute(label="test", name="test", description="",
desc.GroupAttribute(
name="test",
label="test",
items=[
desc.StringParam(name="x", label="x", description="x", value="test"),
desc.FloatParam(name="y", label="z", description="z", value=0.0),
desc.FloatParam(name="y", label="y", description="y", value=0.0),
desc.FloatParam(name="z", label="z", description="z", value=0.0),
],
),
Expand Down
5 changes: 4 additions & 1 deletion tests/nodes/test/Position.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class Position(desc.Node):
),
]


class NestedPosition(desc.Node):
inputs = [
desc.GroupAttribute(
Expand All @@ -27,7 +28,9 @@ class NestedPosition(desc.Node):
desc.FloatParam(name="x", label="x", description="x", value=0.0),
desc.FloatParam(name="y", label="y", description="y", value=0.0),
desc.FloatParam(name="z", label="z", description="z", value=0.0),
desc.GroupAttribute(label="test", name="test", description="",
desc.GroupAttribute(
name="test",
label="test",
items=[
desc.FloatParam(name="x", label="x", description="x", value=0.0),
desc.FloatParam(name="y", label="y", description="y", value=0.0),
Expand Down
2 changes: 1 addition & 1 deletion tests/nodes/test/nodeValidators.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class NodeWithValidators(desc.CommandLineNode):
label="Mandatory Input",
description="",
value="",
validators= [
validators=[
NotEmptyValidator()
]
),
Expand Down
2 changes: 1 addition & 1 deletion tests/plugins/meshroom/pluginA/PluginANodeA.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,4 @@ class PluginANodeA(desc.Node):

def process(self, node):
time.sleep(3) # Simulates a long process
node.output.value = node.input.value + "_value"
node.output.value = node.input.value + "_value"
20 changes: 10 additions & 10 deletions tests/plugins/meshroom/pluginSubmitter/PluginSubmitter.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@

class PluginSubmitterA(desc.Node):
"""
Test process no parallelization
Test process no parallelization.
"""
parallelization = None

inputs = [
desc.IntParam(
name="nbChunks",
Expand Down Expand Up @@ -48,37 +48,37 @@ def processChunk(self, chunk):
iteration = chunk.range.iteration
nbBlocks = chunk.range.nbBlocks
LOGGER.info(f"> Process chunk {iteration}/{nbBlocks}")
LOGGER.info(f"> Done")
LOGGER.info("> Done")


class PluginSubmitterA1(PluginSubmitterA):
"""
Test process with parallelization and dynamic node size
Test process with parallelization and static node size.
"""
size = desc.StaticNodeSize(2)
parallelization = desc.Parallelization(blockSize=1)


class PluginSubmitterB(PluginSubmitterA):
"""
Test process with parallelization adn static node size
Test process with parallelization and static node size.
"""
size = desc.StaticNodeSize(2)
parallelization = desc.Parallelization(blockSize=1)

def postprocess(self, node):
LOGGER.info(f"> PluginSubmitterB postprocess Done")
LOGGER.info("> PluginSubmitterB postprocess Done")


class PluginSubmitterC(PluginSubmitterA):
"""
Test process with parallelization and dynamic node size
Test process with parallelization and dynamic node size.
"""
size = desc.DynamicNodeSize("nbChunks")
parallelization = desc.Parallelization(blockSize=1)

def preprocess(self, node):
LOGGER.info(f"> PluginSubmitterC preprocess Done")
LOGGER.info("> PluginSubmitterC preprocess Done")

def postprocess(self, node):
LOGGER.info(f"> PluginSubmitterC postprocess Done")
LOGGER.info("> PluginSubmitterC postprocess Done")
2 changes: 1 addition & 1 deletion tests/test_attributeDescDefaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ def test_param_minimal_creation(attrDesc):
"""All attribute types should be constructible with minimal arguments (name only)."""
assert attrDesc.name is not None
assert attrDesc.label != "" # label is auto-generated from the name
assert attrDesc.description == "" # description defaults to empty string
assert attrDesc.description == "" # description defaults to empty string


@pytest.mark.parametrize("attrDesc", [
Expand Down
81 changes: 39 additions & 42 deletions tests/test_attributeKeyValues.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class NodeWithKeyableAttributes(desc.Node):
),
]


class TestKeyableAttribute:

@classmethod
Expand Down Expand Up @@ -65,7 +66,7 @@ def test_initialization(self):
assert nodeA.keyableFloat.isDefault

# Check attribute description value
assert nodeA.keyableBool.desc.value == True
assert nodeA.keyableBool.desc.value
assert nodeA.keyableInt.desc.value == 5
assert nodeA.keyableFloat.desc.value == 5.5

Expand All @@ -84,67 +85,65 @@ def test_initialization(self):
assert nodeA.keyableInt.getValueStr() == "{}"
assert nodeA.keyableFloat.getValueStr() == "{}"


def test_createReadUpdateDelete(self):
graph = Graph("")

nodeA = graph.addNewNode(NodeWithKeyableAttributes.__name__)

# Check attribute value at key "0", should be default value
assert nodeA.keyableBool.keyValues.getValueAtKeyOrDefault("0") == True
assert nodeA.keyableBool.keyValues.getValueAtKeyOrDefault("0")
assert nodeA.keyableInt.keyValues.getValueAtKeyOrDefault("0") == 5
assert nodeA.keyableFloat.keyValues.getValueAtKeyOrDefault("0") == 5.5

# Check attribute has key "0", should be False (no key)
assert nodeA.keyableBool.keyValues.hasKey("0") == False
assert nodeA.keyableInt.keyValues.hasKey("0") == False
assert nodeA.keyableFloat.keyValues.hasKey("0") == False
assert not nodeA.keyableBool.keyValues.hasKey("0")
assert not nodeA.keyableInt.keyValues.hasKey("0")
assert not nodeA.keyableFloat.keyValues.hasKey("0")

# Add attribute (key, value) at key "0"
nodeA.keyableBool.keyValues.add("0", False)
nodeA.keyableInt.keyValues.add("0", 10)
nodeA.keyableFloat.keyValues.add("0", 10.1)

# Check attribute value at key "0", should be the new value
assert nodeA.keyableBool.keyValues.getValueAtKeyOrDefault("0") == False
assert not nodeA.keyableBool.keyValues.getValueAtKeyOrDefault("0")
assert nodeA.keyableInt.keyValues.getValueAtKeyOrDefault("0") == 10
assert nodeA.keyableFloat.keyValues.getValueAtKeyOrDefault("0") == 10.1

# Check attribute has key "0", should be True (key exists)
assert nodeA.keyableBool.keyValues.hasKey("0") == True
assert nodeA.keyableInt.keyValues.hasKey("0") == True
assert nodeA.keyableFloat.keyValues.hasKey("0") == True
assert nodeA.keyableBool.keyValues.hasKey("0")
assert nodeA.keyableInt.keyValues.hasKey("0")
assert nodeA.keyableFloat.keyValues.hasKey("0")

# Update attribute (key, value) at key "0"
nodeA.keyableBool.keyValues.add("0", True)
nodeA.keyableInt.keyValues.add("0", 20)
nodeA.keyableFloat.keyValues.add("0", 20.2)

# Check attribute value at key "0", should be the new updated value
assert nodeA.keyableBool.keyValues.getValueAtKeyOrDefault("0") == True
assert nodeA.keyableBool.keyValues.getValueAtKeyOrDefault("0")
assert nodeA.keyableInt.keyValues.getValueAtKeyOrDefault("0") == 20
assert nodeA.keyableFloat.keyValues.getValueAtKeyOrDefault("0") == 20.2

# Check attribute has key "0", should be True (key exists)
assert nodeA.keyableBool.keyValues.hasKey("0") == True
assert nodeA.keyableInt.keyValues.hasKey("0") == True
assert nodeA.keyableFloat.keyValues.hasKey("0") == True
assert nodeA.keyableBool.keyValues.hasKey("0")
assert nodeA.keyableInt.keyValues.hasKey("0")
assert nodeA.keyableFloat.keyValues.hasKey("0")

# Remove (key, value) at key "0"
nodeA.keyableBool.keyValues.remove("0")
nodeA.keyableInt.keyValues.remove("0")
nodeA.keyableFloat.keyValues.remove("0")

# Check attributes values at key "0", should be default value
assert nodeA.keyableBool.keyValues.getValueAtKeyOrDefault("0") == True
assert nodeA.keyableBool.keyValues.getValueAtKeyOrDefault("0")
assert nodeA.keyableInt.keyValues.getValueAtKeyOrDefault("0") == 5
assert nodeA.keyableFloat.keyValues.getValueAtKeyOrDefault("0") == 5.5

# Check attribute has key "0", should be False (no key)
assert nodeA.keyableBool.keyValues.hasKey("0") == False
assert nodeA.keyableInt.keyValues.hasKey("0") == False
assert nodeA.keyableFloat.keyValues.hasKey("0") == False

assert not nodeA.keyableBool.keyValues.hasKey("0")
assert not nodeA.keyableInt.keyValues.hasKey("0")
assert not nodeA.keyableFloat.keyValues.hasKey("0")

def test_multipleKeys(self):
graph = Graph("")
Expand All @@ -167,32 +166,32 @@ def test_multipleKeys(self):
nodeA.keyableFloat.keyValues.add("2", 3.3)

# Check attribute has key "0", should be True (key exists)
assert nodeA.keyableBool.keyValues.hasKey("0") == True
assert nodeA.keyableInt.keyValues.hasKey("0") == True
assert nodeA.keyableFloat.keyValues.hasKey("0") == True
assert nodeA.keyableBool.keyValues.hasKey("0")
assert nodeA.keyableInt.keyValues.hasKey("0")
assert nodeA.keyableFloat.keyValues.hasKey("0")

# Check attribute has key "1", should be True (key exists)
assert nodeA.keyableBool.keyValues.hasKey("1") == True
assert nodeA.keyableInt.keyValues.hasKey("1") == True
assert nodeA.keyableFloat.keyValues.hasKey("1") == True
assert nodeA.keyableBool.keyValues.hasKey("1")
assert nodeA.keyableInt.keyValues.hasKey("1")
assert nodeA.keyableFloat.keyValues.hasKey("1")

# Check attribute has key "2", should be True (key exists)
assert nodeA.keyableBool.keyValues.hasKey("2") == True
assert nodeA.keyableInt.keyValues.hasKey("2") == True
assert nodeA.keyableFloat.keyValues.hasKey("2") == True
assert nodeA.keyableBool.keyValues.hasKey("2")
assert nodeA.keyableInt.keyValues.hasKey("2")
assert nodeA.keyableFloat.keyValues.hasKey("2")

# Check attributes values at key "0", should be default value
assert nodeA.keyableBool.keyValues.getValueAtKeyOrDefault("0") == False
assert not nodeA.keyableBool.keyValues.getValueAtKeyOrDefault("0")
assert nodeA.keyableInt.keyValues.getValueAtKeyOrDefault("0") == 1
assert nodeA.keyableFloat.keyValues.getValueAtKeyOrDefault("0") == 1.1

# Check attributes values at key "1", should be default value
assert nodeA.keyableBool.keyValues.getValueAtKeyOrDefault("1") == False
assert not nodeA.keyableBool.keyValues.getValueAtKeyOrDefault("1")
assert nodeA.keyableInt.keyValues.getValueAtKeyOrDefault("1") == 2
assert nodeA.keyableFloat.keyValues.getValueAtKeyOrDefault("1") == 2.2

# Check attributes values at key "2", should be default value
assert nodeA.keyableBool.keyValues.getValueAtKeyOrDefault("2") == True
assert nodeA.keyableBool.keyValues.getValueAtKeyOrDefault("2")
assert nodeA.keyableInt.keyValues.getValueAtKeyOrDefault("2") == 3
assert nodeA.keyableFloat.keyValues.getValueAtKeyOrDefault("2") == 3.3

Expand All @@ -202,10 +201,9 @@ def test_multipleKeys(self):
nodeA.keyableFloat.keyValues.remove("1")

# Check attribute has key "1", should be False (no key)
assert nodeA.keyableBool.keyValues.hasKey("1") == False
assert nodeA.keyableInt.keyValues.hasKey("1") == False
assert nodeA.keyableFloat.keyValues.hasKey("1") == False

assert not nodeA.keyableBool.keyValues.hasKey("1")
assert not nodeA.keyableInt.keyValues.hasKey("1")
assert not nodeA.keyableFloat.keyValues.hasKey("1")

def test_linkAttribute(self):
graph = Graph("")
Expand All @@ -223,28 +221,27 @@ def test_linkAttribute(self):
nodeA.keyableInt.connectTo(nodeB.keyableInt)

# Check link
assert nodeB.keyableInt.isLink == True
assert nodeB.keyableInt.isLink
assert nodeB.keyableInt.keyValues == nodeA.keyableInt.keyValues

# Check existing (key, value) in nodeA.keyableInt and nodeB.keyableInt
assert nodeA.keyableInt.keyValues.hasKey("1") == True
assert nodeB.keyableInt.keyValues.hasKey("1") == True
assert nodeA.keyableInt.keyValues.hasKey("1")
assert nodeB.keyableInt.keyValues.hasKey("1")
assert nodeA.keyableInt.keyValues.getValueAtKeyOrDefault("1") == 1
assert nodeB.keyableInt.keyValues.getValueAtKeyOrDefault("1") == 1

# Add a key to nodeB.keyableInt
nodeB.keyableInt.keyValues.add("3", 3)

# Check new (key, value) in nodeA.keyableInt and nodeB.keyableInt
assert nodeA.keyableInt.keyValues.hasKey("3") == True
assert nodeB.keyableInt.keyValues.hasKey("3") == True
assert nodeA.keyableInt.keyValues.hasKey("3")
assert nodeB.keyableInt.keyValues.hasKey("3")
assert nodeA.keyableInt.keyValues.getValueAtKeyOrDefault("3") == 3
assert nodeB.keyableInt.keyValues.getValueAtKeyOrDefault("3") == 3

# Check nodeB.keyableInt serialized values
assert nodeB.keyableInt.getSerializedValue() == nodeA.keyableInt.asLinkExpr()


def test_uid(self):
graph = Graph("")

Expand All @@ -269,4 +266,4 @@ def test_uid(self):
nodeA.keyableInt.keyValues.remove("1")

# Check UID, should not be the same
assert nodeA.keyableInt.uid() != nodeB.keyableInt.uid()
assert nodeA.keyableInt.uid() != nodeB.keyableInt.uid()
Loading
Loading