Daryl Lim commited on
Commit
5650cd5
·
1 Parent(s): 09577a5

test: update langmap tests for expanded dict shape with regions

Browse files
Files changed (1) hide show
  1. tests/test_langmap.py +29 -40
tests/test_langmap.py CHANGED
@@ -6,7 +6,7 @@ def test_langid_mapping_is_nonempty():
6
 
7
 
8
  def test_langid_mapping_count():
9
- assert len(langid_to_language) == 22, f"Expected 22 Tier 1 languages, got {len(langid_to_language)}"
10
 
11
 
12
  def test_keys_are_bcp47_tokens():
@@ -15,53 +15,42 @@ def test_keys_are_bcp47_tokens():
15
  assert key.endswith(">"), f"Key {key} does not end with '>'"
16
 
17
 
18
- def test_values_are_nonempty_strings():
19
  for key, value in langid_to_language.items():
20
- assert isinstance(value, str) and value.strip(), f"Empty language name for {key}"
 
 
 
 
 
 
 
 
 
 
 
 
21
 
22
 
23
  def test_no_leading_or_trailing_whitespace():
24
  for key, value in langid_to_language.items():
25
- assert value == value.strip(), f"Language name for {key} has leading/trailing whitespace: {value!r}"
 
26
 
27
 
28
  def test_no_duplicate_language_names():
29
- names = list(langid_to_language.values())
30
  assert len(names) == len(set(names)), "Duplicate language names found"
31
 
32
 
33
- def test_all_tier1_languages_present():
34
- """Verify all 22 Tier 1 languages are present."""
35
- expected = {
36
- "Afrikaans",
37
- "Bulgarian",
38
- "Bosnian",
39
- "Catalan",
40
- "Czech",
41
- "Danish",
42
- "German",
43
- "Spanish",
44
- "Filipino",
45
- "French",
46
- "Croatian",
47
- "Indonesian",
48
- "Italian",
49
- "Macedonian",
50
- "Malay",
51
- "Maltese",
52
- "Norwegian Nynorsk",
53
- "Norwegian",
54
- "Portuguese",
55
- "Romanian",
56
- "Slovak",
57
- "Swedish",
58
- }
59
- values = set(langid_to_language.values())
60
- assert values == expected, f"Mismatch: missing={expected - values}, extra={values - expected}"
61
-
62
-
63
- def test_removed_languages_absent():
64
- """Languages outside Tier 1 must not be in the mapping."""
65
- values = set(langid_to_language.values())
66
- for lang in ["Japanese", "Hindi", "Swahili", "Arabic", "Russian", "Polish", "Dutch"]:
67
- assert lang not in values, f"{lang} should have been removed (not Tier 1)"
 
6
 
7
 
8
  def test_langid_mapping_count():
9
+ assert len(langid_to_language) >= 400, f"Expected ~419 languages, got {len(langid_to_language)}"
10
 
11
 
12
  def test_keys_are_bcp47_tokens():
 
15
  assert key.endswith(">"), f"Key {key} does not end with '>'"
16
 
17
 
18
+ def test_values_are_dicts_with_name_and_region():
19
  for key, value in langid_to_language.items():
20
+ assert isinstance(value, dict), f"Value for {key} is not a dict"
21
+ assert "name" in value, f"Value for {key} missing 'name' key"
22
+ assert "region" in value, f"Value for {key} missing 'region' key"
23
+
24
+
25
+ def test_names_are_nonempty_strings():
26
+ for key, value in langid_to_language.items():
27
+ assert isinstance(value["name"], str) and value["name"].strip(), f"Empty name for {key}"
28
+
29
+
30
+ def test_regions_are_nonempty_strings():
31
+ for key, value in langid_to_language.items():
32
+ assert isinstance(value["region"], str) and value["region"].strip(), f"Empty region for {key}"
33
 
34
 
35
  def test_no_leading_or_trailing_whitespace():
36
  for key, value in langid_to_language.items():
37
+ assert value["name"] == value["name"].strip(), f"Name for {key} has whitespace: {value['name']!r}"
38
+ assert value["region"] == value["region"].strip(), f"Region for {key} has whitespace: {value['region']!r}"
39
 
40
 
41
  def test_no_duplicate_language_names():
42
+ names = [v["name"] for v in langid_to_language.values()]
43
  assert len(names) == len(set(names)), "Duplicate language names found"
44
 
45
 
46
+ def test_key_languages_present():
47
+ """Spot-check key language codes across regions."""
48
+ key_codes = ["<2en>", "<2fr>", "<2de>", "<2es>", "<2ja>", "<2zh>", "<2ar>", "<2hi>", "<2pt>", "<2ru>"]
49
+ for code in key_codes:
50
+ assert code in langid_to_language, f"Missing language code: {code}"
51
+
52
+
53
+ def test_no_other_region():
54
+ """No language should have 'Other' as its region."""
55
+ for key, value in langid_to_language.items():
56
+ assert value["region"] != "Other", f"{key} ({value['name']}) has region 'Other'"