Skip to content

Instantly share code, notes, and snippets.

@marcin-adamczewski
Created November 20, 2020 14:43
Show Gist options
  • Save marcin-adamczewski/43f153a1b5164a2af458c295dd8af538 to your computer and use it in GitHub Desktop.
Save marcin-adamczewski/43f153a1b5164a2af458c295dd8af538 to your computer and use it in GitHub Desktop.
removeForbiddenCharactersFromFileName() + tests
import org.junit.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue
object FileNameUtils {
private const val forbiddenFileNameCharsRegexp = "([\\\\<>:?\"*|/])"
fun removeForbiddenCharactersFromFileName(fileName: String): String {
return fileName.replace(forbiddenFileNameCharsRegexp.toRegex(), "")
}
}
class FileNameUtilsTest {
private val forbiddenChars = "<>:?\"*|/"
@Test
fun `when given file name then removed forbidden characters`() {
assertNoForbiddenCharacters("123abc!@#", "123abc!@#")
assertNoForbiddenCharacters("a${forbiddenChars}b", "ab")
assertNoForbiddenCharacters("//ab//", "ab")
assertNoForbiddenCharacters("/ab/", "ab")
assertNoForbiddenCharacters("""\ab\"""", "ab")
assertNoForbiddenCharacters("""\\a\\b\\"""", "ab")
assertNoForbiddenCharacters("*ab*", "ab")
assertNoForbiddenCharacters(":ab:", "ab")
assertNoForbiddenCharacters("<ab>", "ab")
assertNoForbiddenCharacters("?ab?", "ab")
assertNoForbiddenCharacters("|a|b|", "ab")
assertNoForbiddenCharacters("|||", "")
}
private fun assertNoForbiddenCharacters(originalFileName: String, expectedFileName: String) {
val correctFileName = FileUtils.removeForbiddenCharactersFromFileName(originalFileName)
forbiddenChars.forEach { char ->
assertTrue("File name $originalFileName contains $char character") {
!correctFileName.contains(char)
}
}
assertEquals(expectedFileName, correctFileName)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment