1/* 2 * Copyright 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.tools.build.jetifier.processor.transform.pom 18 19import com.android.tools.build.jetifier.core.pom.PomDependency 20import com.android.tools.build.jetifier.core.pom.PomRewriteRule 21import com.google.common.truth.Truth 22import org.junit.Test 23 24class PomRewriteRuleTest { 25 26 @Test(expected = IllegalArgumentException::class) 27 fun versions_nullInRule_match() { 28 testVersionsMatch( 29 ruleVersion = null, 30 pomVersion = "27.0.0" 31 ) 32 } 33 34 @Test fun versions_nullInPom_match() { 35 testVersionsMatch( 36 ruleVersion = "27.0.0", 37 pomVersion = null 38 ) 39 } 40 41 @Test(expected = IllegalArgumentException::class) 42 fun versions_nullBoth_match() { 43 testVersionsMatch( 44 ruleVersion = null, 45 pomVersion = null 46 ) 47 } 48 49 @Test fun versions_same_match() { 50 testVersionsMatch( 51 ruleVersion = "27.0.0", 52 pomVersion = "27.0.0" 53 ) 54 } 55 56 @Test fun versions_same_strict_match() { 57 testVersionsMatch( 58 ruleVersion = "27.0.0", 59 pomVersion = "[27.0.0]" 60 ) 61 } 62 63 @Test fun versions_different_noMatch() { 64 testVersionsDoNotMatch( 65 ruleVersion = "27.0.0", 66 pomVersion = "26.0.0" 67 ) 68 } 69 70 @Test fun versions_release_match() { 71 testVersionsMatch( 72 ruleVersion = "27.0.0", 73 pomVersion = "release" 74 ) 75 } 76 77 @Test fun versions_latest_match() { 78 testVersionsMatch( 79 ruleVersion = "27.0.0", 80 pomVersion = "latest" 81 ) 82 } 83 84 @Test fun versions_range_rightOpen_match() { 85 testVersionsMatch( 86 ruleVersion = "27.0.0", 87 pomVersion = "(26.0.0,]" 88 ) 89 } 90 91 @Test fun versions_range_rightOpen2_match() { 92 testVersionsMatch( 93 ruleVersion = "27.0.0", 94 pomVersion = "(26.0.0,)" 95 ) 96 } 97 98 @Test fun versions_range_inclusive_match() { 99 testVersionsMatch( 100 ruleVersion = "27.0.0", 101 pomVersion = "[21.0.0,27.0.0]" 102 ) 103 } 104 105 @Test fun versions_range_inclusive_noMatch() { 106 testVersionsDoNotMatch( 107 ruleVersion = "27.0.0", 108 pomVersion = "[21.0.0,26.0.0]" 109 ) 110 } 111 112 @Test fun versions_range_exclusive_noMatch() { 113 testVersionsDoNotMatch( 114 ruleVersion = "27.0.0", 115 pomVersion = "[21.0.0,27.0.0)" 116 ) 117 } 118 119 @Test fun versions_exclusionRange_match() { 120 testVersionsMatch( 121 ruleVersion = "27.0.0", 122 pomVersion = "(,26.0.0),(26.0.0,)" 123 ) 124 } 125 126 private fun testVersionsMatch(ruleVersion: String?, pomVersion: String?) { 127 val from = PomDependency(groupId = "g", artifactId = "a", version = ruleVersion) 128 val pom = PomDependency(groupId = "g", artifactId = "a", version = pomVersion) 129 130 val rule = PomRewriteRule(from, from) 131 132 Truth.assertThat(rule.validateVersion(pom)).isTrue() 133 } 134 135 private fun testVersionsDoNotMatch(ruleVersion: String?, pomVersion: String?) { 136 val from = PomDependency(groupId = "g", artifactId = "a", version = ruleVersion) 137 val pom = PomDependency(groupId = "g", artifactId = "a", version = pomVersion) 138 139 val rule = PomRewriteRule(from, from) 140 141 Truth.assertThat(rule.validateVersion(pom)).isFalse() 142 } 143}