def test_get_composites_data():
    ufo, ps_names = get_glyph_names_mapping(_get_test_ufo_path())
    comps_data = get_composites_data(ufo, ps_names)
    comps_name_list = sorted(list(comps_data.keys()))
    comps_comp_list = [comps_data[gname] for gname in comps_name_list]
    assert comps_name_list == ['aacute', 'adieresis', 'atilde', 'uni01CE']
    assert comps_comp_list[0].names == ('a', 'uni0301')
    assert comps_comp_list[3].names == ('a', 'uni030C')
    assert comps_comp_list[0].positions == ((0, 0), (263.35, 0))
    assert comps_comp_list[3].positions == ((0, 0), (263, 0))
def test_get_glyph_names_mapping_names_from_goadb():
    # the test UFO has a 'public.postscriptNames' in its lib;
    # empty the lib temporarily to force the reading of the GOADB
    ufo_path = _get_test_ufo_path()
    lib_path = os.path.join(ufo_path, 'lib.plist')
    lib_data = _read_txt_file(lib_path)
    _write_file(lib_path, EMPTY_LIB)
    result = get_glyph_names_mapping(ufo_path)
    _write_file(lib_path, lib_data)
    assert sorted(result[1].keys()) == DESIGN_NAMES_LIST
    assert sorted(result[1].values()) == PRODCT_NAMES_LIST
def test_get_glyph_names_mapping_names_from_lib():
    result = get_glyph_names_mapping(_get_test_ufo_path())
    assert sorted(result[1].keys()) == DESIGN_NAMES_LIST
    assert sorted(result[1].values()) == PRODCT_NAMES_LIST
def test_get_glyph_names_mapping_invalid_ufo():
    path = _get_test_ttf_path()
    assert get_glyph_names_mapping(path) == (None, None)