projects
/
Sone.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
6940f7d
)
✅ Add test for parser to be injectable
author
David ‘Bombe’ Roden
<bombe@pterodactylus.net>
Sun, 10 Mar 2019 10:50:19 +0000
(11:50 +0100)
committer
David ‘Bombe’ Roden
<bombe@pterodactylus.net>
Sun, 10 Mar 2019 20:29:05 +0000
(21:29 +0100)
src/main/kotlin/net/pterodactylus/sone/text/SoneTextParser.kt
patch
|
blob
|
history
src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java
patch
|
blob
|
history
src/test/kotlin/net/pterodactylus/sone/test/Guice.kt
patch
|
blob
|
history
diff --git
a/src/main/kotlin/net/pterodactylus/sone/text/SoneTextParser.kt
b/src/main/kotlin/net/pterodactylus/sone/text/SoneTextParser.kt
index
690ce6d
..
3cd6587
100644
(file)
--- a/
src/main/kotlin/net/pterodactylus/sone/text/SoneTextParser.kt
+++ b/
src/main/kotlin/net/pterodactylus/sone/text/SoneTextParser.kt
@@
-17,11
+17,12
@@
import net.pterodactylus.sone.text.LinkType.SSK
import net.pterodactylus.sone.text.LinkType.USK
import org.bitpedia.util.Base32
import java.net.MalformedURLException
import net.pterodactylus.sone.text.LinkType.USK
import org.bitpedia.util.Base32
import java.net.MalformedURLException
+import javax.inject.*
/**
* [Parser] implementation that can recognize Freenet URIs.
*/
/**
* [Parser] implementation that can recognize Freenet URIs.
*/
-class SoneTextParser(private val soneProvider: SoneProvider?, private val postProvider: PostProvider?) {
+class SoneTextParser
@Inject constructor
(private val soneProvider: SoneProvider?, private val postProvider: PostProvider?) {
fun parse(source: String, context: SoneTextParserContext?) =
source.split("\n")
fun parse(source: String, context: SoneTextParserContext?) =
source.split("\n")
diff --git
a/src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java
b/src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java
index
e763a20
..
cf8cdd2
100644
(file)
--- a/
src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java
+++ b/
src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java
@@
-17,7
+17,9
@@
package net.pterodactylus.sone.text;
package net.pterodactylus.sone.text;
+import static com.google.inject.Guice.createInjector;
import static java.lang.String.format;
import static java.lang.String.format;
+import static net.pterodactylus.sone.test.GuiceKt.supply;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.isIn;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.isIn;
@@
-36,6
+38,7
@@
import net.pterodactylus.sone.database.PostProvider;
import net.pterodactylus.sone.database.SoneProvider;
import com.google.common.base.Optional;
import net.pterodactylus.sone.database.SoneProvider;
import com.google.common.base.Optional;
+import com.google.inject.Injector;
import kotlin.jvm.functions.Function1;
import org.junit.Test;
import kotlin.jvm.functions.Function1;
import org.junit.Test;
@@
-415,6
+418,15
@@
public class SoneTextParserTest {
return text.toString();
}
return text.toString();
}
+ @Test
+ public void parserCanBeCreatedByGuice() {
+ Injector injector = createInjector(
+ supply(SoneProvider.class).byMock(),
+ supply(PostProvider.class).byMock()
+ );
+ assertThat(injector.getInstance(SoneTextParser.class), notNullValue());
+ }
+
/**
* Mock Sone provider.
*/
/**
* Mock Sone provider.
*/
diff --git
a/src/test/kotlin/net/pterodactylus/sone/test/Guice.kt
b/src/test/kotlin/net/pterodactylus/sone/test/Guice.kt
index
360b0cd
..
e27ad07
100644
(file)
--- a/
src/test/kotlin/net/pterodactylus/sone/test/Guice.kt
+++ b/
src/test/kotlin/net/pterodactylus/sone/test/Guice.kt
@@
-2,6
+2,7
@@
package net.pterodactylus.sone.test
import com.google.inject.Injector
import com.google.inject.Module
import com.google.inject.Injector
import com.google.inject.Module
+import org.mockito.*
import javax.inject.Provider
import kotlin.reflect.KClass
import javax.inject.Provider
import kotlin.reflect.KClass
@@
-17,6
+18,7
@@
fun <T : Any> supply(javaClass: Class<T>): Source<T> = object : Source<T> {
override fun byInstance(instance: T) = Module { it.bind(javaClass).toProvider(Provider<T> { instance }) }
override fun byProvider(provider: com.google.inject.Provider<T>) = Module { it.bind(javaClass).toProvider(provider) }
override fun byProvider(provider: Class<Provider<T>>) = Module { it.bind(javaClass).toProvider(provider) }
override fun byInstance(instance: T) = Module { it.bind(javaClass).toProvider(Provider<T> { instance }) }
override fun byProvider(provider: com.google.inject.Provider<T>) = Module { it.bind(javaClass).toProvider(provider) }
override fun byProvider(provider: Class<Provider<T>>) = Module { it.bind(javaClass).toProvider(provider) }
+ override fun byMock() = Module { it.bind(javaClass).toInstance(Mockito.mock(javaClass)) }
}
interface Source<T : Any> {
}
interface Source<T : Any> {
@@
-24,4
+26,5
@@
interface Source<T : Any> {
fun byInstance(instance: T): Module
fun byProvider(provider: com.google.inject.Provider<T>): Module
fun byProvider(provider: Class<Provider<T>>): Module
fun byInstance(instance: T): Module
fun byProvider(provider: com.google.inject.Provider<T>): Module
fun byProvider(provider: Class<Provider<T>>): Module
+ fun byMock(): Module
}
}