示例#1
0
 def test_returns_all_not_found_fonts(self):
     loader = FontLoader(None, True)
     data = {
         StyleInfo('Jorvik', 0, False): UsageData(),
         StyleInfo('Random font', 0, False): UsageData()
     }
     found, not_found = loader.get_fonts_for_list(data)
     self.assertEqual(2, len(not_found))
示例#2
0
 def test_returns_all_found_fonts(self):
     loader = FontLoader([get_file_in_test_directory('')], True)
     data = {
         StyleInfo('Jorvik Informal V2', 0, False): UsageData(),
         StyleInfo('Random font', 0, False): UsageData()
     }
     found, not_found = loader.get_fonts_for_list(data)
     self.assertEqual(1, len(found))
     self.assertIn('Jorvik Informal V2', list(found.values())[0].names)
示例#3
0
 def test_does_not_add_same_font_twice(self):
     loader = FontLoader(
         [get_file_in_test_directory(''),
          get_file_in_test_directory('')], True)
     data = {
         StyleInfo('Jorvik', 0, False): UsageData(),
         StyleInfo('Jorvik informal', 0, False): UsageData()
     }
     found, not_found = loader.get_fonts_for_list(data)
     self.assertEqual(1, len(found))
示例#4
0
 def test_hash_differs_if_any_of_styles_differ(self):
     info1 = StyleInfo('font', False, False)
     info2 = StyleInfo('font', True, False)
     info3 = StyleInfo('font', False, True)
     info4 = StyleInfo('font', True, True)
     self.assertNotEqual(hash(info1), hash(info2))
     self.assertNotEqual(hash(info1), hash(info3))
     self.assertNotEqual(hash(info1), hash(info4))
     self.assertNotEqual(hash(info2), hash(info3))
     self.assertNotEqual(hash(info2), hash(info4))
     self.assertNotEqual(hash(info3), hash(info4))
示例#5
0
 def test_finds_all_required_fonts(self):
     loader = FontLoader(None, True)
     loader.fonts.append(
         FontInfo(['Arial'], False, False, FontWeight.FW_NORMAL, 'random',
                  '1'))
     loader.fonts.append(
         FontInfo(['Arial Black'], False, False, FontWeight.FW_NORMAL,
                  'random', '2'))
     data = {
         StyleInfo('Arial', 0, False): UsageData(),
         StyleInfo('Arial Black', 0, False): UsageData()
     }
     found, not_found = loader.get_fonts_for_list(data)
     self.assertEqual(2, len(found))
示例#6
0
 def test_find_all_unique_plain_text_characters(self):
     styles = {'style' : StyleInfo('Font', FontWeight.FW_NORMAL, False)}
     used_styles = defaultdict(UsageData)
     event = AssParser.AssEvent(1, 'style','randommmm' ,False)
     AssParser.process_event(event, used_styles, styles)
     result = list(used_styles.values())[0]
     self.assertSequenceEqual({'r','a', 'n', 'd','o','m'}, result.chars)
示例#7
0
 def test_replaces_h_with_tab(self):
     styles = {'style' : StyleInfo('Font', FontWeight.FW_NORMAL, False)}
     used_styles = defaultdict(UsageData)
     event = AssParser.AssEvent(1, 'style',r'lolol\hlolol' ,False)
     AssParser.process_event(event, used_styles, styles)
     result = list(used_styles.values())[0]
     self.assertSequenceEqual({'l','o', "\xA0"}, result.chars)
示例#8
0
 def test_does_not_include_new_lines(self):
     styles = {'style' : StyleInfo('Font', FontWeight.FW_NORMAL, False)}
     used_styles = defaultdict(UsageData)
     event = AssParser.AssEvent(1, 'style',r'rardo\nmm\Nmm' ,False)
     AssParser.process_event(event, used_styles, styles)
     result = list(used_styles.values())[0]
     self.assertSequenceEqual({'r','a', 'd','o','m'}, result.chars)
