def test_does_not_link_back_1(nexus_wrapper):
    component1 = add_component_to_file(nexus_wrapper, "field", 42,
                                       "component1")
    component2 = add_component_to_file(nexus_wrapper, "field", 42,
                                       "component2")

    assert not links_back_to_component(component1, component2)
Ejemplo n.º 2
0
def test_GIVEN_nexus_file_with_linked_transformation_but_without_dependee_of_attr_WHEN_opening_nexus_file_THEN_components_linked_contain_dependee_of_attribute(
    nexus_wrapper, ):
    transform_name = "transform_1"
    transform = create_transform(nexus_wrapper, transform_name)

    component1_name = "test_component1"
    component2_name = "test_component2"

    component1 = add_component_to_file(nexus_wrapper,
                                       component_name=component1_name)
    component2 = add_component_to_file(nexus_wrapper,
                                       component_name=component2_name)
    component1.depends_on = transform
    component2.depends_on = transform

    del transform._dataset.attrs[CommonAttrs.DEPENDEE_OF]

    nexus_wrapper.load_nexus_file(nexus_wrapper.nexus_file)
    new_transform_group = nexus_wrapper.nexus_file[transform_name]

    assert CommonAttrs.DEPENDEE_OF in new_transform_group.attrs
    assert len(new_transform_group.attrs[CommonAttrs.DEPENDEE_OF]) == 2
    assert (new_transform_group.attrs[CommonAttrs.DEPENDEE_OF][0] == "/" +
            component1_name)
    assert (new_transform_group.attrs[CommonAttrs.DEPENDEE_OF][1] == "/" +
            component2_name)
def test_linked_component_via_component_1(nexus_wrapper):
    component1 = add_component_to_file(nexus_wrapper, "field", 42, "component1")
    component2 = add_component_to_file(nexus_wrapper, "field", 42, "component2")
    rot = component2.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0)
    component2.depends_on = rot
    component1.transforms.link.linked_component = component2

    new_component = Component(component1.file, component1.group)
    assert new_component.transforms.link.linked_component == component2
def test_does_not_link_back_2(nexus_wrapper):
    component1 = add_component_to_file(nexus_wrapper, "field", 42,
                                       "component1")
    component2 = add_component_to_file(nexus_wrapper, "field", 42,
                                       "component2")
    translation1 = component2.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0)
    component2.depends_on = translation1

    assert not links_back_to_component(component1, component2)
def test_links_back_2(nexus_wrapper):
    component1 = add_component_to_file(nexus_wrapper, "field", 42,
                                       "component1")
    rot1 = component1.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0)
    component1.depends_on = rot1
    component2 = add_component_to_file(nexus_wrapper, "field", 42,
                                       "component2")
    component2.transforms.link.linked_component = component1

    assert links_back_to_component(component1, component2)
Ejemplo n.º 6
0
def test_has_link_2(nexus_wrapper):
    component1 = add_component_to_file(nexus_wrapper, "field", 42,
                                       "component1")
    rot1 = component1.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0)
    component1.depends_on = rot1
    component2 = add_component_to_file(nexus_wrapper, "field", 42,
                                       "component2")
    rot2 = component2.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0)
    component2.depends_on = rot2
    rot1.depends_on = rot2

    new_component = Component(component1.file, component1.group)
    assert new_component.transforms.has_link
def test_remove_from_beginning_3(nexus_wrapper):
    component1 = add_component_to_file(nexus_wrapper, "field", 42, "component1")
    component2 = add_component_to_file(nexus_wrapper, "field", 42, "component2")
    rot1 = component1.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0)
    rot2 = component2.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0)
    component1.depends_on = rot1
    component2.depends_on = rot2
    rot1.depends_on = rot2
    assert len(rot2.dependents) == 2
    rot1.remove_from_dependee_chain()
    assert len(rot2.dependents) == 2
    assert component2 in rot2.dependents
    assert component1 in rot2.dependents
    assert component1.depends_on == rot2
    assert component1.transforms.link.linked_component == component2
def test_remove_from_beginning_1(nexus_wrapper):
    component1 = add_component_to_file(nexus_wrapper, "field", 42, "component1")
    rot = component1.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0)
    component1.depends_on = rot
    assert len(rot.dependents) == 1
    rot.remove_from_dependee_chain()
    assert component1.depends_on is None
Ejemplo n.º 9
0
def test_has_one_transformation_1(nexus_wrapper):
    component1 = add_component_to_file(nexus_wrapper, "field", 42,
                                       "component1")
    rot = component1.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0)
    component1.depends_on = rot
    new_component = Component(component1.file, component1.group)
    assert len(new_component.transforms) == 1
