def test_get_data_fail():
    data_under_test = FakeInstrument([get_component()])
    under_test = ComponentTreeModel(data_under_test)

    under_test.createIndex(0, 0, data_under_test[0])

    assert under_test.data(QModelIndex(), Qt.DisplayRole) is None
def test_get_flags_fail():
    data_under_test = FakeInstrument([get_component()])
    under_test = ComponentTreeModel(data_under_test)

    under_test.createIndex(0, 0, data_under_test[0])

    assert under_test.flags(QModelIndex()) is Qt.NoItemFlags
def test_component_has_2_rows():
    data_under_test = FakeInstrument([get_component()])
    under_test = ComponentTreeModel(data_under_test)

    test_index = under_test.createIndex(0, 0, data_under_test[0])

    assert under_test.rowCount(test_index) == 2
def test_get_flags_component():
    data_under_test = FakeInstrument([get_component()])
    under_test = ComponentTreeModel(data_under_test)

    index = under_test.createIndex(0, 0, data_under_test[0])

    assert under_test.flags(index) == (Qt.ItemIsEnabled | Qt.ItemIsSelectable)
def test_get_component_parent():
    data_under_test = FakeInstrument([get_component()])
    under_test = ComponentTreeModel(data_under_test)

    test_index = under_test.createIndex(0, 0, data_under_test[0])

    assert under_test.parent(test_index) == QModelIndex()
def test_get_data_success_2():
    data_under_test = FakeInstrument([get_component()])
    under_test = ComponentTreeModel(data_under_test)

    test_index = under_test.createIndex(0, 0, data_under_test[0])

    assert under_test.data(test_index, Qt.SizeHintRole) is None
def test_get_flags_component_info():
    data_under_test = FakeInstrument([get_component()])
    under_test = ComponentTreeModel(data_under_test)

    item = ComponentInfo(parent=data_under_test[0])
    index = under_test.createIndex(0, 0, item)

    assert under_test.flags(index) == Qt.ItemIsEnabled
def test_rowCount_gets_unknown_type():
    data_under_test = FakeInstrument()
    under_test = ComponentTreeModel(data_under_test)

    test_index = under_test.createIndex(0, 0, {})

    with pytest.raises(RuntimeError):
        under_test.rowCount(test_index)
def test_get_flags_transformation_list():
    data_under_test = FakeInstrument([get_component()])
    under_test = ComponentTreeModel(data_under_test)

    component = data_under_test[0]
    component.stored_transforms = component.transforms
    index = under_test.createIndex(0, 0, component.stored_transforms)

    assert under_test.flags(index) == Qt.ItemIsEnabled | Qt.ItemIsSelectable
def test_get_component_info_parent():
    data_under_test = FakeInstrument([get_component()])
    under_test = ComponentTreeModel(data_under_test)

    # Creating ComponentInfo in-line causes a segmentation error
    temp_component_info = ComponentInfo(parent=data_under_test[0])
    test_index = under_test.createIndex(0, 0, temp_component_info)

    assert under_test.parent(
        test_index).internalPointer() is data_under_test[0]
def test_transformation_list_has_0_rows():
    data_under_test = FakeInstrument([get_component()])
    under_test = ComponentTreeModel(data_under_test)

    data_under_test[0].stored_transforms = data_under_test[0].transforms

    test_index = under_test.createIndex(0, 0,
                                        data_under_test[0].stored_transforms)

    assert under_test.rowCount(test_index) == 0
def test_transformation_link_has_0_rows():
    component = get_component()
    translation = component.add_translation(QVector3D(1.0, 0.0, 0.0))
    component.depends_on = translation
    data_under_test = FakeInstrument([component])
    component.stored_transforms = component.transforms
    under_test = ComponentTreeModel(data_under_test)

    test_index = under_test.createIndex(0, 0, component.stored_transforms[0])

    assert under_test.rowCount(test_index) == 0
def test_get_flags_other():
    data_under_test = FakeInstrument([get_component()])
    under_test = ComponentTreeModel(data_under_test)

    class TestObject:
        pass

    test_item = TestObject()
    index = under_test.createIndex(0, 0, test_item)

    assert (under_test.flags(index) == Qt.ItemIsEnabled | Qt.ItemIsSelectable
            | Qt.ItemIsEditable)
def test_get_transform_list_parent():
    data_under_test = FakeInstrument([get_component()])
    under_test = ComponentTreeModel(data_under_test)

    data_under_test[0].stored_transforms = data_under_test[0].transforms

    test_index = under_test.createIndex(0, 0,
                                        data_under_test[0].stored_transforms)

    temp_parent = under_test.parent(test_index)

    assert temp_parent.internalPointer() is data_under_test[0]
    assert temp_parent.row() == 0
def test_get_transformation_link_parent():
    component = get_component()
    data_under_test = FakeInstrument([component])
    component.stored_transforms = component.transforms
    transform_link = LinkTransformation(component.stored_transforms)
    component.stored_transforms.link = transform_link
    component.stored_transforms.has_link = True

    under_test = ComponentTreeModel(data_under_test)

    test_index = under_test.createIndex(0, 0, transform_link)

    found_parent = under_test.parent(test_index)
    assert found_parent.internalPointer(
    ) == data_under_test[0].stored_transforms
    assert found_parent.row() == 1
def test_get_transformation_parent():
    component = get_component()
    translation = component.add_translation(QVector3D(1.0, 0.0, 0.0))
    component.depends_on = translation
    data_under_test = FakeInstrument([component])
    component.stored_transforms = component.transforms
    translation.parent = component.stored_transforms

    under_test = ComponentTreeModel(data_under_test)

    test_index = under_test.createIndex(0, 0, translation)

    found_parent = under_test.parent(test_index)
    assert found_parent.internalPointer(
    ) == data_under_test[0].stored_transforms
    assert found_parent.row() == 1