from fontTools.cffLib.specializer import (programToString, stringToProgram,
                                          generalizeProgram, specializeProgram,
                                          programToCommands, commandsToProgram,
                                          generalizeCommands,
                                          specializeCommands)
from fontTools.ttLib import TTFont
import os
import unittest
from fontTools.misc.testTools import parseXML, DataFilesHandler

# TODO
# https://github.com/fonttools/fonttools/pull/959#commitcomment-22059841
# Maybe we should make these data driven. Each entry will have an input string,
# and a generalized and specialized. For the latter two, if they are None, they
# are considered equal to the input. Then we can do roundtripping tests as well...
# There are a few other places (aosp tests for example) where we generate tests
# from data.


def get_generalized_charstr(charstr, **kwargs):
    return programToString(generalizeProgram(stringToProgram(charstr), **kwargs))


def get_specialized_charstr(charstr, **kwargs):
    return programToString(specializeProgram(stringToProgram(charstr), **kwargs))


class CFFGeneralizeProgramTest(unittest.TestCase):

    def __init__(self, methodName):
        unittest.TestCase.__init__(self, methodName)
        # Python 3 renamed assertRaisesRegexp to assertRaisesRegex,
        # and fires deprecation warnings if a program uses the old name.
        if not hasattr(self, "assertRaisesRegex"):
            self.assertRaisesRegex = self.assertRaisesRegexp

# no arguments/operands
    def test_rmoveto_none(self):
        test_charstr = 'rmoveto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_generalized_charstr(test_charstr)

    def test_hmoveto_none(self):
        test_charstr = 'hmoveto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_generalized_charstr(test_charstr)

    def test_vmoveto_none(self):
        test_charstr = 'vmoveto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_generalized_charstr(test_charstr)

    def test_rlineto_none(self):
        test_charstr = 'rlineto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_generalized_charstr(test_charstr)

    def test_hlineto_none(self):
        test_charstr = 'hlineto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_generalized_charstr(test_charstr)

    def test_vlineto_none(self):
        test_charstr = 'vlineto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_generalized_charstr(test_charstr)

    def test_rrcurveto_none(self):
        test_charstr = 'rrcurveto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_generalized_charstr(test_charstr)

    def test_hhcurveto_none(self):
        test_charstr = 'hhcurveto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_generalized_charstr(test_charstr)

    def test_vvcurveto_none(self):
        test_charstr = 'vvcurveto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_generalized_charstr(test_charstr)

    def test_hvcurveto_none(self):
        test_charstr = 'hvcurveto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_generalized_charstr(test_charstr)

    def test_vhcurveto_none(self):
        test_charstr = 'vhcurveto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_generalized_charstr(test_charstr)

    def test_rcurveline_none(self):
        test_charstr = 'rcurveline'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_generalized_charstr(test_charstr)

    def test_rlinecurve_none(self):
        test_charstr = 'rlinecurve'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_generalized_charstr(test_charstr)

# rmoveto
    def test_rmoveto_zero(self):
        test_charstr = '0 0 rmoveto'
        xpct_charstr = test_charstr
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rmoveto_zero_width(self):
        test_charstr = '100 0 0 rmoveto'
        xpct_charstr = test_charstr
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rmoveto(self):
        test_charstr = '.55 -.8 rmoveto'
        xpct_charstr = '0.55 -0.8 rmoveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rmoveto_width(self):
        test_charstr = '100.5 50 -5.8 rmoveto'
        xpct_charstr = test_charstr
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

# hmoveto
    def test_hmoveto_zero(self):
        test_charstr = '0 hmoveto'
        xpct_charstr = '0 0 rmoveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hmoveto_zero_width(self):
        test_charstr = '100 0 hmoveto'
        xpct_charstr = '100 0 0 rmoveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hmoveto(self):
        test_charstr = '.67 hmoveto'
        xpct_charstr = '0.67 0 rmoveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hmoveto_width(self):
        test_charstr = '100 -70 hmoveto'
        xpct_charstr = '100 -70 0 rmoveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

# vmoveto
    def test_vmoveto_zero(self):
        test_charstr = '0 vmoveto'
        xpct_charstr = '0 0 rmoveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_vmoveto_zero_width(self):
        test_charstr = '100 0 vmoveto'
        xpct_charstr = '100 0 0 rmoveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_vmoveto(self):
        test_charstr = '-.24 vmoveto'
        xpct_charstr = '0 -0.24 rmoveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_vmoveto_width(self):
        test_charstr = '100 44 vmoveto'
        xpct_charstr = '100 0 44 rmoveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

# rlineto
    def test_rlineto_zero(self):
        test_charstr = '0 0 rlineto'
        xpct_charstr = test_charstr
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rlineto_zero_mult(self):
        test_charstr = '0 0 0 0 0 0 rlineto'
        xpct_charstr = ('0 0 rlineto '*3).rstrip()
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rlineto(self):
        test_charstr = '.55 -.8 rlineto'
        xpct_charstr = '0.55 -0.8 rlineto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rlineto_mult(self):
        test_charstr = '.55 -.8 .55 -.8 .55 -.8 rlineto'
        xpct_charstr = ('0.55 -0.8 rlineto '*3).rstrip()
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

