blob: 8f28020698eaf3232916257577ae342042ff01e6 [file] [log] [blame]
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package com.flutter.gradle
import org.gradle.internal.impldep.org.junit.Assert.assertThrows
import kotlin.test.Test
import kotlin.test.assertContains
import kotlin.test.assertFalse
import kotlin.test.assertTrue
class DeeplinkTest {
@Test
fun `equals should return true for equal objects`() {
val deeplink1 = Deeplink("scheme1", "host1", "path1", IntentFilterCheck())
val deeplink2 = Deeplink("scheme1", "host1", "path1", IntentFilterCheck())
assertTrue { deeplink1 == deeplink2 }
}
@Test
fun `equals should return false for unequal objects`() {
val deeplink1 = Deeplink("scheme1", "host1", "path1", IntentFilterCheck())
val deeplink2 = Deeplink("scheme2", "host2", "path2", IntentFilterCheck())
assertFalse { deeplink1 == deeplink2 }
}
@Test
fun `equals should return false for other of different type`() {
val deeplink1 = Deeplink("scheme1", "host1", "path1", IntentFilterCheck())
val notADeeplink = 5
assertFalse { deeplink1.equals(notADeeplink) }
}
@Suppress("UnusedEquals")
@Test
fun `equals should throw NullPointerException for null other`() {
val deeplink1 = Deeplink("scheme1", "host1", "path1", IntentFilterCheck())
val deeplink2 = null
assertThrows(NullPointerException::class.java) { deeplink1.equals(deeplink2) }
}
@Test
fun canCreateDeeplinkJsonWithIntentFilter() {
val intentFilterCheck = IntentFilterCheck()
intentFilterCheck.hasActionView = true
intentFilterCheck.hasDefaultCategory = true
val deeplink = Deeplink("scheme1", "host1", "path1", intentFilterCheck)
val linkJson = deeplink.toJson()
// Keys are not a reference because the key values are accessed
// across the gradle/dart boundery.
assertTrue(linkJson.containsKey("scheme"))
assertTrue(linkJson.containsKey("host"))
assertTrue(linkJson.containsKey("path"))
assertTrue(linkJson.containsKey("intentFilterCheck"))
assertContains(linkJson.toString(), intentFilterCheck.toJson().toString())
}
}