Ejemplo n.º 10
0
def test_multiple_relative_transform_paths_are_converted_to_absolute_path_in_dependee_of_field(
        file, nexus_wrapper):
    component_name = "component_1"

    component1 = add_component_to_file(nexus_wrapper,
                                       component_name=component_name)
    # make depends_on point to relative transformations group
    component1.group["depends_on"] = "transformations/transform1"

    transformations_group = component1.group.create_group("transformations")

    transform1_name = "transform1"
    transform1_dataset = transformations_group.create_dataset(transform1_name,
                                                              data=1)
    transform1_dataset.attrs[CommonAttrs.VECTOR] = qvector3d_to_numpy_array(
        QVector3D(1, 0, 0))
    transform1_dataset.attrs[
        CommonAttrs.TRANSFORMATION_TYPE] = TransformationType.TRANSLATION

    transform2_name = "transform2"

    # make transform1 depends_on point to relative transform in same directory
    transform1_dataset.attrs["depends_on"] = transform2_name

    transform2_dataset = transformations_group.create_dataset(transform2_name,
                                                              data=2)
    transform2_dataset.attrs[CommonAttrs.VECTOR] = qvector3d_to_numpy_array(
        QVector3D(1, 1, 0))
    transform2_dataset.attrs[
        CommonAttrs.TRANSFORMATION_TYPE] = TransformationType.TRANSLATION

    # make sure the depends_on points to the absolute path of the transform it depends on in the file
    assert (Transformation(
        nexus_wrapper,
        transform1_dataset).depends_on.dataset.name == transform2_dataset.name)
Ejemplo n.º 11
0
def test_set_two_dependent_components(nexus_wrapper):

    transform = create_transform(nexus_wrapper, "transform_1")

    component1 = add_component_to_file(nexus_wrapper,
                                       component_name="test_component1")
    component2 = add_component_to_file(nexus_wrapper,
                                       component_name="test_component2")

    transform.register_dependent(component1)
    transform.register_dependent(component2)

    set_dependents = transform.dependents

    assert len(set_dependents) == 2
    assert set_dependents[0] == component1
    assert set_dependents[1] == component2
def test_remove_from_middle(nexus_wrapper):
    component1 = add_component_to_file(nexus_wrapper, "field", 42, "component1")
    component2 = add_component_to_file(nexus_wrapper, "field", 42, "component2")
    component3 = add_component_to_file(nexus_wrapper, "field", 42, "component3")
    rot1 = component1.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0)
    rot2 = component2.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0)
    rot3 = component3.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0)
    component1.depends_on = rot1
    component2.depends_on = rot2
    component3.depends_on = rot3
    component1.transforms.link.linked_component = component2
    component2.transforms.link.linked_component = component3
    rot2.remove_from_dependee_chain()
    assert rot1.depends_on == rot3
    assert component1.transforms.link.linked_component == component3
    assert rot1 in rot3.dependents
    assert component3 in rot3.dependents
def test_remove_from_beginning_2(nexus_wrapper):
    component1 = add_component_to_file(nexus_wrapper, "field", 42,
                                       "component1")
    rot1 = component1.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0)
    rot2 = component1.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0)
    component1.depends_on = rot1
    rot1.depends_on = rot2
    assert len(rot2.get_dependents()) == 1
    rot1.remove_from_dependee_chain()
    assert len(rot2.get_dependents()) == 1
    assert rot2.get_dependents()[0] == component1
    assert component1.depends_on == rot2
Ejemplo n.º 14
0
def test_set_one_dependent_component(nexus_wrapper):

    transform = create_transform(nexus_wrapper, "transform_1")

    component = add_component_to_file(nexus_wrapper, "test_component")

    transform.register_dependent(component)

    set_dependents = transform.dependents

    assert len(set_dependents) == 1
    assert set_dependents[0] == component
Ejemplo n.º 15
0
def test_set_three_dependent_components():
    nexus_wrapper = NexusWrapper(str(uuid1()))

    transform = create_transform(nexus_wrapper, "transform_1")

    component1 = add_component_to_file(nexus_wrapper,
                                       component_name="test_component1")
    component2 = add_component_to_file(nexus_wrapper,
                                       component_name="test_component2")
    component3 = add_component_to_file(nexus_wrapper,
                                       component_name="test_component3")

    transform.register_dependent(component1)
    transform.register_dependent(component2)
    transform.register_dependent(component3)

    set_dependents = transform.get_dependents()

    assert len(set_dependents) == 3
    assert set_dependents[0] == component1
    assert set_dependents[1] == component2
    assert set_dependents[2] == component3
Ejemplo n.º 16
0
def test_set_one_dependent_component():
    nexus_wrapper = NexusWrapper(str(uuid1()))

    transform = create_transform(nexus_wrapper, "transform_1")

    component = add_component_to_file(nexus_wrapper, "test_component")

    transform.register_dependent(component)

    set_dependents = transform.get_dependents()

    assert len(set_dependents) == 1
    assert set_dependents[0] == component
Ejemplo n.º 17
0
def test_register_dependent_twice(nexus_wrapper):

    transform = create_transform(nexus_wrapper, "transform_1")

    component1 = add_component_to_file(nexus_wrapper,
                                       component_name="test_component1")

    transform.register_dependent(component1)
    transform.register_dependent(component1)

    set_dependents = transform.dependents

    assert len(set_dependents) == 1
