from langmap.langid_mapping import langid_to_language def test_langid_mapping_is_nonempty(): assert len(langid_to_language) > 0 def test_langid_mapping_count(): assert len(langid_to_language) >= 400, f"Expected ~419 languages, got {len(langid_to_language)}" def test_keys_are_bcp47_tokens(): for key in langid_to_language: assert key.startswith("<2"), f"Key {key} does not start with '<2'" assert key.endswith(">"), f"Key {key} does not end with '>'" def test_values_are_dicts_with_name_and_region(): for key, value in langid_to_language.items(): assert isinstance(value, dict), f"Value for {key} is not a dict" assert "name" in value, f"Value for {key} missing 'name' key" assert "region" in value, f"Value for {key} missing 'region' key" def test_names_are_nonempty_strings(): for key, value in langid_to_language.items(): assert isinstance(value["name"], str) and value["name"].strip(), f"Empty name for {key}" def test_regions_are_nonempty_strings(): for key, value in langid_to_language.items(): assert isinstance(value["region"], str) and value["region"].strip(), f"Empty region for {key}" def test_no_leading_or_trailing_whitespace(): for key, value in langid_to_language.items(): assert value["name"] == value["name"].strip(), f"Name for {key} has whitespace: {value['name']!r}" assert value["region"] == value["region"].strip(), f"Region for {key} has whitespace: {value['region']!r}" def test_no_duplicate_language_names(): names = [v["name"] for v in langid_to_language.values()] assert len(names) == len(set(names)), "Duplicate language names found" def test_key_languages_present(): """Spot-check key language codes across regions.""" key_codes = ["<2en>", "<2fr>", "<2de>", "<2es>", "<2ja>", "<2zh>", "<2ar>", "<2hi>", "<2pt>", "<2ru>"] for code in key_codes: assert code in langid_to_language, f"Missing language code: {code}" def test_no_other_region(): """No language should have 'Other' as its region.""" for key, value in langid_to_language.items(): assert value["region"] != "Other", f"{key} ({value['name']}) has region 'Other'"