def test_addition_non_default_base(self): tc1 = TimeCode(frames=25, base=30) tc2 = TimeCode(frames=24, base=30) new_tc = tc1 + tc2 self.assertEquals(new_tc.base(), tc1.base()) self.assertEquals(new_tc.frames(), 49)
def test_subtraction_non_default_base(self): tc1 = TimeCode(frames=10, base=10) tc2 = TimeCode(frames=5, base=10) new_tc = tc1 - tc2 self.assertEquals(new_tc.base(), tc1.base()) self.assertEquals(new_tc.frames(), 5)
def parse(edl_path, start_tc=None): if not os.path.exists(edl_path): raise IOError('Path does not exist: %s' % edl_path) edl_file = open(edl_path, 'rt') edl_lines = edl_file.readlines() edl_file.close() # check if we there is a TITLE specified search = re.search(r'TITLE:\s+(.*)', edl_lines[0]) if not search: edl_name = 'edl' else: edl_name = search.groups(0)[0].strip() if start_tc: the_edl = EDL(edl_name, edl_path, start_timecode=TimeCode(start_tc)) else: the_edl = EDL(edl_name, edl_path) edit_number_exp = re.compile(r'(\d{3})') edit_search_exp = re.compile(r'\d{3}.*[A-Z]\s(.*)') edit_name_exp = re.compile(r'\*\sFROM\sCLIP\sNAME:\s(.*)') for i in range(2, len(edl_lines), 2): tc_line = edl_lines[i] name_line = edl_lines[i + 1] edit_search = re.search(edit_search_exp, tc_line) if edit_search: edit_tc = edit_search.groups(0)[0].strip() else: continue edit_number_search = re.search(edit_number_exp, tc_line) if edit_number_search: edit_number = int(edit_number_search.groups(0)[0]) else: edit_number = 1 edit_name_search = re.search(edit_name_exp, name_line) if edit_name_search: edit_name = edit_name_search.groups(0)[0].strip() else: edit_name = 'edit' tc_parts = edit_tc.split(' ') media_in_out = (TimeCode(tc_parts[0]), TimeCode(tc_parts[1])) global_in_out = (TimeCode(tc_parts[2]), TimeCode(tc_parts[3])) current_edit = Edit(edit_number, edit_name, media_in_out, global_in_out) the_edl.appendEdit(current_edit) return the_edl
class Test_toFrames(unittest.TestCase): def setUp(self): self.tc = TimeCode() self.tc30 = TimeCode(base=30) def test_frames(self): self.assertEquals(self.tc.toFrames('00:00:00:01'), 1) def test_seconds(self): self.assertEquals(self.tc.toFrames('00:00:01:00'), 24) def test_seconds_30fps(self): self.assertEquals(self.tc30.toFrames('00:00:01:00'), 30) def test_minutes(self): self.assertEquals(self.tc.toFrames('00:01:00:00'), 1440) def test_minute_30fps(self): self.assertEquals(self.tc30.toFrames('00:01:00:00'), 1800) def test_hour(self): self.assertEquals(self.tc.toFrames('01:00:00:00'), 86400) def test_hour_30fps(self): self.assertEquals(self.tc30.toFrames('01:00:00:00'), 108000) def test_all_fields(self): self.assertEquals(self.tc.toFrames('01:02:03:04'), 89356) def test_all_fields_30fps(self): self.assertEquals(self.tc30.toFrames('01:02:03:04'), 111694) def test_negative_tc(self): self.assertEquals(self.tc.toFrames('-00:00:01:02'), -26) def test_invalid_codes(self): self.assertRaises(RuntimeError, self.tc.toFrames, 'abc') self.assertRaises(RuntimeError, self.tc.toFrames, '00:00:00') self.assertRaises(RuntimeError, self.tc.toFrames, '00:00') self.assertRaises(RuntimeError, self.tc.toFrames, '') self.assertRaises(RuntimeError, self.tc.toFrames, '00:00:00:00:00')
class Test_basic_functions(unittest.TestCase): def setUp(self): self.tc1 = TimeCode(frames=4) self.tc2 = TimeCode(frames=3) def test_get_frames(self): self.assertEquals(self.tc1.frames(), 4) def test_addition(self): new_tc = self.tc1 + self.tc2 self.assertEquals(new_tc.frames(), 7) def test_subtraction(self): new_tc = self.tc1 - self.tc2 self.assertEquals(new_tc.frames(), 1) def test_addition_mixed_bases(self): tc1 = TimeCode(frames=25, base=25) tc2 = TimeCode(frames=24, base=24) # raise error when adding mixed bases self.assertRaises(TimeCodeError, tc1.__add__, tc2) def test_addition_non_default_base(self): tc1 = TimeCode(frames=25, base=30) tc2 = TimeCode(frames=24, base=30) new_tc = tc1 + tc2 self.assertEquals(new_tc.base(), tc1.base()) self.assertEquals(new_tc.frames(), 49) def test_subtraction_mixed_bases(self): tc1 = TimeCode(frames=25, base=25) tc2 = TimeCode(frames=25, base=24) self.assertRaises(TimeCodeError, tc1.__sub__, tc2) def test_subtraction_non_default_base(self): tc1 = TimeCode(frames=10, base=10) tc2 = TimeCode(frames=5, base=10) new_tc = tc1 - tc2 self.assertEquals(new_tc.base(), tc1.base()) self.assertEquals(new_tc.frames(), 5) def test_repr(self): self.assertEquals("<TimeCode:00:00:00:04>", repr(self.tc1))
class Test_basic_functions(unittest.TestCase): def setUp(self): self.tc1 = TimeCode(frames=4) self.tc2 = TimeCode(frames=3) def test_get_frames(self): self.assertEquals(self.tc1.frames(), 4) def test_addition(self): new_tc = self.tc1 + self.tc2 self.assertEquals(new_tc.frames(), 7) def test_subtraction(self): new_tc = self.tc1 - self.tc2 self.assertEquals(new_tc.frames(), 1)
def test_tc(self): tc = TimeCode(tc='00:00:01:00') self.assertEquals(tc._base, 24) self.assertEquals(tc._frames, 24)
def setUp(self): self.tc = TimeCode() self.tc30 = TimeCode(base=30)
def test_frames_tc_tc_empty(self): tc = TimeCode(tc="00:00:00:00", frames=2) self.assertEquals(tc.base(), 24) self.assertEquals(tc._frames, 2)
def test_defaults(self): tc = TimeCode() self.assertEquals(tc._base, 24) self.assertEquals(tc._frames, 0)
def setUp(self): self.tc1 = TimeCode(frames=4) self.tc2 = TimeCode(frames=3)
def test_tc(self): tc = TimeCode(tc="00:00:01:00") self.assertEquals(tc.base(), 24) self.assertEquals(tc._frames, 24)
def test_frames_tc_empty(self): tc = TimeCode(tc='00:00:00:00', frames=0) self.assertEquals(tc._frames, 0)
def test_frames(self): tc = TimeCode(frames=20) self.assertEquals(tc._base, 24) self.assertEquals(tc._frames, 20)
def test_base(self): tc = TimeCode(base=30) self.assertEquals(tc._base, 30) self.assertEquals(tc._frames, 0)
def test_base(self): tc = TimeCode(base=30) self.assertEquals(tc.base(), 30) self.assertEquals(tc._frames, 0)
def test_frames_tc_frames_empty(self): tc = TimeCode(tc="00:00:00:12", frames=0) self.assertEquals(tc.base(), 24) self.assertEquals(tc._frames, 12)
def test_negative_timecode(self): tc = TimeCode(tc="-00:00:01:01", base=25) self.assertEquals(tc.frames(), -26) self.assertEquals(tc.tc(), "-00:00:01:01")
def test_create_from_msec(self): tc = TimeCode.from_msec(2520.0, base=25) self.assertEquals(tc.tc(), "00:00:02:13")
def test_frames_tc_frames_empty(self): tc = TimeCode(tc='00:00:00:12', frames=0) self.assertEquals(tc._base, 24) self.assertEquals(tc._frames, 12)
def test_frames_tc_tc_empty(self): tc = TimeCode(tc='00:00:00:00', frames=2) self.assertEquals(tc._base, 24) self.assertEquals(tc._frames, 2)
def test_frames(self): tc = TimeCode(frames=20) self.assertEquals(tc.base(), 24) self.assertEquals(tc._frames, 20)