コード例 #1
0
    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')
コード例 #2
0
    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)
コード例 #3
0
    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')