def test_all_meta_w_lanes(graph):
    op = build_multi_output_mock_op(
        {
            "Lvl0":
            SlotDesc(level=0, shape=(10, 42), axistags="xy",
                     dtype=numpy.uint8),
            "Lvl1":
            SlotDesc(level=1,
                     shape=(10, 42, 100),
                     axistags="xyz",
                     dtype=numpy.float32),
        },
        graph,
        n_lanes=12,
    )

    assert op.Lvl0.level == 0
    assert op.Lvl1.level == 1

    assert op.Lvl0.ready()
    assert all(subslot.ready() for subslot in op.Lvl1)

    assert op.Lvl0.meta.shape == (10, 42)
    assert all(subslot.meta.shape == (10, 42, 100) for subslot in op.Lvl1)

    assert op.Lvl0.meta.getAxisKeys() == ["x", "y"]
    assert all(subslot.meta.getAxisKeys() == ["x", "y", "z"]
               for subslot in op.Lvl1)
def test_multi_lane_slot_w_lanes(graph):
    op = build_multi_output_mock_op({"Output": SlotDesc(level=1)},
                                    graph,
                                    n_lanes=42)

    assert op.Output.level == 1
    assert len(op.Output) == 42
    assert all(subslot.ready() for subslot in op.Output)
def test_single_default_slot(graph):
    op = build_multi_output_mock_op({"Output": SlotDesc()}, graph)

    assert len(op.inputs) == 0
    assert len(op.outputs) == 1
    assert isinstance(op.Output, OutputSlot)
    assert op.Output.ready()
    assert op.Output.level == 0
def test_multiple_default_slots(graph):
    op = build_multi_output_mock_op(
        {
            "Output0": SlotDesc(),
            "Output1": SlotDesc()
        }, graph)

    assert len(op.inputs) == 0
    assert len(op.outputs) == 2
    assert op.Output0.ready()
    assert op.Output1.ready()
    assert op.Output0.level == 0
    assert op.Output1.level == 0
    assert op.Output0 != op.Output1
def inputs(graph, superpixels):
    slot_data = {
        "WatershedSelectedInput":
        SlotDesc(level=1, dtype=numpy.float32, shape=(5, 6, 1),
                 axistags="yxc"),
        "VoxelData":
        SlotDesc(level=1, dtype=numpy.float32, shape=(5, 6, 1),
                 axistags="yxc"),
        "Superpixels":
        SlotDesc(
            level=1,
            dtype=numpy.uint32,
            shape=(5, 6, 1),
            axistags="yxc",
            data=[superpixels, superpixels],
        ),
    }
    return build_multi_output_mock_op(slot_data, graph, n_lanes=2)
def test_data_access_lvl0(graph):
    op = build_multi_output_mock_op(
        {"Output": SlotDesc(data=numpy.array([42]))}, graph)

    assert op.Output.value == 42
def test_empty(graph):
    op = build_multi_output_mock_op(dict(), graph)

    assert isinstance(op, Operator)
    assert len(op.inputs) == 0
    assert len(op.outputs) == 0
def test_multi_lane_slot(graph):
    op = build_multi_output_mock_op({"Output": SlotDesc(level=1)}, graph)

    assert op.Output.level == 1