for constency with the rest of fontTools tests. Also, in setup.cfg we tell pytest to only search for modules named like these
99 lines
3.8 KiB
Python
99 lines
3.8 KiB
Python
from __future__ import absolute_import, unicode_literals
|
|
import unittest
|
|
from fontTools.ufoLib.filenames import userNameToFileName, handleClash1, handleClash2
|
|
|
|
|
|
class TestFilenames(unittest.TestCase):
|
|
|
|
def test_userNameToFileName(self):
|
|
self.assertEqual(userNameToFileName("a"), "a")
|
|
self.assertEqual(userNameToFileName("A"), "A_")
|
|
self.assertEqual(userNameToFileName("AE"), "A_E_")
|
|
self.assertEqual(userNameToFileName("Ae"), "A_e")
|
|
self.assertEqual(userNameToFileName("ae"), "ae")
|
|
self.assertEqual(userNameToFileName("aE"), "aE_")
|
|
self.assertEqual(userNameToFileName("a.alt"), "a.alt")
|
|
self.assertEqual(userNameToFileName("A.alt"), "A_.alt")
|
|
self.assertEqual(userNameToFileName("A.Alt"), "A_.A_lt")
|
|
self.assertEqual(userNameToFileName("A.aLt"), "A_.aL_t")
|
|
self.assertEqual(userNameToFileName("A.alT"), "A_.alT_")
|
|
self.assertEqual(userNameToFileName("T_H"), "T__H_")
|
|
self.assertEqual(userNameToFileName("T_h"), "T__h")
|
|
self.assertEqual(userNameToFileName("t_h"), "t_h")
|
|
self.assertEqual(userNameToFileName("F_F_I"), "F__F__I_")
|
|
self.assertEqual(userNameToFileName("f_f_i"), "f_f_i")
|
|
self.assertEqual(userNameToFileName("Aacute_V.swash"),
|
|
"A_acute_V_.swash")
|
|
self.assertEqual(userNameToFileName(".notdef"), "_notdef")
|
|
self.assertEqual(userNameToFileName("con"), "_con")
|
|
self.assertEqual(userNameToFileName("CON"), "C_O_N_")
|
|
self.assertEqual(userNameToFileName("con.alt"), "_con.alt")
|
|
self.assertEqual(userNameToFileName("alt.con"), "alt._con")
|
|
|
|
def test_userNameToFileName_ValueError(self):
|
|
with self.assertRaises(ValueError):
|
|
userNameToFileName(b"a")
|
|
with self.assertRaises(ValueError):
|
|
userNameToFileName({"a"})
|
|
with self.assertRaises(ValueError):
|
|
userNameToFileName(("a",))
|
|
with self.assertRaises(ValueError):
|
|
userNameToFileName(["a"])
|
|
with self.assertRaises(ValueError):
|
|
userNameToFileName(["a"])
|
|
with self.assertRaises(ValueError):
|
|
userNameToFileName(b"\xd8\x00")
|
|
|
|
def test_handleClash1(self):
|
|
prefix = ("0" * 5) + "."
|
|
suffix = "." + ("0" * 10)
|
|
existing = ["a" * 5]
|
|
|
|
e = list(existing)
|
|
self.assertEqual(
|
|
handleClash1(userName="A" * 5, existing=e, prefix=prefix,
|
|
suffix=suffix),
|
|
'00000.AAAAA000000000000001.0000000000'
|
|
)
|
|
|
|
e = list(existing)
|
|
e.append(prefix + "aaaaa" + "1".zfill(15) + suffix)
|
|
self.assertEqual(
|
|
handleClash1(userName="A" * 5, existing=e, prefix=prefix,
|
|
suffix=suffix),
|
|
'00000.AAAAA000000000000002.0000000000'
|
|
)
|
|
|
|
e = list(existing)
|
|
e.append(prefix + "AAAAA" + "2".zfill(15) + suffix)
|
|
self.assertEqual(
|
|
handleClash1(userName="A" * 5, existing=e, prefix=prefix,
|
|
suffix=suffix),
|
|
'00000.AAAAA000000000000001.0000000000'
|
|
)
|
|
|
|
def test_handleClash2(self):
|
|
prefix = ("0" * 5) + "."
|
|
suffix = "." + ("0" * 10)
|
|
existing = [prefix + str(i) + suffix for i in range(100)]
|
|
|
|
e = list(existing)
|
|
self.assertEqual(
|
|
handleClash2(existing=e, prefix=prefix, suffix=suffix),
|
|
'00000.100.0000000000'
|
|
)
|
|
|
|
e = list(existing)
|
|
e.remove(prefix + "1" + suffix)
|
|
self.assertEqual(
|
|
handleClash2(existing=e, prefix=prefix, suffix=suffix),
|
|
'00000.1.0000000000'
|
|
)
|
|
|
|
e = list(existing)
|
|
e.remove(prefix + "2" + suffix)
|
|
self.assertEqual(
|
|
handleClash2(existing=e, prefix=prefix, suffix=suffix),
|
|
'00000.2.0000000000'
|
|
)
|