Esempio n. 1
0
def test_sequence_indexing1():
    # Test adding, moving, deleting pulse in a sequence.
    root = RootSequence()
    root.time_constrained = True
    root.sequence_duration = '1.0'
    context = TestContext()
    root.context = context

    pulse1 = Pulse()
    pulse2 = Pulse()
    pulse3 = Pulse()

    root.items.append(pulse1)
    assert_equal(pulse1.index, 1)
    assert_is(pulse1.root, root)
    assert_items_equal(root.linkable_vars, ['sequence_end',
                                            '1_start', '1_stop', '1_duration'])

    root.items.append(pulse2)
    assert_equal(pulse1.index, 1)
    assert_equal(pulse2.index, 2)
    assert_is(pulse2.root, root)
    assert_items_equal(root.linkable_vars, ['sequence_end',
                                            '1_start', '1_stop', '1_duration',
                                            '2_start', '2_stop', '2_duration'])

    root.items.append(pulse3)
    assert_equal(pulse1.index, 1)
    assert_equal(pulse2.index, 2)
    assert_equal(pulse3.index, 3)
    assert_is(pulse3.root, root)
    assert_items_equal(root.linkable_vars, ['sequence_end',
                                            '1_start', '1_stop', '1_duration',
                                            '2_start', '2_stop', '2_duration',
                                            '3_start', '3_stop', '3_duration'])

    root.time_constrained = False
    root.items.remove(pulse2)
    assert_equal(pulse1.index, 1)
    assert_equal(pulse2.index, 0)
    assert_equal(pulse3.index, 2)
    assert_is(pulse2.root, None)
    assert_items_equal(root.linkable_vars, ['1_start', '1_stop', '1_duration',
                                            '2_start', '2_stop', '2_duration'])

    root.items.insert(1, pulse2)
    assert_equal(pulse1.index, 1)
    assert_equal(pulse2.index, 2)
    assert_equal(pulse3.index, 3)
    assert_is(pulse2.root, root)
    assert_items_equal(root.linkable_vars, ['1_start', '1_stop', '1_duration',
                                            '2_start', '2_stop', '2_duration',
                                            '3_start', '3_stop', '3_duration'])