@@ -203,7 +203,7 @@ def test_write_file(self):
203203 Path (temp_path ).unlink ()
204204
205205
206- class TestWriter :
206+ class TestTwineFileReader :
207207 @pytest .fixture
208208 def fixtures_dir (self ):
209209 """Get fixtures directory path."""
@@ -219,5 +219,42 @@ def test_accent_symbol(self, fixtures_dir):
219219 assert twine_file .definitions_by_key ["value_wrapped_by_spaces" ].translations ["en" ] == ' value '
220220 assert twine_file .definitions_by_key ["value_wrapped_by_accents" ].translations ["en" ] == '`value`'
221221
222+ class TestTwineFileOptimizations :
223+ @pytest .fixture
224+ def fixture_twine_file (self ) -> TwineFile :
225+ twine_file = TwineFile ()
226+ fixtures_dir = Path (__file__ ).parent / "fixtures"
227+ twine_file .read (str (fixtures_dir / "twine_preoptimized.txt" ))
228+ return twine_file
229+
230+ def test_deduplication_local_langs (self , fixture_twine_file : TwineFile ):
231+ definitionA = fixture_twine_file .definitions_by_key ['value_with_local_lang_codes' ]
232+ assert definitionA .translations ['pt' ] == definitionA .translations ['pt-BR' ]
233+ assert definitionA .translations ['es' ] == definitionA .translations ['es-MX' ]
234+
235+ fixture_twine_file .fallback_to_default = False
236+ fixture_twine_file .optimize_duplicates ()
237+
238+ # Check that 'pt-BR' and 'es-MX' are removed from the TwineFile
239+ definitionA = fixture_twine_file .definitions_by_key ['value_with_local_lang_codes' ]
240+ assert 'pt-BR' not in definitionA .translations
241+ assert 'pt' in definitionA .translations
242+ assert 'es-MX' not in definitionA .translations
243+ assert 'es' in definitionA .translations
244+ assert definitionA .translations ['es' ] == definitionA .translations ['en' ]
245+
246+ def test_deduplication_default_lang (self , fixture_twine_file : TwineFile ):
247+ definitionB = fixture_twine_file .definitions_by_key ['value_with_duplicated' ]
248+ assert definitionB .translations ['en' ] == definitionB .translations ['de' ]
249+
250+ fixture_twine_file .fallback_to_default = True
251+ fixture_twine_file .optimize_duplicates ()
252+
253+ # Check that 'de' lang is removed from the TwineFile because it matches 'en'
254+ definitionB = fixture_twine_file .definitions_by_key ['value_with_duplicated' ]
255+ assert 'de' not in definitionB .translations
256+ assert 'fr' in definitionB .translations
257+
258+
222259if __name__ == "__main__" :
223260 pytest .main ([__file__ , "-v" ])
0 commit comments