# hlineto
    def test_hlineto_zero(self):
        test_charstr = '0 hlineto'
        xpct_charstr = '0 0 rlineto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hlineto_zero_mult(self):
        test_charstr = '0 0 0 0 hlineto'
        xpct_charstr = ('0 0 rlineto '*4).rstrip()
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hlineto(self):
        test_charstr = '.67 hlineto'
        xpct_charstr = '0.67 0 rlineto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hlineto_mult(self):
        test_charstr = '.67 -6.0 .67 hlineto'
        xpct_charstr = '0.67 0 rlineto 0 -6.0 rlineto 0.67 0 rlineto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

# vlineto
    def test_vlineto_zero(self):
        test_charstr = '0 vlineto'
        xpct_charstr = '0 0 rlineto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_vlineto_zero_mult(self):
        test_charstr = '0 0 0 vlineto'
        xpct_charstr = ('0 0 rlineto '*3).rstrip()
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_vlineto(self):
        test_charstr = '-.24 vlineto'
        xpct_charstr = '0 -0.24 rlineto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_vlineto_mult(self):
        test_charstr = '-.24 +50 30 -4 vlineto'
        xpct_charstr = '0 -0.24 rlineto 50 0 rlineto 0 30 rlineto -4 0 rlineto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

# rrcurveto
    def test_rrcurveto(self):
        test_charstr = '-1 56 -2 57 -1 57 rrcurveto'
        xpct_charstr = test_charstr
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_mult(self):
        test_charstr = '-30 8 -36 15 -37 22 44 54 31 61 22 68 rrcurveto'
        xpct_charstr = '-30 8 -36 15 -37 22 rrcurveto 44 54 31 61 22 68 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_d3947b8(self):
        test_charstr = '1 2 3 4 5 0 rrcurveto'
        xpct_charstr = test_charstr
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_v0_0h_h0(self):
        test_charstr = '0 10 1 2 0 0 0 0 1 2 0 1 0 1 3 4 0 0 rrcurveto'
        xpct_charstr = '0 10 1 2 0 0 rrcurveto 0 0 1 2 0 1 rrcurveto 0 1 3 4 0 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_h0_0h_h0(self):
        test_charstr = '10 0 1 2 0 0 0 0 1 2 0 1 0 1 3 4 0 0 rrcurveto'
        xpct_charstr = '10 0 1 2 0 0 rrcurveto 0 0 1 2 0 1 rrcurveto 0 1 3 4 0 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_00_0h_h0(self):
        test_charstr = '0 0 1 2 0 0 0 0 1 2 0 1 0 1 3 4 0 0 rrcurveto'
        xpct_charstr = '0 0 1 2 0 0 rrcurveto 0 0 1 2 0 1 rrcurveto 0 1 3 4 0 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_r0_0h_h0(self):
        test_charstr = '10 10 1 2 0 0 0 0 1 2 0 1 0 1 3 4 0 0 rrcurveto'
        xpct_charstr = '10 10 1 2 0 0 rrcurveto 0 0 1 2 0 1 rrcurveto 0 1 3 4 0 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_v0_0v_v0(self):
        test_charstr = '0 10 1 2 0 0 0 0 1 2 1 0 1 0 3 4 0 0 rrcurveto'
        xpct_charstr = '0 10 1 2 0 0 rrcurveto 0 0 1 2 1 0 rrcurveto 1 0 3 4 0 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_h0_0v_v0(self):
        test_charstr = '10 0 1 2 0 0 0 0 1 2 1 0 1 0 3 4 0 0 rrcurveto'
        xpct_charstr = '10 0 1 2 0 0 rrcurveto 0 0 1 2 1 0 rrcurveto 1 0 3 4 0 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_00_0v_v0(self):
        test_charstr = '0 0 1 2 0 0 0 0 1 2 1 0 1 0 3 4 0 0 rrcurveto'
        xpct_charstr = '0 0 1 2 0 0 rrcurveto 0 0 1 2 1 0 rrcurveto 1 0 3 4 0 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_r0_0v_v0(self):
        test_charstr = '10 10 1 2 0 0 0 0 1 2 1 0 1 0 3 4 0 0 rrcurveto'
        xpct_charstr = '10 10 1 2 0 0 rrcurveto 0 0 1 2 1 0 rrcurveto 1 0 3 4 0 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

