#!/usr/bin/env python3

"""Tests build_font.py by renaming a font.

The test copies Roboto-Regular.ttf to a tmp directory and ask build_font.py to rename it and put in another dir.
We then use ttx to dump the new font to its xml and check if rename was successful

To test locally, use:
PYTHONPATH="$PYTHONPATH:/path/to/android/checkout/external/fonttools/Lib" ./test.py
"""

import unittest
import build_font

from fontTools import ttx
import os
import xml.etree.ElementTree as etree
import shutil
import tempfile

class MyTest(unittest.TestCase):
  def test(self):
    font_name = "Roboto-Regular.ttf"
    srcdir = tempfile.mkdtemp()
    print("srcdir: " + srcdir)
    shutil.copy(font_name, srcdir)
    destdir = tempfile.mkdtemp()
    print("destdir: " + destdir)
    self.assertTrue(build_font.main([srcdir, destdir]) is None)
    out_path = os.path.join(destdir, font_name)
    ttx.main([out_path])
    ttx_path = out_path[:-1] + "x"
    tree = etree.parse(ttx_path)
    root = tree.getroot()
    name_tag = root.find('name')
    fonts = build_font.get_font_info(name_tag)
    shutil.rmtree(srcdir)
    shutil.rmtree(destdir)
    self.assertEqual(fonts[0].family, "Roboto1200310")
    self.assertEqual(fonts[0].fullname, "Roboto1200310 Regular")



if __name__ == '__main__':
  unittest.main()
