~timo-jyrinki/ubuntu/trusty/pitivi/backport_utopic_fixes

« back to all changes in this revision

Viewing changes to tests/test_timeline_undo.py

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2011-05-26 15:29:58 UTC
  • mfrom: (3.1.20 experimental)
  • Revision ID: james.westby@ubuntu.com-20110526152958-90je1myzzjly26vw
Tags: 0.13.9.90-1ubuntu1
* Resynchronize on Debian
* debian/control:
  - Depend on python-launchpad-integration
  - Drop hal from Recommends to Suggests. This version has the patch applied
    to not crash without hal.
* debian/patches/01_lpi.patch:
  - launchpad integration  
* debian/rules:
  - Use gnome.mk so a translation template is built

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
gobject.threads_init()
26
26
import gst
27
27
 
 
28
from pitivi.pipeline import Pipeline
28
29
from pitivi.timeline.timeline import Timeline, TimelineObject, SELECT_ADD
29
 
from pitivi.timeline.track import Track, SourceTrackObject
30
 
from pitivi.factories.test import VideoTestSourceFactory
 
30
from pitivi.timeline.track import Track, SourceTrackObject, TrackEffect
 
31
from pitivi.factories.test import VideoTestSourceFactory, TestEffectFactory
31
32
from pitivi.stream import VideoStream
32
33
from pitivi.timeline.timeline_undo import TimelineLogObserver, \
33
34
        TimelineObjectAdded, TimelineObjectRemoved, \
34
 
        TimelineObjectPropertyChanged
 
35
        TimelineObjectPropertyChanged, TrackEffectAdded, \
 
36
        TrackEffectRemoved
35
37
from pitivi.undo import UndoableActionLog
36
38
 
37
39
class TestTimelineLogObserver(TimelineLogObserver):
46
48
    def _connectToTimelineObject(self, timeline_object):
47
49
        TimelineLogObserver._connectToTimelineObject(self, timeline_object)
48
50
        timeline_object.connected = True
49
 
    
 
51
 
50
52
    def _disconnectFromTimelineObject(self, timeline_object):
51
53
        TimelineLogObserver._disconnectFromTimelineObject(self, timeline_object)
52
54
        timeline_object.connected = False
54
56
def new_stream():
55
57
    return VideoStream(gst.Caps("video/x-raw-rgb"))
56
58
 
57
 
def new_factory():
 
59
def new_source_factory():
58
60
    return VideoTestSourceFactory()
59
61
 
60
62
class TestTimelineLogObserverConnections(TestCase):
65
67
    def testConnectionAndDisconnection(self):
66
68
        timeline = Timeline()
67
69
        stream = new_stream()
68
 
        factory = new_factory()
 
70
        factory = new_source_factory()
69
71
        track = Track(stream)
70
72
        track_object1 = SourceTrackObject(factory, stream)
71
73
        track.addTrackObject(track_object1)
91
93
class  TestTimelineUndo(TestCase):
92
94
    def setUp(self):
93
95
        self.stream = new_stream()
94
 
        self.factory = new_factory()
 
96
        self.factory = new_source_factory()
 
97
        self.effect_factory = TestEffectFactory(self.stream)
95
98
        self.track1 = Track(self.stream)
96
99
        self.track2 = Track(self.stream)
97
100
        self.timeline = Timeline()
99
102
        self.timeline.addTrack(self.track2)
100
103
        self.track_object1 = SourceTrackObject(self.factory, self.stream)
101
104
        self.track_object2 = SourceTrackObject(self.factory, self.stream)
 
105
        self.track_effect1 = TrackEffect(self.effect_factory, self.stream)
 
106
        self.track_effect2 = TrackEffect(self.effect_factory, self.stream)
102
107
        self.track1.addTrackObject(self.track_object1)
103
108
        self.track2.addTrackObject(self.track_object2)
104
109
        self.timeline_object1 = TimelineObject(self.factory)
161
166
        self.failIf(self.timeline_object1 \
162
167
                in self.timeline.timeline_objects)
163
168
 
 
169
    def testAddEffectToTimelineObject(self):
 
170
        stacks = []
 
171
        pipeline = Pipeline()
 
172
        def commitCb(action_log, stack, nested):
 
173
            stacks.append(stack)
 
174
        self.action_log.connect("commit", commitCb)
 
175
        self.observer.pipeline = pipeline
 
176
 
 
177
        #FIXME Should I commit it and check there are 2 elements
 
178
        #in the stacks
 
179
        self.timeline.addTimelineObject(self.timeline_object1)
 
180
        self.track1.addTrackObject(self.track_effect1)
 
181
 
 
182
        self.action_log.begin("add effect")
 
183
        self.timeline_object1.addTrackObject(self.track_effect1)
 
184
        self.action_log.commit()
 
185
 
 
186
        self.failUnlessEqual(len(stacks), 1)
 
187
        stack = stacks[0]
 
188
        self.failUnlessEqual(len(stack.done_actions), 1)
 
189
        action = stack.done_actions[0]
 
190
        self.failUnless(isinstance(action, TrackEffectAdded))
 
191
 
 
192
        self.failUnless(self.track_effect1 \
 
193
                in self.timeline_object1.track_objects)
 
194
        self.failUnless(self.track_effect1 \
 
195
                in self.track1.track_objects)
 
196
        self.failUnless(len([effect for effect in \
 
197
                                self.timeline_object1.track_objects
 
198
                                if isinstance(effect, TrackEffect)]) == 1)
 
199
        self.failUnless(len([effect for effect in self.track1.track_objects
 
200
                             if isinstance(effect, TrackEffect)]) == 1)
 
201
 
 
202
        self.action_log.undo()
 
203
        self.failIf(self.track_effect1 \
 
204
                in self.timeline_object1.track_objects)
 
205
        self.failIf(self.track_effect1 \
 
206
                in self.track1.track_objects)
 
207
 
 
208
        self.action_log.redo()
 
209
        self.failUnless(len([effect for effect in
 
210
                                self.timeline_object1.track_objects
 
211
                                if isinstance(effect, TrackEffect)]) == 1)
 
212
        self.failUnless(len([effect for effect in self.track1.track_objects
 
213
                             if isinstance(effect, TrackEffect)]) == 1)
 
214
 
 
215
        self.timeline.removeTimelineObject(self.timeline_object1, deep=True)
 
216
 
164
217
    def testTimelineObjectPropertyChange(self):
165
218
        stacks = []
166
219
        def commitCb(action_log, stack, nested):