# hhcurveto
    def test_hhcurveto_4(self):
        test_charstr = '10 30 0 10 hhcurveto'
        xpct_charstr = '10 0 30 0 10 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hhcurveto_5(self):
        test_charstr = '40 -38 -60 41 -91 hhcurveto'
        xpct_charstr = '-38 40 -60 41 -91 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hhcurveto_mult_4_4(self):
        test_charstr = '43 23 25 18 29 56 42 -84 hhcurveto'
        xpct_charstr = '43 0 23 25 18 0 rrcurveto 29 0 56 42 -84 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hhcurveto_mult_5_4(self):
        test_charstr = '43 23 25 18 29 56 42 -84 79 hhcurveto'
        xpct_charstr = '23 43 25 18 29 0 rrcurveto 56 0 42 -84 79 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hhcurveto_mult_4_4_4(self):
        test_charstr = '1 2 3 4 5 6 7 8 9 10 11 12 hhcurveto'
        xpct_charstr = '1 0 2 3 4 0 rrcurveto 5 0 6 7 8 0 rrcurveto 9 0 10 11 12 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hhcurveto_mult_5_4_4(self):
        test_charstr = '1 2 3 4 5 6 7 8 9 10 11 12 13 hhcurveto'
        xpct_charstr = '2 1 3 4 5 0 rrcurveto 6 0 7 8 9 0 rrcurveto 10 0 11 12 13 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

# vvcurveto
    def test_vvcurveto_4(self):
        test_charstr = '61 6 52 68 vvcurveto'
        xpct_charstr = '0 61 6 52 0 68 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_vvcurveto_5(self):
        test_charstr = '61 38 35 56 72 vvcurveto'
        xpct_charstr = '61 38 35 56 0 72 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_vvcurveto_mult_4_4(self):
        test_charstr = '-84 -88 -30 -90 -13 19 23 -11 vvcurveto'
        xpct_charstr = '0 -84 -88 -30 0 -90 rrcurveto 0 -13 19 23 0 -11 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_vvcurveto_mult_5_4(self):
        test_charstr = '43 12 17 32 65 68 -6 52 61 vvcurveto'
        xpct_charstr = '43 12 17 32 0 65 rrcurveto 0 68 -6 52 0 61 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_vvcurveto_mult_4_4_4(self):
        test_charstr = '1 2 3 4 5 6 7 8 9 10 11 12 vvcurveto'
        xpct_charstr = '0 1 2 3 0 4 rrcurveto 0 5 6 7 0 8 rrcurveto 0 9 10 11 0 12 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_vvcurveto_mult_5_4_4(self):
        test_charstr = '1 2 3 4 5 6 7 8 9 10 11 12 13 vvcurveto'
        xpct_charstr = '1 2 3 4 0 5 rrcurveto 0 6 7 8 0 9 rrcurveto 0 10 11 12 0 13 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

# hvcurveto
    def test_hvcurveto_4(self):
        test_charstr = '1 2 3 4 hvcurveto'
        xpct_charstr = '1 0 2 3 0 4 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hvcurveto_5(self):
        test_charstr = '57 44 22 40 34 hvcurveto'
        xpct_charstr = '57 0 44 22 34 40 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hvcurveto_4_4(self):
        test_charstr = '65 33 -19 -45 -45 -29 -25 -71 hvcurveto'
        xpct_charstr = '65 0 33 -19 0 -45 rrcurveto 0 -45 -29 -25 -71 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hvcurveto_4_5(self):
        test_charstr = '97 69 41 86 58 -36 34 -64 11 hvcurveto'
        xpct_charstr = '97 0 69 41 0 86 rrcurveto 0 58 -36 34 -64 11 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hvcurveto_4_4_4(self):
        test_charstr = '1 2 3 4 5 6 7 8 9 10 11 12 hvcurveto'
        xpct_charstr = '1 0 2 3 0 4 rrcurveto 0 5 6 7 8 0 rrcurveto 9 0 10 11 0 12 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hvcurveto_4_4_5(self):
        test_charstr = '-124 -79 104 165 163 82 102 124 56 43 -25 -37 35 hvcurveto'
        xpct_charstr = '-124 0 -79 104 0 165 rrcurveto 0 163 82 102 124 0 rrcurveto 56 0 43 -25 35 -37 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hvcurveto_4_4_4_4(self):
        test_charstr = '32 25 22 32 31 -25 22 -32 -32 -25 -22 -31 -32 25 -22 32 hvcurveto'
        xpct_charstr = '32 0 25 22 0 32 rrcurveto 0 31 -25 22 -32 0 rrcurveto -32 0 -25 -22 0 -31 rrcurveto 0 -32 25 -22 32 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_hvcurveto_4_4_4_4_5(self):
        test_charstr = '-170 -128 111 195 234 172 151 178 182 95 -118 -161 -130 -71 -77 -63 -55 -19 38 79 20 hvcurveto'
        xpct_charstr = '-170 0 -128 111 0 195 rrcurveto 0 234 172 151 178 0 rrcurveto 182 0 95 -118 0 -161 rrcurveto 0 -130 -71 -77 -63 0 rrcurveto -55 0 -19 38 20 79 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

