| // 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()) |
| } |
| } |