blob: 9992956bc4241964ed7e83a2a4fc3acd143f1f38 [file]
// 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 kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertFailsWith
class CompileSdkVersionTest {
@Test
fun `constructor rejects both apiLevel and previewCodename set`() {
assertFailsWith<IllegalArgumentException> {
CompileSdkVersion(apiLevel = 36, previewCodename = "Baklava")
}
}
@Test
fun `constructor accepts numeric api level`() {
val version = CompileSdkVersion(apiLevel = 35, previewCodename = null)
assertEquals(35, version.apiLevel)
assertEquals(null, version.previewCodename)
}
@Test
fun `constructor accepts preview codename`() {
val version = CompileSdkVersion(apiLevel = null, previewCodename = "Baklava")
assertEquals(null, version.apiLevel)
assertEquals("Baklava", version.previewCodename)
}
@Test
fun `constructor accepts unset values`() {
val version = CompileSdkVersion(apiLevel = null, previewCodename = null)
assertEquals(null, version.apiLevel)
assertEquals(null, version.previewCodename)
}
@Test
fun `isHigherThan compares numeric api levels numerically`() {
val sdk35 = CompileSdkVersion(apiLevel = 35, previewCodename = null)
val sdk36 = CompileSdkVersion(apiLevel = 36, previewCodename = null)
assertEquals(true, sdk36.isHigherThan(sdk35))
assertEquals(false, sdk35.isHigherThan(sdk36))
assertEquals(false, sdk35.isHigherThan(sdk35))
}
@Test
fun `isHigherThan treats a preview codename as higher than any numeric api level`() {
val preview = CompileSdkVersion(apiLevel = null, previewCodename = "Baklava")
val numeric = CompileSdkVersion(apiLevel = 36, previewCodename = null)
assertEquals(true, preview.isHigherThan(numeric))
assertEquals(false, numeric.isHigherThan(preview))
}
@Test
fun `isHigherThan treats distinct preview codenames as incomparable`() {
// Codenames stopped being alphabetically ordered at the "Baklava" alphabet reset,
// so neither side may claim to be higher.
val baklava = CompileSdkVersion(apiLevel = null, previewCodename = "Baklava")
val vanilla = CompileSdkVersion(apiLevel = null, previewCodename = "VanillaIceCream")
assertEquals(false, baklava.isHigherThan(vanilla))
assertEquals(false, vanilla.isHigherThan(baklava))
assertEquals(false, baklava.isHigherThan(baklava))
}
@Test
fun `isHigherThan returns false when either side is unset`() {
val unset = CompileSdkVersion(apiLevel = null, previewCodename = null)
val numeric = CompileSdkVersion(apiLevel = 36, previewCodename = null)
assertEquals(false, unset.isHigherThan(numeric))
assertEquals(false, numeric.isHigherThan(unset))
}
@Test
fun `toString formats preview or apiLevel or unknown`() {
assertEquals("Baklava", CompileSdkVersion(apiLevel = null, previewCodename = "Baklava").toString())
assertEquals("35", CompileSdkVersion(apiLevel = 35, previewCodename = null).toString())
assertEquals("unknown", CompileSdkVersion(apiLevel = null, previewCodename = null).toString())
}
}