# vhcurveto
    def test_vhcurveto_4(self):
        test_charstr = '-57 43 -30 53 vhcurveto'
        xpct_charstr = '0 -57 43 -30 53 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_vhcurveto_5(self):
        test_charstr = '41 -27 19 -46 11 vhcurveto'
        xpct_charstr = '0 41 -27 19 -46 11 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_vhcurveto_4_4(self):
        test_charstr = '1 2 3 4 5 6 7 8 vhcurveto'
        xpct_charstr = '0 1 2 3 4 0 rrcurveto 5 0 6 7 0 8 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_vhcurveto_4_5(self):
        test_charstr = '-64 -23 -25 -45 -30 -24 14 33 -19 vhcurveto'
        xpct_charstr = '0 -64 -23 -25 -45 0 rrcurveto -30 0 -24 14 -19 33 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_vhcurveto_4_4_4(self):
        test_charstr = '1 2 3 4 5 6 7 8 9 10 11 12 vhcurveto'
        xpct_charstr = '0 1 2 3 4 0 rrcurveto 5 0 6 7 0 8 rrcurveto 0 9 10 11 12 0 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_vhcurveto_4_4_5(self):
        test_charstr = '108 59 81 98 99 59 -81 -108 -100 -46 -66 -63 -47 vhcurveto'
        xpct_charstr = '0 108 59 81 98 0 rrcurveto 99 0 59 -81 0 -108 rrcurveto 0 -100 -46 -66 -63 -47 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_vhcurveto_4_4_4_5(self):
        test_charstr = '60 -26 37 -43 -33 -28 -22 -36 -37 27 -20 32 3 4 0 1 3 vhcurveto'
        xpct_charstr = '0 60 -26 37 -43 0 rrcurveto -33 0 -28 -22 0 -36 rrcurveto 0 -37 27 -20 32 0 rrcurveto 3 0 4 0 3 1 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

# rcurveline
    def test_rcurveline_6_2(self):
        test_charstr = '21 -76 21 -72 24 -73 31 -100 rcurveline'
        xpct_charstr = '21 -76 21 -72 24 -73 rrcurveto 31 -100 rlineto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rcurveline_6_6_2(self):
        test_charstr = '-73 80 -80 121 -49 96 60 65 55 41 54 17 -8 78 rcurveline'
        xpct_charstr = '-73 80 -80 121 -49 96 rrcurveto 60 65 55 41 54 17 rrcurveto -8 78 rlineto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rcurveline_6_6_6_2(self):
        test_charstr = '1 64 10 51 29 39 15 21 15 20 15 18 47 -89 63 -98 52 -59 91 8 rcurveline'
        xpct_charstr = '1 64 10 51 29 39 rrcurveto 15 21 15 20 15 18 rrcurveto 47 -89 63 -98 52 -59 rrcurveto 91 8 rlineto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rcurveline_6_6_6_6_2(self):
        test_charstr = '1 64 10 51 29 39 15 21 15 20 15 18 46 -88 63 -97 52 -59 -38 -57 -49 -62 -52 -54 96 -8 rcurveline'
        xpct_charstr = '1 64 10 51 29 39 rrcurveto 15 21 15 20 15 18 rrcurveto 46 -88 63 -97 52 -59 rrcurveto -38 -57 -49 -62 -52 -54 rrcurveto 96 -8 rlineto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

# rlinecurve
    def test_rlinecurve_2_6(self):
        test_charstr = '21 -76 21 -72 24 -73 31 -100 rlinecurve'
        xpct_charstr = '21 -76 rlineto 21 -72 24 -73 31 -100 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rlinecurve_2_2_6(self):
        test_charstr = '-73 80 -80 121 -49 96 60 65 55 41 rlinecurve'
        xpct_charstr = '-73 80 rlineto -80 121 rlineto -49 96 60 65 55 41 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rlinecurve_2_2_2_6(self):
        test_charstr = '1 64 10 51 29 39 15 21 15 20 15 18 rlinecurve'
        xpct_charstr = '1 64 rlineto 10 51 rlineto 29 39 rlineto 15 21 15 20 15 18 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

    def test_rlinecurve_2_2_2_2_6(self):
        test_charstr = '1 64 10 51 29 39 15 21 15 20 15 18 46 -88 rlinecurve'
        xpct_charstr = '1 64 rlineto 10 51 rlineto 29 39 rlineto 15 21 rlineto 15 20 15 18 46 -88 rrcurveto'
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

# hstem/vstem
    def test_hstem_vstem(self):
        test_charstr = '95 0 58 542 60 hstem 89 65 344 67 vstem 89 45 rmoveto'
        xpct_charstr = test_charstr
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

# hstemhm/vstemhm
    def test_hstemhm_vstemhm(self):
        test_charstr = '-16 577 60 24 60 hstemhm 98 55 236 55 vstemhm 343 577 rmoveto'
        xpct_charstr = test_charstr
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

# hintmask/cntrmask
    def test_hintmask_cntrmask(self):
        test_charstr = '52 80 153 61 4 83 -71.5 71.5 hintmask 11011100 94 119 216 119 216 119 cntrmask 1110000 154 -12 rmoveto'
        xpct_charstr = test_charstr
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

# endchar
    def test_endchar(self):
        test_charstr = '-255 319 rmoveto 266 57 rlineto endchar'
        xpct_charstr = test_charstr
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)

