Я тестирую SDK, который извлекает текст из PDF с возможностью поиска. Одна из зависимостей SDK была недавно обновлена, и это приводит к сбою существующего теста на тексте на иврите. Я не знаю иврита и не достаточно о том, как задействованные технологии представляют языки справа налево.Правильная последовательность символов на иврите в C# и файлы PDF с возможностью поиска
Тест NUnit утверждает, что извлеченный текст соответствует строке C# «מנבוצץז».
string hebrewText = reader.ReadToEnd();
Assert.AreEqual("מנבוצץז ", hebrewText);
Растрированный PDF имеет то, что, по моему мнению, является одним и тем же персонажем, но в обратном порядке.
тестУстройство не может с этим сообщением:
ОЖИДАЕТСЯ: "מנבוצץז"
Но было: "זץצובנמ"
Хотя фактический результат более тесно соответствует тому, что я вижу в растрированном PDF-файле, я не совсем уверен, что исходный тест неверен.
- Являются ли символы на иврите в строке C#, которые должны быть прочитаны справа налево, как напечатанный текст на иврите?
- Влияет ли какая-либо часть стека .NET с направлением ивритских строк?
- Что относительно NUnit?
- Являются ли символы на иврите встроенными в PDF с возможностью поиска, которые обычно должны идти в том же направлении, что и растрированный текст?
- Что-нибудь еще, что я должен знать, прежде чем принимать решение об «исправлении» этого модульного теста?
Я не уверен, но в любом случае вы должны использовать перегрузку с CultureInfo и указать это (что-то вроде 'Assert.AreEqual (« מנבוצץז », hebrewText, false, new CultureInfo (« he-IL »)) '). Это должно хотя бы сказать, что он должен учитывать RTL. Не уверен, что делает дефолт, но скорее всего он будет использовать 'InvariantCulture', а не systeminfoinfo системы. – Jcl
Спасибо за подсказку. Я попытался изменить утверждение на Assert.AreEqual («מנבוצץז», hebrewText.ToString (новый CultureInfo («he-IL»))) ;, но это не повлияло на результат. Я также попробовал культуру «он» с тем же результатом. –