Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ package com.adobe.marketing.mobile.internal

internal object CoreConstants {
const val LOG_TAG = "MobileCore"
const val VERSION = "3.6.0"
const val VERSION = "3.7.0"

object EventDataKeys {
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ internal class MobileCoreInitializer(
) {
if (initializeCalled.getAndSet(true)) {
Log.debug(CoreConstants.LOG_TAG, LOG_TAG, "initialize failed - ignoring as it was already called.")
completionCallback?.call(null)
return
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,22 @@ class MobileCoreInitializerTests {
verify(mockedEventHub, never()).registerExtensions(any(), any())
}

@Test
fun `test registerExtensions invokes callback on success`() {
mobileCoreInitializer.setApplication(application)

val latch = CountDownLatch(1)
`when`(mockedEventHub.registerExtensions(any(), any())).doAnswer { invocation ->
val callback = invocation.getArgument<(() -> Unit)?>(1)
callback?.invoke()
Unit
}

mobileCoreInitializer.registerExtensions(listOf(TestExtension1::class.java)) { latch.countDown() }

assertTrue(latch.await(1000, TimeUnit.MILLISECONDS))
}

@Test
fun `test registerExtensions`() {
mobileCoreInitializer.setApplication(application)
Expand Down Expand Up @@ -326,6 +342,47 @@ class MobileCoreInitializerTests {
}
}

@Test
fun `test initialize invokes callback when already initialized`() {
val options = InitOptions.configureWithAppID("appID")
mobileCoreInitializer.initialize(application, options, null)

val latch = CountDownLatch(1)
mobileCoreInitializer.initialize(application, options) { latch.countDown() }

assertTrue(latch.await(1000, TimeUnit.MILLISECONDS))
}

@Test
fun `test initialize null callback does not throw when called again`() {
val options = InitOptions.configureWithAppID("appID")
mobileCoreInitializer.initialize(application, options, null)

// should not throw NullPointerException
mobileCoreInitializer.initialize(application, options, null)
}

@Test
fun `test initialize callback invoked exactly once per call when already initialized`() {
val options = InitOptions.configureWithAppID("appID")
mobileCoreInitializer.initialize(application, options, null)

val callCount = java.util.concurrent.atomic.AtomicInteger(0)
val latch = CountDownLatch(2)

mobileCoreInitializer.initialize(application, options) {
callCount.incrementAndGet()
latch.countDown()
}
mobileCoreInitializer.initialize(application, options) {
callCount.incrementAndGet()
latch.countDown()
}

assertTrue(latch.await(1000, TimeUnit.MILLISECONDS))
assertEquals(2, callCount.get())
}

@Test
fun `test setApplication ignored after initialize`() {
val options = InitOptions.configureWithAppID("appID")
Expand Down
2 changes: 1 addition & 1 deletion code/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ android.useAndroidX=true

#Maven artifacts
#Core extension
coreExtensionVersion=3.6.0
coreExtensionVersion=3.7.0
coreExtensionName=core
coreMavenRepoName=AdobeMobileCoreSdk
coreMavenRepoDescription=Android Core Extension for Adobe Mobile Marketing
Expand Down
Loading