# xtra
    def test_xtra(self):
        test_charstr = '-255 319 rmoveto 266 57 rlineto xtra 90 34'
        xpct_charstr = test_charstr
        self.assertEqual(get_generalized_charstr(test_charstr), xpct_charstr)


class CFFSpecializeProgramTest(unittest.TestCase):

    def __init__(self, methodName):
        unittest.TestCase.__init__(self, methodName)
        # Python 3 renamed assertRaisesRegexp to assertRaisesRegex,
        # and fires deprecation warnings if a program uses the old name.
        if not hasattr(self, "assertRaisesRegex"):
            self.assertRaisesRegex = self.assertRaisesRegexp

# no arguments/operands
    def test_rmoveto_none(self):
        test_charstr = 'rmoveto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_specialized_charstr(test_charstr)

    def test_hmoveto_none(self):
        test_charstr = 'hmoveto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_specialized_charstr(test_charstr)

    def test_vmoveto_none(self):
        test_charstr = 'vmoveto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_specialized_charstr(test_charstr)

    def test_rlineto_none(self):
        test_charstr = 'rlineto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_specialized_charstr(test_charstr)

    def test_hlineto_none(self):
        test_charstr = 'hlineto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_specialized_charstr(test_charstr)

    def test_vlineto_none(self):
        test_charstr = 'vlineto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_specialized_charstr(test_charstr)

    def test_rrcurveto_none(self):
        test_charstr = 'rrcurveto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_specialized_charstr(test_charstr)

    def test_hhcurveto_none(self):
        test_charstr = 'hhcurveto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_specialized_charstr(test_charstr)

    def test_vvcurveto_none(self):
        test_charstr = 'vvcurveto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_specialized_charstr(test_charstr)

    def test_hvcurveto_none(self):
        test_charstr = 'hvcurveto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_specialized_charstr(test_charstr)

    def test_vhcurveto_none(self):
        test_charstr = 'vhcurveto'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_specialized_charstr(test_charstr)

    def test_rcurveline_none(self):
        test_charstr = 'rcurveline'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_specialized_charstr(test_charstr)

    def test_rlinecurve_none(self):
        test_charstr = 'rlinecurve'
        with self.assertRaisesRegex(ValueError, r'\[\]'):
            get_specialized_charstr(test_charstr)

# rmoveto
    def test_rmoveto_zero(self):
        test_charstr = '0 0 rmoveto'
        xpct_charstr = '0 hmoveto'
        self.assertEqual(get_specialized_charstr(test_charstr,
                                        generalizeFirst=False), xpct_charstr)

    def test_rmoveto_zero_mult(self):
        test_charstr = '0 0 rmoveto '*3
        xpct_charstr = '0 hmoveto'
        self.assertEqual(get_specialized_charstr(test_charstr,
                                        generalizeFirst=False), xpct_charstr)

    def test_rmoveto_zero_width(self):
        test_charstr = '100 0 0 rmoveto'
        xpct_charstr = '100 0 hmoveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rmoveto(self):
        test_charstr = '.55 -.8 rmoveto'
        xpct_charstr = '0.55 -0.8 rmoveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rmoveto_mult(self):
        test_charstr = '55 -8 rmoveto '*3
        xpct_charstr = '165 -24 rmoveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rmoveto_width(self):
        test_charstr = '100.5 50 -5.8 rmoveto'
        xpct_charstr = test_charstr
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

# rlineto
    def test_rlineto_zero(self):
        test_charstr = '0 0 rlineto'
        xpct_charstr = ''
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rlineto_zero_mult(self):
        test_charstr = '0 0 rlineto '*3
        xpct_charstr = ''
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rlineto(self):
        test_charstr = '.55 -.8 rlineto'
        xpct_charstr = '0.55 -0.8 rlineto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rlineto_mult(self):
        test_charstr = '.55 -.8 rlineto '*3
        xpct_charstr = '0.55 -0.8 0.55 -0.8 0.55 -0.8 rlineto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hlineto(self):
        test_charstr = '.67 0 rlineto'
        xpct_charstr = '0.67 hlineto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hlineto_zero_mult(self):
        test_charstr = '62 0 rlineto '*3
        xpct_charstr = '186 hlineto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hlineto_mult(self):
        test_charstr = '.67 0 rlineto 0 -6.0 rlineto .67 0 rlineto'
        xpct_charstr = '0.67 -6.0 0.67 hlineto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vlineto(self):
        test_charstr = '0 -.24 rlineto'
        xpct_charstr = '-0.24 vlineto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vlineto_zero_mult(self):
        test_charstr = '0 -24 rlineto '*3
        xpct_charstr = '-72 vlineto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vlineto_mult(self):
        test_charstr = '0 -.24 rlineto +50 0 rlineto 0 30 rlineto -4 0 rlineto'
        xpct_charstr = '-0.24 50 30 -4 vlineto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_0lineto_peephole(self):
        test_charstr = '1 2 0 0 3 4 rlineto'
        xpct_charstr = '1 2 3 4 rlineto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hlineto_peephole(self):
        test_charstr = '1 2 5 0 3 4 rlineto'
        xpct_charstr = test_charstr
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vlineto_peephole(self):
        test_charstr = '1 2 0 5 3 4 rlineto'
        xpct_charstr = test_charstr
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

