public void ApplyMappingsString_MatchWithinSubstring_DoesntDoubleReplace() { var mappings = new Dictionary <string, string>() { { "abc", "a'b'c'" }, { "bc", "b''c''" } }; var converter = new OrthographyConverter(mappings); string result = converter.ApplyMappings("abchelloworld"); Assert.That(result, Is.Not.EqualTo("a'b''c''helloworld")); // This would be obtained if you only advance it by 1 instead of by the length of the matched key. Assert.That(result, Is.EqualTo("a'b'c'helloworld")); }
public void ApplyMappingsString_MultipleMatches_LongerLengthTakesPrecendence() { var mappings = new Dictionary <string, string>() { { "ab", "a''b''" }, { "abc", "a'b'c'" }, { "a", "a'''" } }; var converter = new OrthographyConverter(mappings); string result = converter.ApplyMappings("abchelloworld"); Assert.That(result, Is.Not.EqualTo("a'''bc'helloworld")); // This would be obtained if shortest mapping takes precedence. Assert.That(result, Is.Not.EqualTo("a''b''chelloworld")); // This would be obtained if first mapping takes precedence. Assert.That(result, Is.EqualTo("a'b'c'helloworld")); }