Procurando por corda casos extremos operações. O que eu preciso para teste?
-
22-07-2019 - |
Pergunta
Eu estou chegando ao último estágio da minha corda (uma versão mais escalável de String
) implementação. Obviamente, eu quero todas as operações para dar o mesmo resultado que as operações em String
s sempre que possível.
Fazendo isso por operações ordinais é bastante simples, mas eu estou preocupado sobre a implementação de operações sensíveis à cultura corretamente. Especialmente desde que eu sei apenas duas línguas e em ambas as operações sensíveis à cultura comportar exatamente o mesmo que as operações ordinais fazer!
Assim, existem coisas específicas que eu poderia testar e obter pelo menos alguma confiança que eu estou fazendo as coisas corretamente? Eu sei, por exemplo, cerca de ß igual a SS quando ignorando casos em alemão; sobre pontilhada e undotted i em turco.
Solução
Pares substitutos, se você planeja para apoiá-los -. Incluindo combinações inválidos (por exemplo, apenas uma parte de um)
Se você está fazendo codificação e decodificação, certifique-se de manter o estado suficiente para lidar com sendo dado arbitrariamente blocos de dados binários para decodificar que pode terminar a meio caminho através de um personagem, com a metade restante vindo no próximo personagem.
Outras dicas
O teste turco é o melhor que eu sei:)
Você deve imitar as implementações de métodos string e usar a biblioteca núcleo para fazer isso por você. É muito difícil de levar em conta todos os aspectos possíveis de cada cultura. Em vez de re-inventar o refletor uso roda sobre os métodos de corda e ver as chamadas internas. Por exemplo String.Compare usa CultureInfo.CurrentCulture.CompareInfo.Compare para comparar 2 cordas na cultura atual.