001package org.eclipse.aether.artifact; 002 003/* 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, 015 * software distributed under the License is distributed on an 016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 017 * KIND, either express or implied. See the License for the 018 * specific language governing permissions and limitations 019 * under the License. 020 */ 021 022import static org.junit.Assert.*; 023 024import java.io.File; 025import java.util.Collections; 026import java.util.HashMap; 027import java.util.Map; 028 029import org.eclipse.aether.artifact.Artifact; 030import org.eclipse.aether.artifact.ArtifactProperties; 031import org.eclipse.aether.artifact.DefaultArtifact; 032import org.junit.Test; 033 034/** 035 */ 036public class DefaultArtifactTest 037{ 038 039 @Test 040 public void testDefaultArtifactString() 041 { 042 Artifact a; 043 044 a = new DefaultArtifact( "gid:aid:ver" ); 045 assertEquals( "gid", a.getGroupId() ); 046 assertEquals( "aid", a.getArtifactId() ); 047 assertEquals( "ver", a.getVersion() ); 048 assertEquals( "ver", a.getBaseVersion() ); 049 assertEquals( "jar", a.getExtension() ); 050 assertEquals( "", a.getClassifier() ); 051 052 a = new DefaultArtifact( "gid:aid:ext:ver" ); 053 assertEquals( "gid", a.getGroupId() ); 054 assertEquals( "aid", a.getArtifactId() ); 055 assertEquals( "ver", a.getVersion() ); 056 assertEquals( "ver", a.getBaseVersion() ); 057 assertEquals( "ext", a.getExtension() ); 058 assertEquals( "", a.getClassifier() ); 059 060 a = new DefaultArtifact( "org.gid:foo-bar:jar:1.1-20101116.150650-3" ); 061 assertEquals( "org.gid", a.getGroupId() ); 062 assertEquals( "foo-bar", a.getArtifactId() ); 063 assertEquals( "1.1-20101116.150650-3", a.getVersion() ); 064 assertEquals( "1.1-SNAPSHOT", a.getBaseVersion() ); 065 assertEquals( "jar", a.getExtension() ); 066 assertEquals( "", a.getClassifier() ); 067 068 a = new DefaultArtifact( "gid:aid:ext:cls:ver" ); 069 assertEquals( "gid", a.getGroupId() ); 070 assertEquals( "aid", a.getArtifactId() ); 071 assertEquals( "ver", a.getVersion() ); 072 assertEquals( "ver", a.getBaseVersion() ); 073 assertEquals( "ext", a.getExtension() ); 074 assertEquals( "cls", a.getClassifier() ); 075 076 a = new DefaultArtifact( "gid:aid::cls:ver" ); 077 assertEquals( "gid", a.getGroupId() ); 078 assertEquals( "aid", a.getArtifactId() ); 079 assertEquals( "ver", a.getVersion() ); 080 assertEquals( "ver", a.getBaseVersion() ); 081 assertEquals( "jar", a.getExtension() ); 082 assertEquals( "cls", a.getClassifier() ); 083 084 a = new DefaultArtifact( new DefaultArtifact( "gid:aid:ext:cls:ver" ).toString() ); 085 assertEquals( "gid", a.getGroupId() ); 086 assertEquals( "aid", a.getArtifactId() ); 087 assertEquals( "ver", a.getVersion() ); 088 assertEquals( "ver", a.getBaseVersion() ); 089 assertEquals( "ext", a.getExtension() ); 090 assertEquals( "cls", a.getClassifier() ); 091 } 092 093 @Test( expected = IllegalArgumentException.class ) 094 public void testDefaultArtifactContainsGroupAndArtifactOnly() 095 { 096 new DefaultArtifact( "gid:aid" ); 097 } 098 099 @Test( expected = IllegalArgumentException.class ) 100 public void testDefaultArtifactContainsGroupOnly() 101 { 102 new DefaultArtifact( "gid" ); 103 } 104 105 @Test 106 public void testImmutability() 107 { 108 Artifact a = new DefaultArtifact( "gid:aid:ext:cls:ver" ); 109 assertNotSame( a, a.setFile( new File( "file" ) ) ); 110 assertNotSame( a, a.setVersion( "otherVersion" ) ); 111 assertNotSame( a, a.setProperties( Collections.singletonMap( "key", "value" ) ) ); 112 } 113 114 @Test 115 public void testArtifactType() 116 { 117 DefaultArtifactType type = new DefaultArtifactType( "typeId", "typeExt", "typeCls", "typeLang", true, true ); 118 119 Artifact a = new DefaultArtifact( "gid", "aid", null, null, null, null, type ); 120 assertEquals( "typeExt", a.getExtension() ); 121 assertEquals( "typeCls", a.getClassifier() ); 122 assertEquals( "typeLang", a.getProperties().get( ArtifactProperties.LANGUAGE ) ); 123 assertEquals( "typeId", a.getProperties().get( ArtifactProperties.TYPE ) ); 124 assertEquals( "true", a.getProperties().get( ArtifactProperties.INCLUDES_DEPENDENCIES ) ); 125 assertEquals( "true", a.getProperties().get( ArtifactProperties.CONSTITUTES_BUILD_PATH ) ); 126 127 a = new DefaultArtifact( "gid", "aid", "cls", "ext", "ver", null, type ); 128 assertEquals( "ext", a.getExtension() ); 129 assertEquals( "cls", a.getClassifier() ); 130 assertEquals( "typeLang", a.getProperties().get( ArtifactProperties.LANGUAGE ) ); 131 assertEquals( "typeId", a.getProperties().get( ArtifactProperties.TYPE ) ); 132 assertEquals( "true", a.getProperties().get( ArtifactProperties.INCLUDES_DEPENDENCIES ) ); 133 assertEquals( "true", a.getProperties().get( ArtifactProperties.CONSTITUTES_BUILD_PATH ) ); 134 135 Map<String, String> props = new HashMap<>(); 136 props.put( "someNonStandardProperty", "someNonStandardProperty" ); 137 a = new DefaultArtifact( "gid", "aid", "cls", "ext", "ver", props, type ); 138 assertEquals( "ext", a.getExtension() ); 139 assertEquals( "cls", a.getClassifier() ); 140 assertEquals( "typeLang", a.getProperties().get( ArtifactProperties.LANGUAGE ) ); 141 assertEquals( "typeId", a.getProperties().get( ArtifactProperties.TYPE ) ); 142 assertEquals( "true", a.getProperties().get( ArtifactProperties.INCLUDES_DEPENDENCIES ) ); 143 assertEquals( "true", a.getProperties().get( ArtifactProperties.CONSTITUTES_BUILD_PATH ) ); 144 assertEquals( "someNonStandardProperty", a.getProperties().get( "someNonStandardProperty" ) ); 145 146 props = new HashMap<>(); 147 props.put( "someNonStandardProperty", "someNonStandardProperty" ); 148 props.put( ArtifactProperties.CONSTITUTES_BUILD_PATH, "rubbish" ); 149 props.put( ArtifactProperties.INCLUDES_DEPENDENCIES, "rubbish" ); 150 a = new DefaultArtifact( "gid", "aid", "cls", "ext", "ver", props, type ); 151 assertEquals( "ext", a.getExtension() ); 152 assertEquals( "cls", a.getClassifier() ); 153 assertEquals( "typeLang", a.getProperties().get( ArtifactProperties.LANGUAGE ) ); 154 assertEquals( "typeId", a.getProperties().get( ArtifactProperties.TYPE ) ); 155 assertEquals( "rubbish", a.getProperties().get( ArtifactProperties.INCLUDES_DEPENDENCIES ) ); 156 assertEquals( "rubbish", a.getProperties().get( ArtifactProperties.CONSTITUTES_BUILD_PATH ) ); 157 assertEquals( "someNonStandardProperty", a.getProperties().get( "someNonStandardProperty" ) ); 158 } 159 160 @Test 161 public void testPropertiesCopied() 162 { 163 Map<String, String> props = new HashMap<>(); 164 props.put( "key", "value1" ); 165 166 Artifact a = new DefaultArtifact( "gid:aid:1", props ); 167 assertEquals( "value1", a.getProperty( "key", null ) ); 168 props.clear(); 169 assertEquals( "value1", a.getProperty( "key", null ) ); 170 171 props.put( "key", "value2" ); 172 a = a.setProperties( props ); 173 assertEquals( "value2", a.getProperty( "key", null ) ); 174 props.clear(); 175 assertEquals( "value2", a.getProperty( "key", null ) ); 176 } 177 178 @Test 179 public void testIsSnapshot() 180 { 181 Artifact a = new DefaultArtifact( "gid:aid:ext:cls:1.0" ); 182 assertFalse( a.getVersion(), a.isSnapshot() ); 183 184 a = new DefaultArtifact( "gid:aid:ext:cls:1.0-SNAPSHOT" ); 185 assertTrue( a.getVersion(), a.isSnapshot() ); 186 187 a = new DefaultArtifact( "gid:aid:ext:cls:1.0-20101116.150650-3" ); 188 assertTrue( a.getVersion(), a.isSnapshot() ); 189 190 a = new DefaultArtifact( "gid:aid:ext:cls:1.0-20101116x150650-3" ); 191 assertFalse( a.getVersion(), a.isSnapshot() ); 192 } 193 194}