示例#9
0
 def test_returns_only_appropriate_font(self):
     loader = FontLoader(None, True)
     loader.fonts.append(
         FontInfo(['Arial'], False, False, FontWeight.FW_NORMAL, 'random',
                  '1'))
     loader.fonts.append(
         FontInfo(['Arial Black'], False, False, FontWeight.FW_NORMAL,
                  'random', '2'))
     data = {StyleInfo('Arial', 0, False): UsageData()}
     found, not_found = loader.get_fonts_for_list(data)
     self.assertEqual(1, len(found))
示例#10
0
 def test_from_ass_returns_correct_weight_if_it_is_zero_in_script(self):
     item = StyleInfo.from_ass('font', '0', '-1')
     self.assertEqual(item.bold, 0)
示例#11
0
 def test_from_ass_returns_italic_if_it_is_minus_one_in_script(self):
     item = StyleInfo.from_ass('font', '-123123123', '-1')
     self.assertTrue(item.italic)
示例#12
0
 def test_clone_returns_new_object(self):
     original = StyleInfo('font', False, False)
     new = original.clone()
     self.assertEqual(original, new)
     original.bold = 12
     self.assertNotEqual(original, new)
示例#13
0
 def test_hash_differs_if_font_name_differs(self):
     info1 = StyleInfo('font', False, True)
     info2 = StyleInfo('font2', False, True)
     self.assertNotEqual(hash(info1), hash(info2))
示例#14
0
 def test_correctly_processes_double_font_italic_overrides(self):
     styles = {'style' : StyleInfo('Font', 0, False)}
     used_styles = defaultdict(UsageData)
     event = AssParser.AssEvent(1, 'style',r'{\an5\blur1.1\fs90\pos(970,454)\1a&H12}She {\i1\b1}is{\i0\b0} annoying.' ,False)
     AssParser.process_event(event, used_styles, styles)
     self.assertEqual(len(used_styles), 2)
示例#15
0
 def test_from_ass_returns_italic_if_it_is_minus_one_in_script(self):
     item = StyleInfo.from_ass("font", "-123123123", "-1")
     self.assertTrue(item.italic)
示例#16
0
 def test_performs_case_insensitive_search(self):
     loader = FontLoader([get_file_in_test_directory('')], True)
     data = {StyleInfo('JoRvIk INFormAl v2', 0, False): UsageData()}
     found, not_found = loader.get_fonts_for_list(data)
     self.assertEqual(1, len(found))
示例#17
0
 def test_equals_returns_false_on_not_equal_items(self):
     info1 = StyleInfo('font', False, False)
     info2 = StyleInfo('font1', False, False)
     self.assertNotEqual(info1, info2)
示例#18
0
 def test_from_ass_returns_correct_weight_if_it_number_in_script(self):
     item = StyleInfo.from_ass("font", "123", "-1")
     self.assertEqual(item.bold, 123)
示例#19
0
 def test_from_ass_returns_correct_weight_if_it_is_zero_in_script(self):
     item = StyleInfo.from_ass("font", "0", "-1")
     self.assertEqual(item.bold, 0)
示例#20
0
 def test_from_ass_returns_correct_weight_if_it_number_in_script(self):
     item = StyleInfo.from_ass('font', '123', '-1')
     self.assertEqual(item.bold, 123)
示例#21
0
 def test_hash_for_object_does_not_change(self):
     info1 = StyleInfo('font', False, True)
     self.assertEqual(hash(info1), hash(info1))
示例#22
0
 def test_equals_returns_true_on_equal_items(self):
     info1 = StyleInfo('font', False, True)
     info2 = StyleInfo('font', False, True)
     self.assertEqual(info1, info2)
示例#23
0
 def test_clone_returns_new_object(self):
     original = StyleInfo("font", False, False)
     new = original.clone()
     self.assertEqual(original, new)
     original.bold = 12
     self.assertNotEqual(original, new)