1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
5
using System.Collections.Generic;
7
using ICSharpCode.Core;
8
using ICSharpCode.PackageManagement;
9
using ICSharpCode.PackageManagement.Design;
11
using NUnit.Framework;
12
using PackageManagement.Tests.Helpers;
14
namespace PackageManagement.Tests
17
public class RecentPackageRepositoryTests
19
RecentPackageRepository repository;
20
FakePackageRepository aggregateRepository;
21
PackageManagementEvents packageManagementEvents;
22
List<RecentPackageInfo> recentPackages;
24
void CreateRepository()
26
CreateRecentPackages();
27
CreateRepository(recentPackages);
30
void CreateRecentPackages()
32
recentPackages = new List<RecentPackageInfo>();
33
aggregateRepository = new FakePackageRepository();
36
void CreateRepository(IList<RecentPackageInfo> recentPackages)
38
packageManagementEvents = new PackageManagementEvents();
39
repository = new RecentPackageRepository(recentPackages, aggregateRepository, packageManagementEvents);
42
FakePackage AddOnePackageToRepository(string id)
44
var package = new FakePackage(id);
45
repository.AddPackage(package);
49
IEnumerable<IPackage> AddTwoDifferentPackagesToRepository()
51
yield return AddOnePackageToRepository("Test.Package.1");
52
yield return AddOnePackageToRepository("Test.Package.2");
55
IEnumerable<IPackage> AddFourDifferentPackagesToRepository()
57
yield return AddOnePackageToRepository("Test.Package.1");
58
yield return AddOnePackageToRepository("Test.Package.2");
59
yield return AddOnePackageToRepository("Test.Package.3");
60
yield return AddOnePackageToRepository("Test.Package.4");
63
FakePackage CreateRepositoryWithOneRecentPackageSavedInOptions()
65
CreateRecentPackages();
66
var package = new FakePackage("Test");
67
aggregateRepository.FakePackages.Add(package);
68
recentPackages.Add(new RecentPackageInfo(package));
69
CreateRepository(recentPackages);
74
public void Source_NewRecentRepositoryCreated_IsRecentPackages()
77
Assert.AreEqual("RecentPackages", repository.Source);
81
public void GetPackages_RepositoryIsEmptyAndOnePackageAdded_ReturnsPackageAdded()
84
var package = AddOnePackageToRepository("Test.Package");
86
var packages = repository.GetPackages();
88
var expectedPackages = new FakePackage[] {
92
PackageCollectionAssert.AreEqual(expectedPackages, packages);
96
public void GetPackages_RepositoryIsEmptyAndTwoDifferentPackagesAdded_ReturnsPackagesInReverseOrderWithLastAddedFirst()
99
var packagesAdded = AddTwoDifferentPackagesToRepository();
101
var packages = repository.GetPackages();
103
var expectedPackages = packagesAdded.Reverse();
105
PackageCollectionAssert.AreEqual(expectedPackages, packages);
109
public void GetPackages_RepositoryCanHoldThreePackagesAndFourPackagesAdded_ReturnsLastThreePackagesAddedInReverseOrder()
112
repository.MaximumPackagesCount = 3;
113
var packagesAdded = AddFourDifferentPackagesToRepository();
115
var packages = repository.GetPackages();
117
var expectedPackages = packagesAdded.Reverse().Take(3);
119
PackageCollectionAssert.AreEqual(expectedPackages, packages);
123
public void GetPackages_RepositoryIsEmptyAndSamePackageIsAddedTwice_OnePackageReturned()
126
AddOnePackageToRepository("Test");
127
var package = AddOnePackageToRepository("Test");
129
var packages = repository.GetPackages();
131
var expectedPackages = new FakePackage[] {
135
PackageCollectionAssert.AreEqual(expectedPackages, packages);
139
public void AddPackage_RepositoryIsEmptyAndOnePackageAdded_RecentPackageAddedToOptions()
142
var package = AddOnePackageToRepository("Test");
144
var expectedPackages = new RecentPackageInfo[] {
145
new RecentPackageInfo(package)
148
RecentPackageInfoCollectionAssert.AreEqual(expectedPackages, recentPackages);
152
public void AddPackage_RepositoryIsEmptyAndTwoPackagesAddedFromDifferentSources_BothRecentPackagesAddedToOptions()
155
var package1 = AddOnePackageToRepository("Test1");
156
var package2 = AddOnePackageToRepository("Test2");
158
var expectedPackages = new RecentPackageInfo[] {
159
new RecentPackageInfo(package2),
160
new RecentPackageInfo(package1)
163
RecentPackageInfoCollectionAssert.AreEqual(expectedPackages, recentPackages);
167
public void GetPackages_SavedOptionsHasOneRecentPackage_ContainsPackageTakenFromAggregateRepositoryMatchingSavedRecentPackageInfo()
169
var package = CreateRepositoryWithOneRecentPackageSavedInOptions();
171
var recentPackages = repository.GetPackages();
173
var expectedPackages = new FakePackage[] {
177
PackageCollectionAssert.AreEqual(expectedPackages, recentPackages);
181
public void GetPackages_SavedOptionsHasOneRecentPackageAndGetPackagesCalledTwice_OnePackageReturned()
183
var package = CreateRepositoryWithOneRecentPackageSavedInOptions();
185
repository.GetPackages();
186
var recentPackages = repository.GetPackages();
188
var expectedPackages = new FakePackage[] {
192
PackageCollectionAssert.AreEqual(expectedPackages, recentPackages);
196
public void GetPackages_OneRecentPackageAndAggregrateRepositoryHasTwoPackagesWithSameIdButDifferentVersions_OnePackageReturnedWithMatchingVersion()
198
var package1 = CreateRepositoryWithOneRecentPackageSavedInOptions();
199
var package2 = new FakePackage(package1.Id);
200
package2.Version = new Version(2, 0);
201
aggregateRepository.FakePackages.Add(package2);
203
var recentPackages = repository.GetPackages();
205
var expectedPackages = new FakePackage[] {
209
PackageCollectionAssert.AreEqual(expectedPackages, recentPackages);
213
public void ParentPackageInstalled_EventFires_PackageAddedToRecentPackages()
217
var package = new FakePackage("Test");
218
packageManagementEvents.OnParentPackageInstalled(package);
220
var recentPackages = repository.GetPackages();
222
var expectedPackages = new FakePackage[] {
226
PackageCollectionAssert.AreEqual(expectedPackages, recentPackages);
229
public void Clear_OneRecentPackage_PackagesRemoved()
232
AddOnePackageToRepository("Test1");
236
int count = repository.GetPackages().Count();
238
Assert.AreEqual(0, count);
242
public void Clear_OneRecentPackageInOptions_RecentPackagesAreRemovedFromOptions()
244
CreateRepositoryWithOneRecentPackageSavedInOptions();
248
int count = recentPackages.Count;
250
Assert.AreEqual(0, count);
254
public void HasRecentPackages_NoSavedRecentPackages_ReturnsFalse()
258
bool hasRecentPackages = repository.HasRecentPackages;
260
Assert.IsFalse(hasRecentPackages);
264
public void HasRecentPackages_OneSavedRecentPackages_ReturnsTrue()
266
CreateRepositoryWithOneRecentPackageSavedInOptions();
268
bool hasRecentPackages = repository.HasRecentPackages;
270
Assert.IsTrue(hasRecentPackages);