Skip to content
Snippets Groups Projects
Verified Commit 2565788d authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Fixes and unifies implementation of HostmaskHelper

parent a0b4ba10
No related branches found
No related tags found
No related merge requests found
Pipeline #282 passed
...@@ -21,27 +21,23 @@ package de.kuschku.libquassel.util.irc ...@@ -21,27 +21,23 @@ package de.kuschku.libquassel.util.irc
object HostmaskHelper { object HostmaskHelper {
fun nick(mask: String) = mask fun nick(mask: String) = mask
.substringBefore('!', missingDelimiterValue = mask) .substringBeforeLast('@')
.substringBefore('!')
fun user(mask: String) = mask fun user(mask: String) = mask
.substringBeforeLast('@', missingDelimiterValue = mask) .substringBeforeLast('@')
.substringAfter('!', missingDelimiterValue = "") .substringAfter('!', missingDelimiterValue = "")
fun host(mask: String) = mask fun host(mask: String) = mask
.substringAfterLast('@', missingDelimiterValue = "") .substringAfterLast('@', missingDelimiterValue = "")
fun split(mask: String): Triple<String, String, String> { fun split(mask: String): Triple<String, String, String> {
val userPartHostSplit = mask.split("@", limit = 2) val userPart = mask.substringBeforeLast('@')
if (userPartHostSplit.size < 2) val host = mask.substringAfterLast('@', missingDelimiterValue = "")
return Triple(mask, "", "")
val (userPart, host) = userPartHostSplit val user = userPart.substringAfter('!', missingDelimiterValue = "")
val nick = userPart.substringBefore('!')
val nickUserSplit = userPart.split('!', limit = 2)
if (nickUserSplit.size < 2)
return Triple(mask, "", host)
val (nick, user) = nickUserSplit
return Triple(nick, user, host) return Triple(nick, user, host)
} }
} }
...@@ -6,34 +6,127 @@ import org.junit.Test ...@@ -6,34 +6,127 @@ import org.junit.Test
class HostmaskHelperTest { class HostmaskHelperTest {
@Test @Test
fun testNormal() { fun testNormal() {
assertEquals("justJanne", HostmaskHelper.nick("justJanne!kuschku@lithium.kuschku.de")) assertEquals("justJanne",
assertEquals("kuschku", HostmaskHelper.user("justJanne!kuschku@lithium.kuschku.de")) HostmaskHelper.nick("justJanne!kuschku@lithium.kuschku.de"))
assertEquals("lithium.kuschku.de", HostmaskHelper.host("justJanne!kuschku@lithium.kuschku.de")) assertEquals("justJanne",
HostmaskHelper.split("justJanne!kuschku@lithium.kuschku.de").first)
assertEquals("kuschku",
HostmaskHelper.user("justJanne!kuschku@lithium.kuschku.de"))
assertEquals("kuschku",
HostmaskHelper.split("justJanne!kuschku@lithium.kuschku.de").second)
assertEquals("lithium.kuschku.de",
HostmaskHelper.host("justJanne!kuschku@lithium.kuschku.de"))
assertEquals("lithium.kuschku.de",
HostmaskHelper.split("justJanne!kuschku@lithium.kuschku.de").third)
} }
@Test @Test
fun testUnvalidatedIdent() { fun testUnvalidatedIdent() {
assertEquals("justJanne", HostmaskHelper.nick("justJanne!~kuschku@lithium.kuschku.de")) assertEquals("justJanne",
assertEquals("~kuschku", HostmaskHelper.user("justJanne!~kuschku@lithium.kuschku.de")) HostmaskHelper.nick("justJanne!~kuschku@lithium.kuschku.de"))
assertEquals("lithium.kuschku.de", HostmaskHelper.host("justJanne!~kuschku@lithium.kuschku.de")) assertEquals("justJanne",
HostmaskHelper.split("justJanne!~kuschku@lithium.kuschku.de").first)
assertEquals("~kuschku",
HostmaskHelper.user("justJanne!~kuschku@lithium.kuschku.de"))
assertEquals("~kuschku",
HostmaskHelper.split("justJanne!~kuschku@lithium.kuschku.de").second)
assertEquals("lithium.kuschku.de",
HostmaskHelper.host("justJanne!~kuschku@lithium.kuschku.de"))
assertEquals("lithium.kuschku.de",
HostmaskHelper.split("justJanne!~kuschku@lithium.kuschku.de").third)
} }
@Test @Test
fun testUnicode() { fun testUnicode() {
assertEquals("bärlauch", HostmaskHelper.nick("bärlauch!maße@flüge.de")) assertEquals("bärlauch",
assertEquals("maße", HostmaskHelper.user("bärlauch!maße@flüge.de")) HostmaskHelper.nick("bärlauch!maße@flüge.de"))
assertEquals("flüge.de", HostmaskHelper.host("bärlauch!maße@flüge.de")) assertEquals("bärlauch",
HostmaskHelper.split("bärlauch!maße@flüge.de").first)
assertEquals("maße",
HostmaskHelper.user("bärlauch!maße@flüge.de"))
assertEquals("maße",
HostmaskHelper.split("bärlauch!maße@flüge.de").second)
assertEquals("flüge.de",
HostmaskHelper.host("bärlauch!maße@flüge.de"))
assertEquals("flüge.de",
HostmaskHelper.split("bärlauch!maße@flüge.de").third)
} }
@Test @Test
fun testServer() { fun testServer() {
assertEquals("irc.freenode.org", HostmaskHelper.nick("irc.freenode.org")) assertEquals("irc.freenode.org",
HostmaskHelper.nick("irc.freenode.org"))
assertEquals("irc.freenode.org",
HostmaskHelper.split("irc.freenode.org").first)
assertEquals("",
HostmaskHelper.user("irc.freenode.org"))
assertEquals("",
HostmaskHelper.split("irc.freenode.org").second)
assertEquals("",
HostmaskHelper.host("irc.freenode.org"))
assertEquals("",
HostmaskHelper.split("irc.freenode.org").third)
}
@Test
fun testAtNick() {
assertEquals("@nick",
HostmaskHelper.nick("@nick!~ident@example.org"))
assertEquals("@nick",
HostmaskHelper.split("@nick!~ident@example.org").first)
assertEquals("~ident",
HostmaskHelper.user("@nick!~ident@example.org"))
assertEquals("~ident",
HostmaskHelper.split("@nick!~ident@example.org").second)
assertEquals("example.org",
HostmaskHelper.host("@nick!~ident@example.org"))
assertEquals("example.org",
HostmaskHelper.split("@nick!~ident@example.org").third)
}
@Test
fun testReversedDelimiters() {
assertEquals("a",
HostmaskHelper.nick("a@a!"))
assertEquals("a",
HostmaskHelper.split("a@a!").first)
assertEquals("",
HostmaskHelper.user("a@a!"))
assertEquals("",
HostmaskHelper.split("a@a!").second)
assertEquals("a!",
HostmaskHelper.host("a@a!"))
assertEquals("a!",
HostmaskHelper.split("a@a!").third)
} }
@Test @Test
fun testDiscord() { fun testDiscord() {
assertEquals("Gin_", HostmaskHelper.nick("Gin_!Gin_!♡♅ƸӜƷ♅♡!@discord")) assertEquals("Gin_",
assertEquals("Gin_!♡♅ƸӜƷ♅♡!", HostmaskHelper.user("Gin_!Gin_!♡♅ƸӜƷ♅♡!@discord")) HostmaskHelper.nick("Gin_!Gin_!♡♅ƸӜƷ♅♡!@discord"))
assertEquals("discord", HostmaskHelper.host("Gin_!Gin_!♡♅ƸӜƷ♅♡!@discord")) assertEquals("Gin_",
HostmaskHelper.split("Gin_!Gin_!♡♅ƸӜƷ♅♡!@discord").first)
assertEquals("Gin_!♡♅ƸӜƷ♅♡!",
HostmaskHelper.user("Gin_!Gin_!♡♅ƸӜƷ♅♡!@discord"))
assertEquals("Gin_!♡♅ƸӜƷ♅♡!",
HostmaskHelper.split("Gin_!Gin_!♡♅ƸӜƷ♅♡!@discord").second)
assertEquals("discord",
HostmaskHelper.host("Gin_!Gin_!♡♅ƸӜƷ♅♡!@discord"))
assertEquals("discord",
HostmaskHelper.split("Gin_!Gin_!♡♅ƸӜƷ♅♡!@discord").third)
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment