1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package com.dmdirc.ktirc.io
-
- import org.junit.jupiter.api.Assertions.*
- import org.junit.jupiter.api.Test
-
- internal class CaseMappingTest {
-
- @Test
- fun `Equal unicode strings are equivalent regardless of case mapping`() {
- val unicode = "\uD83D\uDC69\u200D\uD83C\uDF73 \uD83D\uDC68\u200D\uD83C\uDF73 \uD83D\uDC69\u200D\uD83C\uDF93 \uD83D\uDC68\u200D\uD83C\uDF93"
- assertTrue(CaseMapping.Ascii.areEquivalent(unicode, unicode))
- assertTrue(CaseMapping.Rfc.areEquivalent(unicode, unicode))
- assertTrue(CaseMapping.RfcStrict.areEquivalent(unicode, unicode))
- }
-
- @Test
- fun `Different length strings are always not equivalent`() {
- val left = "abc"
- val right = "ABC "
- assertFalse(CaseMapping.Ascii.areEquivalent(left, right))
- assertFalse(CaseMapping.Rfc.areEquivalent(left, right))
- assertFalse(CaseMapping.RfcStrict.areEquivalent(left, right))
- }
-
- @Test
- fun `ASCII characters are equivalent for all mappings`() {
- val left = "the Quick Brown fox Jumps over the lazy dog"
- val right = "THE qUICK bROWN fox jUMPS OVER THE LAZY DOG"
- assertTrue(CaseMapping.Ascii.areEquivalent(left, right))
- assertTrue(CaseMapping.Rfc.areEquivalent(left, right))
- assertTrue(CaseMapping.RfcStrict.areEquivalent(left, right))
- }
-
- @Test
- fun `RFC characters are equivalent for RFC mappings not ASCII`() {
- val left = "[Hello\\There}"
- val right = "{Hello|There]"
- assertFalse(CaseMapping.Ascii.areEquivalent(left, right))
- assertTrue(CaseMapping.Rfc.areEquivalent(left, right))
- assertTrue(CaseMapping.RfcStrict.areEquivalent(left, right))
- }
-
- @Test
- fun `Tilde and caret are equivalent only for RFC mapping`() {
- val left = "~~^~~"
- val right = "~^^^^"
- assertFalse(CaseMapping.Ascii.areEquivalent(left, right))
- assertTrue(CaseMapping.Rfc.areEquivalent(left, right))
- assertFalse(CaseMapping.RfcStrict.areEquivalent(left, right))
- }
-
- @Test
- fun `FromName returns matching mapping`() {
- assertEquals(CaseMapping.Ascii, CaseMapping.fromName("ascii"))
- assertEquals(CaseMapping.Ascii, CaseMapping.fromName("Ascii"))
- assertEquals(CaseMapping.Rfc, CaseMapping.fromName("rfc1459"))
- assertEquals(CaseMapping.Rfc, CaseMapping.fromName("RFC1459"))
- assertEquals(CaseMapping.RfcStrict, CaseMapping.fromName("rfc1459-strict"))
- assertEquals(CaseMapping.RfcStrict, CaseMapping.fromName("Rfc1459-Strict"))
- }
-
- @Test
- fun `FromName falls back to RFC`() {
- assertEquals(CaseMapping.Rfc, CaseMapping.fromName(""))
- assertEquals(CaseMapping.Rfc, CaseMapping.fromName("foo"))
- }
-
- }
|