# rrcurveto
    def test_rrcurveto(self):
        test_charstr = '-1 56 -2 57 -1 57 rrcurveto'
        xpct_charstr = test_charstr
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_mult(self):
        test_charstr = '-30 8 -36 15 -37 22 rrcurveto 44 54 31 61 22 68 rrcurveto'
        xpct_charstr = '-30 8 -36 15 -37 22 44 54 31 61 22 68 rrcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_d3947b8(self):
        test_charstr = '1 2 3 4 5 0 rrcurveto'
        xpct_charstr = '2 1 3 4 5 hhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hhcurveto_4(self):
        test_charstr = '10 0 30 0 10 0 rrcurveto'
        xpct_charstr = '10 30 0 10 hhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hhcurveto_5(self):
        test_charstr = '-38 40 -60 41 -91 0 rrcurveto'
        xpct_charstr = '40 -38 -60 41 -91 hhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hhcurveto_mult_4_4(self):
        test_charstr = '43 0 23 25 18 0 rrcurveto 29 0 56 42 -84 0 rrcurveto'
        xpct_charstr = '43 23 25 18 29 56 42 -84 hhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hhcurveto_mult_5_4(self):
        test_charstr = '23 43 25 18 29 0 rrcurveto 56 0 42 -84 79 0 rrcurveto'
        xpct_charstr = '43 23 25 18 29 56 42 -84 79 hhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hhcurveto_mult_4_4_4(self):
        test_charstr = '1 0 2 3 4 0 rrcurveto 5 0 6 7 8 0 rrcurveto 9 0 10 11 12 0 rrcurveto'
        xpct_charstr = '1 2 3 4 5 6 7 8 9 10 11 12 hhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hhcurveto_mult_5_4_4(self):
        test_charstr = '2 1 3 4 5 0 rrcurveto 6 0 7 8 9 0 rrcurveto 10 0 11 12 13 0 rrcurveto'
        xpct_charstr = '1 2 3 4 5 6 7 8 9 10 11 12 13 hhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vvcurveto_4(self):
        test_charstr = '0 61 6 52 0 68 rrcurveto'
        xpct_charstr = '61 6 52 68 vvcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vvcurveto_5(self):
        test_charstr = '61 38 35 56 0 72 rrcurveto'
        xpct_charstr = '61 38 35 56 72 vvcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vvcurveto_mult_4_4(self):
        test_charstr = '0 -84 -88 -30 0 -90 rrcurveto 0 -13 19 23 0 -11 rrcurveto'
        xpct_charstr = '-84 -88 -30 -90 -13 19 23 -11 vvcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vvcurveto_mult_5_4(self):
        test_charstr = '43 12 17 32 0 65 rrcurveto 0 68 -6 52 0 61 rrcurveto'
        xpct_charstr = '43 12 17 32 65 68 -6 52 61 vvcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vvcurveto_mult_4_4_4(self):
        test_charstr = '0 1 2 3 0 4 rrcurveto 0 5 6 7 0 8 rrcurveto 0 9 10 11 0 12 rrcurveto'
        xpct_charstr = '1 2 3 4 5 6 7 8 9 10 11 12 vvcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vvcurveto_mult_5_4_4(self):
        test_charstr = '1 2 3 4 0 5 rrcurveto 0 6 7 8 0 9 rrcurveto 0 10 11 12 0 13 rrcurveto'
        xpct_charstr = '1 2 3 4 5 6 7 8 9 10 11 12 13 vvcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hvcurveto_4(self):
        test_charstr = '1 0 2 3 0 4 rrcurveto'
        xpct_charstr = '1 2 3 4 hvcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hvcurveto_5(self):
        test_charstr = '57 0 44 22 34 40 rrcurveto'
        xpct_charstr = '57 44 22 40 34 hvcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hvcurveto_4_4(self):
        test_charstr = '65 0 33 -19 0 -45 rrcurveto 0 -45 -29 -25 -71 0 rrcurveto'
        xpct_charstr = '65 33 -19 -45 -45 -29 -25 -71 hvcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hvcurveto_4_5(self):
        test_charstr = '97 0 69 41 0 86 rrcurveto 0 58 -36 34 -64 11 rrcurveto'
        xpct_charstr = '97 69 41 86 58 -36 34 -64 11 hvcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hvcurveto_4_4_4(self):
        test_charstr = '1 0 2 3 0 4 rrcurveto 0 5 6 7 8 0 rrcurveto 9 0 10 11 0 12 rrcurveto'
        xpct_charstr = '1 2 3 4 5 6 7 8 9 10 11 12 hvcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hvcurveto_4_4_5(self):
        test_charstr = '-124 0 -79 104 0 165 rrcurveto 0 163 82 102 124 0 rrcurveto 56 0 43 -25 35 -37 rrcurveto'
        xpct_charstr = '-124 -79 104 165 163 82 102 124 56 43 -25 -37 35 hvcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hvcurveto_4_4_4_4(self):
        test_charstr = '32 0 25 22 0 32 rrcurveto 0 31 -25 22 -32 0 rrcurveto -32 0 -25 -22 0 -31 rrcurveto 0 -32 25 -22 32 0 rrcurveto'
        xpct_charstr = '32 25 22 32 31 -25 22 -32 -32 -25 -22 -31 -32 25 -22 32 hvcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hvcurveto_4_4_4_4_5(self):
        test_charstr = '-170 0 -128 111 0 195 rrcurveto 0 234 172 151 178 0 rrcurveto 182 0 95 -118 0 -161 rrcurveto 0 -130 -71 -77 -63 0 rrcurveto -55 0 -19 38 20 79 rrcurveto'
        xpct_charstr = '-170 -128 111 195 234 172 151 178 182 95 -118 -161 -130 -71 -77 -63 -55 -19 38 79 20 hvcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vhcurveto_4(self):
        test_charstr = '0 -57 43 -30 53 0 rrcurveto'
        xpct_charstr = '-57 43 -30 53 vhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vhcurveto_5(self):
        test_charstr = '0 41 -27 19 -46 11 rrcurveto'
        xpct_charstr = '41 -27 19 -46 11 vhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vhcurveto_4_4(self):
        test_charstr = '0 1 2 3 4 0 rrcurveto 5 0 6 7 0 8 rrcurveto'
        xpct_charstr = '1 2 3 4 5 6 7 8 vhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vhcurveto_4_5(self):
        test_charstr = '0 -64 -23 -25 -45 0 rrcurveto -30 0 -24 14 -19 33 rrcurveto'
        xpct_charstr = '-64 -23 -25 -45 -30 -24 14 33 -19 vhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vhcurveto_4_4_4(self):
        test_charstr = '0 1 2 3 4 0 rrcurveto 5 0 6 7 0 8 rrcurveto 0 9 10 11 12 0 rrcurveto'
        xpct_charstr = '1 2 3 4 5 6 7 8 9 10 11 12 vhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vhcurveto_4_4_5(self):
        test_charstr = '0 108 59 81 98 0 rrcurveto 99 0 59 -81 0 -108 rrcurveto 0 -100 -46 -66 -63 -47 rrcurveto'
        xpct_charstr = '108 59 81 98 99 59 -81 -108 -100 -46 -66 -63 -47 vhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vhcurveto_4_4_4_5(self):
        test_charstr = '0 60 -26 37 -43 0 rrcurveto -33 0 -28 -22 0 -36 rrcurveto 0 -37 27 -20 32 0 rrcurveto 3 0 4 0 3 1 rrcurveto'
        xpct_charstr = '60 -26 37 -43 -33 -28 -22 -36 -37 27 -20 32 3 4 0 1 3 vhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_v0_0h_h0(self):
        test_charstr = '0 10 1 2 0 0 0 0 1 2 0 1 0 1 3 4 0 0 rrcurveto'
        xpct_charstr = '10 1 2 0 0 1 2 1 1 3 4 0 vhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_h0_0h_h0(self):
        test_charstr = '10 0 1 2 0 0 0 0 1 2 0 1 0 1 3 4 0 0 rrcurveto'
        xpct_charstr = '10 1 2 0 hhcurveto 0 1 2 1 1 3 4 0 hvcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_00_0h_h0(self):
        test_charstr = '0 0 1 2 0 0 0 0 1 2 0 1 0 1 3 4 0 0 rrcurveto'
        xpct_charstr = '1 2 rlineto 0 1 2 1 1 3 4 0 hvcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_r0_0h_h0(self):
        test_charstr = '10 10 1 2 0 0 0 0 1 2 0 1 0 1 3 4 0 0 rrcurveto'
        xpct_charstr = '10 10 1 2 0 0 1 2 1 1 3 4 0 vvcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_v0_0v_v0(self):
        test_charstr = '0 10 1 2 0 0 0 0 1 2 1 0 1 0 3 4 0 0 rrcurveto'
        xpct_charstr = '10 1 2 0 vhcurveto 0 1 2 1 1 3 4 0 hhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_h0_0v_v0(self):
        test_charstr = '10 0 1 2 0 0 0 0 1 2 1 0 1 0 3 4 0 0 rrcurveto'
        xpct_charstr = '10 1 2 0 0 1 2 1 1 3 4 0 hhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_00_0v_v0(self):
        test_charstr = '0 0 1 2 0 0 0 0 1 2 1 0 1 0 3 4 0 0 rrcurveto'
        xpct_charstr = '1 2 rlineto 0 1 2 1 1 3 4 0 hhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rrcurveto_r0_0v_v0(self):
        test_charstr = '10 10 1 2 0 0 0 0 1 2 1 0 1 0 3 4 0 0 rrcurveto'
        xpct_charstr = '10 10 1 2 0 0 1 2 1 1 3 4 0 hhcurveto'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hhcurveto_peephole(self):
        test_charstr = '1 2 3 4 5 6 1 2 3 4 5 0 1 2 3 4 5 6 rrcurveto'
        xpct_charstr = test_charstr
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vvcurveto_peephole(self):
        test_charstr = '1 2 3 4 5 6 1 2 3 4 0 6 1 2 3 4 5 6 rrcurveto'
        xpct_charstr = test_charstr
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_hvcurveto_peephole(self):
        test_charstr = '1 2 3 4 5 6 1 0 3 4 5 6 1 2 3 4 5 6 rrcurveto'
        xpct_charstr = test_charstr
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_vhcurveto_peephole(self):
        test_charstr = '1 2 3 4 5 6 0 2 3 4 5 6 1 2 3 4 5 6 rrcurveto'
        xpct_charstr = test_charstr
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rcurveline_6_2(self):
        test_charstr = '21 -76 21 -72 24 -73 rrcurveto 31 -100 rlineto'
        xpct_charstr = '21 -76 21 -72 24 -73 31 -100 rcurveline'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rcurveline_6_6_2(self):
        test_charstr = '-73 80 -80 121 -49 96 rrcurveto 60 65 55 41 54 17 rrcurveto -8 78 rlineto'
        xpct_charstr = '-73 80 -80 121 -49 96 60 65 55 41 54 17 -8 78 rcurveline'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rcurveline_6_6_6_2(self):
        test_charstr = '1 64 10 51 29 39 rrcurveto 15 21 15 20 15 18 rrcurveto 47 -89 63 -98 52 -59 rrcurveto 91 8 rlineto'
        xpct_charstr = '1 64 10 51 29 39 15 21 15 20 15 18 47 -89 63 -98 52 -59 91 8 rcurveline'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rlinecurve_2_6(self):
        test_charstr = '21 -76 rlineto 21 -72 24 -73 31 -100 rrcurveto'
        xpct_charstr = '21 -76 21 -72 24 -73 31 -100 rlinecurve'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rlinecurve_2_2_6(self):
        test_charstr = '-73 80 rlineto -80 121 rlineto -49 96 60 65 55 41 rrcurveto'
        xpct_charstr = '-73 80 -80 121 -49 96 60 65 55 41 rlinecurve'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

    def test_rlinecurve_2_2_2_6(self):
        test_charstr = '1 64 rlineto 10 51 rlineto 29 39 rlineto 15 21 15 20 15 18 rrcurveto'
        xpct_charstr = '1 64 10 51 29 39 15 21 15 20 15 18 rlinecurve'
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)

