def test_font_style_setter(self): # Test setter in initialization vg = VisualGenerator(font_style='Bold') self.assertEqual(vg._font_style, 'Bold') self.assertEqual(vg._font_face.ft_face.family_name, 'Noto Sans CJK SC') self.assertEqual(vg._font_face.ft_face.style_name, 'Bold') # Test setter after initialization vg.font_style = 'Thin' self.assertEqual(vg._font_style, 'Thin') self.assertEqual(vg._font_face.ft_face.family_name, 'Noto Sans CJK SC') self.assertEqual(vg._font_face.ft_face.style_name, 'Thin') # TODO: Add checking so that exception raises when style not found! # Test that non-exist font style results in default style vg.font_style = '123' self.assertEqual(vg._font_style, '123') self.assertEqual(vg._font_face.ft_face.family_name, 'Noto Sans CJK SC') self.assertEqual(vg._font_face.ft_face.style_name, 'Regular') # Test interference vg.font_name = 'Noto Serif CJK SC' self.assertEqual(vg._font_face.ft_face.family_name, 'Noto Serif CJK SC') vg.font_style = 'SemiBold' self.assertEqual(vg._font_face.ft_face.family_name, 'Noto Serif CJK SC')
def test_visualize_single(self): # This method is very hard to test. We only make sure that the final # image is created. vg = VisualGenerator(out_dir=self.tmp_dir) vg.visualize_single('a') vg.font_style = 'Bold' vg.visualize_single('b') vg.font_style = None vg.visualize_single('c') # Assert that image files exist file_path = os.path.join(self.tmp_dir, 'U+0061_Noto Sans CJK SC_Default.png') self.assertTrue(os.path.isfile(file_path)) file_path = os.path.join(self.tmp_dir, 'U+0062_Noto Sans CJK SC_Bold_Default.png') self.assertTrue(os.path.isfile(file_path)) file_path = os.path.join(self.tmp_dir, 'U+0063_Noto Sans CJK SC_Default.png') self.assertTrue(os.path.isfile(file_path)) # Mock 4 private methods: # self._check_create_out_dir_abs # self._center_text # self._position_text # self._get_filename with patch.object(vg, '_center_text') as c_t, \ patch.object(vg, '_position_text') as p_t, \ patch.object(vg, '_get_filename', return_value='DontCare') as g_f, \ patch.object(vg, '_check_create_out_dir_abs') as out_dir_func: vg.visualize_single('d') c_t.assert_called_once() p_t.assert_not_called() g_f.assert_called_once_with('d') out_dir_func.assert_called_once() with patch.object(vg, '_center_text') as c_t, \ patch.object(vg, '_position_text') as p_t, \ patch.object(vg, '_get_filename', return_value='DontCare') as g_f, \ patch.object(vg, '_check_create_out_dir_abs') as out_dir_func: vg.visualize_single('e', False, x=10, y=10) c_t.assert_not_called() p_t.assert_called_once() g_f.assert_called_once_with('e') out_dir_func.assert_not_called() # Test exception with self.assertRaises(ValueError): vg.visualize_single('f', x=10, y=None)
def test_font_name_setter(self): # Test setter in initialization vg = VisualGenerator(font_name='Noto Serif CJK SC') self.assertEqual(vg._font_name, 'Noto Serif CJK SC') self.assertEqual(vg._font_face.ft_face.family_name, 'Noto Serif CJK SC') self.assertEqual(vg._font_face.ft_face.style_name, 'Regular') # Test setter after initialization vg.font_name = 'Noto Serif CJK TC' self.assertEqual(vg._font_name, 'Noto Serif CJK TC') self.assertEqual(vg._font_face.ft_face.family_name, 'Noto Serif CJK TC') self.assertEqual(vg._font_face.ft_face.style_name, 'Regular') # Test exception with self.assertRaises(ValueError): vg = VisualGenerator(font_name='Non Exists Font Name') with self.assertRaises(ValueError): vg.font_name = 'Non Exists Font Name' # Test interference vg.font_style = 'Light' self.assertEqual(vg._font_face.ft_face.style_name, 'Light') vg.font_name = 'Noto Sans CJK JP' self.assertEqual(vg._font_face.ft_face.style_name, 'Light')