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)
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)
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
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
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)
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
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
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
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
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
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
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
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
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)
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
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
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