001package org.eclipse.aether.internal.impl.collect; 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 org.eclipse.aether.DefaultRepositorySystemSession; 023import org.eclipse.aether.artifact.DefaultArtifact; 024import org.eclipse.aether.graph.Dependency; 025import org.eclipse.aether.internal.test.util.TestVersion; 026import org.eclipse.aether.resolution.VersionRangeRequest; 027import org.eclipse.aether.resolution.VersionRangeResult; 028import org.eclipse.aether.version.Version; 029import org.junit.Test; 030 031import java.util.Arrays; 032import java.util.Collections; 033import java.util.Iterator; 034import java.util.NoSuchElementException; 035 036import static org.junit.Assert.assertEquals; 037import static org.junit.Assert.assertTrue; 038 039public class DefaultVersionFilterContextTest 040{ 041 private static final Dependency FOO_DEPENDENCY = new Dependency( new DefaultArtifact( "group-id:foo:1.0" ), "test" ); 042 private static final Dependency BAR_DEPENDENCY = new Dependency( new DefaultArtifact( "group-id:bar:1.0" ), "test" ); 043 044 @Test 045 public void iteratorOneItem() 046 { 047 DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() ); 048 VersionRangeResult result = new VersionRangeResult( new VersionRangeRequest() ); 049 result.addVersion( new TestVersion( "1.0" ) ); 050 context.set( FOO_DEPENDENCY, result ); 051 052 Iterator<Version> iterator = context.iterator(); 053 assertTrue( iterator.hasNext() ); 054 assertEquals( new TestVersion( "1.0" ), iterator.next() ); 055 } 056 057 @Test 058 public void getCountOneItem() 059 { 060 DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() ); 061 VersionRangeResult result = new VersionRangeResult( new VersionRangeRequest() ); 062 result.addVersion( new TestVersion( "1.0" ) ); 063 context.set( FOO_DEPENDENCY, result ); 064 065 assertEquals(1, context.getCount()); 066 } 067 068 @Test 069 public void getOneItem() 070 { 071 DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() ); 072 VersionRangeResult result = new VersionRangeResult( new VersionRangeRequest() ); 073 result.addVersion( new TestVersion( "1.0" ) ); 074 context.set( FOO_DEPENDENCY, result ); 075 076 assertEquals( Collections.singletonList( new TestVersion( "1.0") ), context.get() ); 077 } 078 079 @Test 080 public void iteratorDelete() 081 { 082 DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() ); 083 VersionRangeResult result = new VersionRangeResult( new VersionRangeRequest() ); 084 result.addVersion( new TestVersion( "1.0" ) ); 085 context.set( FOO_DEPENDENCY, result ); 086 087 Iterator<Version> iterator = context.iterator(); 088 iterator.next(); 089 iterator.remove(); 090 091 assertEquals( 0, context.getCount() ); 092 } 093 094 @Test(expected = NoSuchElementException.class) 095 public void nextBeyondEnd() 096 { 097 DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() ); 098 VersionRangeResult result = new VersionRangeResult( new VersionRangeRequest() ); 099 result.addVersion( new TestVersion( "1.0" ) ); 100 context.set( FOO_DEPENDENCY, result ); 101 102 Iterator<Version> iterator = context.iterator(); 103 iterator.next(); 104 iterator.next(); 105 } 106 107 @Test 108 public void removeOneOfOne() 109 { 110 DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() ); 111 VersionRangeResult result = new VersionRangeResult( new VersionRangeRequest() ); 112 result.addVersion( new TestVersion( "1.0" ) ); 113 context.set( FOO_DEPENDENCY, result ); 114 115 Iterator<Version> iterator = context.iterator(); 116 iterator.next(); 117 iterator.remove(); 118 119 assertEquals( Collections.emptyList(), context.get() ); 120 } 121 122 @Test 123 public void removeOneOfTwo() 124 { 125 DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() ); 126 VersionRangeResult result = new VersionRangeResult( new VersionRangeRequest() ); 127 result.addVersion( new TestVersion( "1.0" ) ); 128 result.addVersion( new TestVersion( "2.0" ) ); 129 context.set( FOO_DEPENDENCY, result ); 130 131 Iterator<Version> iterator = context.iterator(); 132 iterator.next(); 133 iterator.remove(); 134 135 assertEquals( Collections.singletonList( new TestVersion( "2.0") ), context.get() ); 136 } 137 138 @Test 139 public void removeOneOfThree() 140 { 141 DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() ); 142 VersionRangeResult result = new VersionRangeResult( new VersionRangeRequest() ); 143 result.addVersion( new TestVersion( "1.0" ) ); 144 result.addVersion( new TestVersion( "2.0" ) ); 145 result.addVersion( new TestVersion( "3.0" ) ); 146 context.set( FOO_DEPENDENCY, result ); 147 148 Iterator<Version> iterator = context.iterator(); 149 iterator.next(); 150 iterator.remove(); 151 152 assertEquals( Arrays.asList( new TestVersion( "2.0" ), new TestVersion( "3.0" ) ), context.get() ); 153 } 154 155 @Test 156 public void setTwice() 157 { 158 DefaultVersionFilterContext context = new DefaultVersionFilterContext( new DefaultRepositorySystemSession() ); 159 VersionRangeResult fooResult = new VersionRangeResult( new VersionRangeRequest() ); 160 fooResult.addVersion( new TestVersion( "1.0" ) ); 161 context.set( FOO_DEPENDENCY, fooResult ); 162 163 VersionRangeResult barResult = new VersionRangeResult( new VersionRangeRequest() ); 164 barResult.addVersion( new TestVersion( "1.0" ) ); 165 barResult.addVersion( new TestVersion( "2.0" ) ); 166 context.set( BAR_DEPENDENCY, barResult ); 167 168 assertEquals( Arrays.asList( new TestVersion( "1.0" ), new TestVersion( "2.0" ) ), context.get() ); 169 } 170}