summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarsh Shandilya <me@msfjarvis.dev>2021-12-10 00:32:25 +0530
committerHarsh Shandilya <me@msfjarvis.dev>2021-12-21 02:13:24 +0530
commit5395b4853bac4bc7f3683d1122dd9b234b6f4174 (patch)
tree038a6cf48e70ae0dd10f29180ad5f29dbc8ecda1
parent16392b75814a71a4d78b3598cd3364baeb0b446e (diff)
diceware: add WordListParser and tests
-rw-r--r--passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/WordListParser.kt21
-rw-r--r--passgen/diceware/src/test/kotlin/dev/msfjarvis/aps/passgen/diceware/WordListParserTest.kt20
2 files changed, 41 insertions, 0 deletions
diff --git a/passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/WordListParser.kt b/passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/WordListParser.kt
new file mode 100644
index 00000000..5351aaa1
--- /dev/null
+++ b/passgen/diceware/src/main/kotlin/dev/msfjarvis/aps/passgen/diceware/WordListParser.kt
@@ -0,0 +1,21 @@
+/*
+ * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved.
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+package dev.msfjarvis.aps.passgen.diceware
+
+import java.io.InputStream
+
+internal object WordListParser {
+ fun parse(wordlistStream: InputStream) =
+ wordlistStream
+ .bufferedReader()
+ .lineSequence()
+ .map { line -> line.split(DELIMITER) }
+ .filter { items -> items.size == 2 && items[0].toIntOrNull() != null }
+ .map { items -> items[0].toInt() to items[1] }
+ .toMap()
+
+ private const val DELIMITER = "\t"
+}
diff --git a/passgen/diceware/src/test/kotlin/dev/msfjarvis/aps/passgen/diceware/WordListParserTest.kt b/passgen/diceware/src/test/kotlin/dev/msfjarvis/aps/passgen/diceware/WordListParserTest.kt
new file mode 100644
index 00000000..e60db38c
--- /dev/null
+++ b/passgen/diceware/src/test/kotlin/dev/msfjarvis/aps/passgen/diceware/WordListParserTest.kt
@@ -0,0 +1,20 @@
+/*
+ * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved.
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+package dev.msfjarvis.aps.passgen.diceware
+
+import kotlin.test.Test
+import kotlin.test.assertEquals
+
+class WordListParserTest {
+ @Test
+ fun parseWordList() {
+ val stream = "11111\tabcde\n22222\tfghij".byteInputStream()
+ val parsedMap = WordListParser.parse(stream)
+ assertEquals(2, parsedMap.size)
+ assertEquals("abcde", parsedMap[11111])
+ assertEquals("fghij", parsedMap[22222])
+ }
+}