@@ -388,3 +388,78 @@ TEST_F(DesktopFileReaderTest, testReadBrokenSectionMissingOpeningBracket) {
388388 EXPECT_THROW (DesktopFileReader reader (ins), ParseError);
389389 }
390390}
391+
392+ // FIXME: introduce proper localization support
393+ TEST_F (DesktopFileReaderTest, testReadLocalizedEntriesWithoutProperLocalizationSupport) {
394+ std::stringstream ss;
395+ ss << " [Desktop File]" << std::endl
396+ << " Name=name" << std::endl
397+ << " Name[de]=name" << std::endl
398+ << " Exec=exec" << std::endl;
399+
400+ DesktopFileReader reader (ss);
401+
402+ auto section = reader[" Desktop File" ];
403+ EXPECT_FALSE (section.empty ());
404+
405+ auto data = reader.data ();
406+
407+ auto expected = DesktopFile::section_t ({
408+ {" Name" , DesktopFileEntry (" Name" , " name" )},
409+ // FIXME: revise after introduction of localization support
410+ {" Name[de]" , DesktopFileEntry (" Name[de]" , " name" )},
411+ {" Exec" , DesktopFileEntry (" Exec" , " exec" )},
412+ });
413+
414+ EXPECT_EQ (data[" Desktop File" ], expected);
415+ }
416+
417+ TEST_F (DesktopFileReaderTest, testBrokenLocalizedKeys) {
418+ {
419+ std::stringstream ins;
420+ ins << " [Desktop Entry]" << std::endl
421+ << " test]de[=test" << std::endl;
422+
423+ EXPECT_THROW (DesktopFileReader reader (ins), ParseError);
424+ }
425+
426+ {
427+ std::stringstream ins;
428+ ins << " [Desktop Entry]" << std::endl
429+ << " test[de]]=test" << std::endl;
430+
431+ EXPECT_THROW (DesktopFileReader reader (ins), ParseError);
432+ }
433+
434+ {
435+ std::stringstream ins;
436+ ins << " [Desktop Entry]" << std::endl
437+ << " test[[de]=test" << std::endl;
438+
439+ EXPECT_THROW (DesktopFileReader reader (ins), ParseError);
440+ }
441+
442+ {
443+ std::stringstream ins;
444+ ins << " [Desktop Entry]" << std::endl
445+ << " test[]de=test" << std::endl;
446+
447+ EXPECT_THROW (DesktopFileReader reader (ins), ParseError);
448+ }
449+
450+ {
451+ std::stringstream ins;
452+ ins << " [Desktop Entry]" << std::endl
453+ << " test[de=test" << std::endl;
454+
455+ EXPECT_THROW (DesktopFileReader reader (ins), ParseError);
456+ }
457+
458+ {
459+ std::stringstream ins;
460+ ins << " [Desktop Entry]" << std::endl
461+ << " testde]=test" << std::endl;
462+
463+ EXPECT_THROW (DesktopFileReader reader (ins), ParseError);
464+ }
465+ }
0 commit comments