def test_resolve_one_template_to_many_filenames(self): s = Sequence.create("1-5") template = "image.{frame:02d}.exr" result = s.expand_dollar_f(template) self.assertEqual(len(result), 5) self.assertIn("image.02.exr", result) self.assertIn("image.05.exr", result)
def test_counts_from_1_to_10(self): s = Sequence.create("1-10") ss = s.subsample(1) self.assertEqual(len(ss), 1) self.assertEqual(list(ss), [6]) ss = s.subsample(2) self.assertEqual(len(ss), 2) self.assertEqual(list(ss), [3, 8]) ss = s.subsample(3) self.assertEqual(len(ss), 3) self.assertEqual(list(ss), [2, 6, 9]) ss = s.subsample(4) self.assertEqual(len(ss), 4) self.assertEqual(list(ss), [2, 4, 7, 9]) ss = s.subsample(5) self.assertEqual(len(ss), 5) self.assertEqual(list(ss), [2, 4, 6, 8, 10]) ss = s.subsample(6) self.assertEqual(len(ss), 6) self.assertEqual(list(ss), [1, 3, 5, 6, 8, 10]) ss = s.subsample(7) self.assertEqual(len(ss), 7) self.assertEqual(list(ss), [1, 3, 4, 6, 7, 8, 10]) ss = s.subsample(8) self.assertEqual(len(ss), 8) self.assertEqual(list(ss), [1, 2, 4, 5, 6, 7, 9, 10]) ss = s.subsample(9) self.assertEqual(len(ss), 9) self.assertEqual(list(ss), [1, 2, 3, 4, 6, 7, 8, 9, 10]) ss = s.subsample(10) self.assertEqual(len(ss), 10) self.assertEqual(list(ss), [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) ss = s.subsample(11) self.assertEqual(len(ss), 10) self.assertEqual(list(ss), [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
def test_chunk_count(self): s = Sequence.create("1-100") s.chunk_size = 7 self.assertEqual(s.chunk_count(), 15) s.chunk_size = 15 self.assertEqual(s.chunk_count(), 7) s.chunk_size = 10 self.assertEqual(s.chunk_count(), 10)
def test_best_chunk_size(self): s = Sequence.create("1-100") s.chunk_size = 76 self.assertEqual(s.best_chunk_size(), 50) s.chunk_size = 37 self.assertEqual(s.best_chunk_size(), 34) s.chunk_size = 100 self.assertEqual(s.best_chunk_size(), 100)
def test_create_chunks_cycle(self): s = Sequence.create("1-100") s.chunk_size = 10 s.chunk_strategy = "cycle" chunks = s.chunks() self.assertEqual(list(chunks[0]), list(range(1, 100, 10))) s.chunk_size = 7 chunks = s.chunks() self.assertEqual(list(chunks[0]), list(range(1, 100, 15)))
def test_cycle_chunks_same_as_cycle_progressions_if_input_progression( self): s = Sequence.create("1-100") s.chunk_size = 10 s.chunk_strategy = "cycle" c_chunks = s.chunks() s.chunk_strategy = "cycle_progressions" cp_chunks = s.chunks() self.assertEqual(list(c_chunks[0]), list(cp_chunks[0]))
def test_resolve_many_templates_to_many_filenames(self): s = Sequence.create("1-3") templates = [ "/folder_1/image.{frame:02d}.exr", "/folder_2/image.{frame:02d}.exr", "/folder_3/image.{frame:02d}.exr", ] result = s.expand_dollar_f(*templates) self.assertEqual(len(result), 3) self.assertIn("/folder_2/image.02.exr", result) self.assertIn("/folder_3/image.03.exr", result)
def test_offset_sequence_has_same_chunk_size(self): s = Sequence.create("1-10", chunk_size=3) o = s.offset(5) self.assertEqual(o.chunk_size, s.chunk_size)
def test_expand_many_captures(self): s = Sequence.create("8-12") template = "/some/directory_###/image.#####.exr" result = s.expand(template) self.assertIn("/some/directory_012/image.00012.exr", result) self.assertIn("/some/directory_008/image.00008.exr", result)
def test_frame_spec_is_not_progression(self): s = Sequence.create("1-10, 14, 20-50x4") self.assertIsInstance(s, Sequence) self.assertNotIsInstance(s, Progression)
def test_offset_sequence_has_same_chunk_strategy(self): s = Sequence.create("1-10", chunk_strategy="cycle") o = s.offset(5) self.assertEqual(o.chunk_strategy, s.chunk_strategy)
def test_spec_range(self): s = Sequence.create("1-10x2") self.assertEqual(s[-1], 9)
def test_single_number_string_is_progression(self): s = Sequence.create("1") self.assertIsInstance(s, Progression)
def test_expand_result_same_length(self): s = Sequence.create("8-12") template = "image.#.exr" result = s.expand(template) self.assertEqual(len(result), 5)
def test_spec_step_range(self): s = Sequence.create(1, 9, 2) self.assertEqual(s.to(":", "%", ";"), "1:9%2")
def test_spec_single_number(self): s = Sequence.create(10) self.assertEqual(s.to(":", "%", ";"), "10")
def test_expand_padded_hash(self): s = Sequence.create("8-12") template = "image.#####.exr" result = s.expand(template) self.assertIn("image.00008.exr", result) self.assertIn("image.00012.exr", result)
def test_expand_single_hash(self): s = Sequence.create("8-12") template = "image.#.exr" result = s.expand(template) self.assertIn("image.8.exr", result) self.assertIn("image.12.exr", result)
def test_spec_range(self): s = Sequence.create(0, 10) self.assertEqual(s.to(":", "%", ";"), "0:10")
def test_invalid_template_raises(self): s = Sequence.create("8-12") template = "image.26.exr" with self.assertRaises(ValueError): s.expand(template)
def test_complex_add_spaces(self): s = Sequence.create("1-10, 14, 20-48x4") self.assertEqual(s.to(":", "%", "; "), "1:10; 14; 20:48%4")
def test_resolve_number_after_f(self): s = Sequence.create("1") template = "image.$F.$F5.$F2.exr" result = s.expand_dollar_f(template) self.assertEqual(len(result), 1) self.assertEqual(result[0], "image.1.00001.01.exr")
def test_spec_single_number(self): s = Sequence.create("1-10x2") self.assertEqual(s[0], 1)
def test_resolve_lowercase_f(self): s = Sequence.create("1") template = "image.$f.$f5.$f2.exr" result = s.expand_dollar_f(template) self.assertEqual(len(result), 1) self.assertEqual(result[0], "image.1.00001.01.exr")
def test_range_step_is_progression(self): s = Sequence.create(1, 10, 2) self.assertIsInstance(s, Progression)
def test_resolve_one_file_no_padding(self): s = Sequence.create("1") template = "image.{frame}.exr" result = s.expand_format(template) self.assertEqual(len(result), 1) self.assertEqual(result[0], "image.1.exr")
def test_range_string_is_progression(self): s = Sequence.create("1-10x2") self.assertIsInstance(s, Progression)
def test_resolve_no_match_leaves_untouched(self): s = Sequence.create("1") template = "image.ho.exr" result = s.expand_format(template) self.assertEqual(len(result), 1) self.assertEqual(result[0], "image.ho.exr")
def test_list_sequence_is_not_progression(self): s = Sequence.create([1, 3, 4, 6, 8, 9]) self.assertIsInstance(s, Sequence) self.assertNotIsInstance(s, Progression)
def test_resolve_many_matches(self): s = Sequence.create("1") template = "image.{frame}.{frame:05d}.{frame:02d}.exr" result = s.expand_dollar_f(template) self.assertEqual(len(result), 1) self.assertEqual(result[0], "image.1.00001.01.exr")