# maxstack CFF=48, specializer uses up to 47
    def test_maxstack(self):
        operands = '1 2 3 4 5 6 '
        operator = 'rrcurveto '
        test_charstr = (operands + operator)*9
        xpct_charstr = (operands*2 + operator + operands*7 + operator).rstrip()
        self.assertEqual(get_specialized_charstr(test_charstr), xpct_charstr)


class CFF2VFTestSpecialize(DataFilesHandler):

    def test_blend_round_trip(self):
        ttx_path = self.getpath('TestSparseCFF2VF.ttx')
        ttf_font = TTFont(recalcBBoxes=False, recalcTimestamp=False)
        ttf_font.importXML(ttx_path)
        fontGlyphList = ttf_font.getGlyphOrder()
        topDict = ttf_font['CFF2'].cff.topDictIndex[0]
        charstrings = topDict.CharStrings
        for glyphName in fontGlyphList:
            cs = charstrings[glyphName]
            cs.decompile()
            cmds = programToCommands(cs.program, getNumRegions=cs.getNumRegions)
            cmds_g = generalizeCommands(cmds)
            cmds = specializeCommands(cmds_g, generalizeFirst=False)
            program = commandsToProgram(cmds)
            self.assertEqual(program, cs.program)
            program = specializeProgram(program, getNumRegions=cs.getNumRegions)
            self.assertEqual(program, cs.program)
            program_g = generalizeProgram(program, getNumRegions=cs.getNumRegions)
            program = commandsToProgram(cmds_g)
            self.assertEqual(program, program_g)

    def test_blend_programToCommands(self):
        ttx_path = self.getpath('TestCFF2Widths.ttx')
        ttf_font = TTFont(recalcBBoxes=False, recalcTimestamp=False)
        ttf_font.importXML(ttx_path)
        fontGlyphList = ttf_font.getGlyphOrder()
        topDict = ttf_font['CFF2'].cff.topDictIndex[0]
        charstrings = topDict.CharStrings
        for glyphName in fontGlyphList:
            cs = charstrings[glyphName]
            cs.decompile()
            cmds = programToCommands(cs.program, getNumRegions=cs.getNumRegions)
            program = commandsToProgram(cmds)
            self.assertEqual(program, cs.program)


if __name__ == "__main__":
    import sys
    sys.exit(unittest.main())