Ejemplo n.º 18
0
def test_deregister_three_dependent_components(nexus_wrapper):

    transform = create_transform(nexus_wrapper, "transform_1")

    component1 = add_component_to_file(nexus_wrapper,
                                       component_name="test_component1")
    component2 = add_component_to_file(nexus_wrapper,
                                       component_name="test_component2")
    component3 = add_component_to_file(nexus_wrapper,
                                       component_name="test_component3")

    transform.register_dependent(component1)
    transform.register_dependent(component2)
    transform.register_dependent(component3)

    transform.deregister_dependent(component1)
    transform.deregister_dependent(component2)
    transform.deregister_dependent(component3)

    set_dependents = transform.dependents

    assert len(set_dependents) == 0
Ejemplo n.º 19
0
def test_register_dependent_twice():
    nexus_wrapper = NexusWrapper(str(uuid1()))

    transform = create_transform(nexus_wrapper, "transform_1")

    component1 = add_component_to_file(nexus_wrapper,
                                       component_name="test_component1")

    transform.register_dependent(component1)
    transform.register_dependent(component1)

    set_dependents = transform.get_dependents()

    assert len(set_dependents) == 1
def test_remove_from_end(nexus_wrapper):
    component1 = add_component_to_file(nexus_wrapper, "field", 42, "component1")
    rot1 = component1.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0)
    rot2 = component1.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0, depends_on=rot1)
    rot3 = component1.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0, depends_on=rot2)

    component1.depends_on = rot3

    rot1.remove_from_dependee_chain()

    assert rot1.depends_on is None
    assert not rot1.dependents

    assert component1.depends_on.absolute_path == rot3.absolute_path

    assert rot2.dependents[0].absolute_path == rot3.absolute_path
    assert len(component1.transforms) == 2
Ejemplo n.º 21
0
def test_GIVEN_nexus_file_with_linked_transformation_but_without_dependee_of_attr_WHEN_opening_nexus_file_THEN_component_linked_contains_dependee_of_attribute(
):
    nexus_wrapper = NexusWrapper(str(uuid1()))
    transform_name = "transform_1"
    transform = create_transform(nexus_wrapper, transform_name)

    component1_name = "test_component1"

    component1 = add_component_to_file(nexus_wrapper,
                                       component_name=component1_name)
    component1.depends_on = transform
    del transform._dataset.attrs[CommonAttrs.DEPENDEE_OF]

    nexus_wrapper.load_nexus_file(nexus_wrapper.nexus_file)
    new_transform_group = nexus_wrapper.nexus_file[transform_name]

    assert CommonAttrs.DEPENDEE_OF in new_transform_group.attrs
    assert new_transform_group.attrs[
        CommonAttrs.DEPENDEE_OF] == "/" + component1_name
Ejemplo n.º 22
0
def test_transforms_with_no_dependees_return_None_for_depends_on(
        file, nexus_wrapper):
    component_name = "component_1"

    component1 = add_component_to_file(nexus_wrapper,
                                       component_name=component_name)
    # make depends_on point to relative transformations group
    component1.group["depends_on"] = "transformations/transform1"

    transformations_group = component1.group.create_group("transformations")

    transform1_name = "transform1"
    transform1_dataset = transformations_group.create_dataset(transform1_name,
                                                              data=1)
    transform1_dataset.attrs[CommonAttrs.VECTOR] = qvector3d_to_numpy_array(
        QVector3D(1, 0, 0))
    transform1_dataset.attrs[
        CommonAttrs.TRANSFORMATION_TYPE] = TransformationType.TRANSLATION

    transform1_dataset.attrs["depends_on"] = "."
    transformation = Transformation(nexus_wrapper, transform1_dataset)

    assert not transformation.depends_on
def test_linked_component_is_none_3(nexus_wrapper):
    component1 = add_component_to_file(nexus_wrapper, "field", 42, "component1")
    new_component = Component(component1.file, component1.group)
    assert new_component.transforms.link.linked_component is None
def test_linked_component_is_none_1(nexus_wrapper):
    component1 = add_component_to_file(nexus_wrapper, "field", 42, "component1")
    assert component1.transforms.link.linked_component is None
def test_links_back_3(nexus_wrapper):
    component1 = add_component_to_file(nexus_wrapper, "field", 42,
                                       "component1")

    assert links_back_to_component(component1, component1)
Ejemplo n.º 26
0
def test_does_not_have_transformations_2(nexus_wrapper):
    component1 = add_component_to_file(nexus_wrapper, "field", 42,
                                       "component1")
    component1.add_rotation(QVector3D(1.0, 0.0, 0.0), 90.0)
    new_component = Component(component1.file, component1.group)
    assert len(new_component.transforms) == 0
Ejemplo n.º 27
0
def test_does_not_have_transformations_1(nexus_wrapper):
    component1 = add_component_to_file(nexus_wrapper, "field", 42,
                                       "component1")
    new_component = Component(component1.file, component1.group)
    assert len(new_component.transforms) == 0
Ejemplo n.º 28
0
def test_no_link_1(nexus_wrapper):
    component1 = add_component_to_file(nexus_wrapper, "field", 42,
                                       "component1")
    new_component = Component(component1.file, component1.group)
    assert not new_component.transforms.has_link