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;
9
using ICSharpCode.Core;
10
using ICSharpCode.PackageManagement;
11
using ICSharpCode.PackageManagement.Design;
13
using NUnit.Framework;
14
using PackageManagement.Tests.Helpers;
16
namespace PackageManagement.Tests
19
public class PackageManagementOptionsTests
21
Properties properties;
22
PackageManagementOptions options;
23
FakeSettings fakeSettings;
29
CreateOptions(properties, fakeSettings);
32
void CreateProperties()
34
properties = new Properties();
39
fakeSettings = new FakeSettings();
42
void CreateOptions(Properties properties)
45
CreateOptions(properties, fakeSettings);
48
void CreateOptions(FakeSettings fakeSettings)
51
options = new PackageManagementOptions(properties, fakeSettings);
54
void CreateOptions(Properties properties, FakeSettings fakeSettings)
56
options = new PackageManagementOptions(properties, fakeSettings);
61
StringBuilder xml = new StringBuilder();
62
StringWriter stringWriter = new StringWriter(xml);
63
using (XmlTextWriter writer = new XmlTextWriter(stringWriter)) {
64
properties.WriteProperties(writer);
68
RecentPackageInfo AddRecentPackageToOptions(string id, string version)
70
var recentPackage = new RecentPackageInfo(id, new Version(version));
71
options.RecentPackages.Add(recentPackage);
76
public void PackageSources_OnePackageSourceInSettings_ContainsSinglePackageSourceFromSettings()
79
var packageSource = new PackageSource("http://codeplex.com", "Test");
80
fakeSettings.AddFakePackageSource(packageSource);
81
CreateOptions(fakeSettings);
83
var actualSources = options.PackageSources;
85
List<PackageSource> expectedSources = new List<PackageSource>();
86
expectedSources.Add(packageSource);
88
Assert.AreEqual(expectedSources, actualSources);
92
public void PackageSources_NoPackageSourceInSavedSettings_ContainsDefaultPackageSource()
95
CreateOptions(fakeSettings);
97
List<PackageSource> expectedSources = new List<PackageSource>();
98
expectedSources.Add(RegisteredPackageSources.DefaultPackageSource);
100
var actualPackageSources = options.PackageSources;
102
CollectionAssert.AreEqual(expectedSources, actualPackageSources);
106
public void PackageSources_NoPackageSourceInSavedSettings_DefaultPackageSourceAddedToSettings()
109
CreateOptions(fakeSettings);
111
var packageSources = options.PackageSources;
113
var defaultSource = RegisteredPackageSources.DefaultPackageSource;
115
var expectedSavedPackageSourceSettings = new List<KeyValuePair<string, string>>();
116
string name = defaultSource.Name;
117
string sourceUrl = defaultSource.Source;
118
expectedSavedPackageSourceSettings.Add(new KeyValuePair<string, string>(name, sourceUrl));
120
var actualSavedPackageSourceSettings = fakeSettings.GetValuesPassedToSetValuesForPackageSourcesSection();
122
Assert.AreEqual(expectedSavedPackageSourceSettings, actualSavedPackageSourceSettings);
126
public void PackageSources_OnePackageSourceAdded_PackageSourceSavedInSettings()
129
CreateOptions(fakeSettings);
130
var registeredPackageSources = options.PackageSources;
132
var packageSource = new PackageSource("http://codeplex.com", "Test");
133
registeredPackageSources.Clear();
134
registeredPackageSources.Add(packageSource);
136
var expectedSavedPackageSourceSettings = new List<KeyValuePair<string, string>>();
137
expectedSavedPackageSourceSettings.Add(new KeyValuePair<string, string>("Test", "http://codeplex.com"));
139
var actualSavedPackageSourceSettings = fakeSettings.GetValuesPassedToSetValuesForPackageSourcesSection();
141
Assert.AreEqual(expectedSavedPackageSourceSettings, actualSavedPackageSourceSettings);
145
public void PackageSources_OnePackageSourceAdded_PackageSourcesSectionDeletedFromSettings()
148
CreateOptions(fakeSettings);
149
var registeredPackageSources = options.PackageSources;
151
var packageSource = new PackageSource("http://codeplex.com", "Test");
152
registeredPackageSources.Clear();
153
registeredPackageSources.Add(packageSource);
155
bool sectionDeleted = fakeSettings.IsPackageSourcesSectionDeleted;
157
Assert.IsTrue(sectionDeleted);
161
public void PackageSources_SettingsFilesDoesNotExistSoSettingsReturnsNullForPackageSourcesSection_DoesNotThrowException()
164
fakeSettings.MakePackageSourceSectionsNull();
165
CreateOptions(fakeSettings);
167
RegisteredPackageSources packageSources = null;
168
Assert.DoesNotThrow(() => packageSources = options.PackageSources);
172
public void ActivePackageSource_NoInitialPropertiesSet_ReturnsNull()
175
PackageSource actualSource = options.ActivePackageSource;
176
Assert.IsNull(options.ActivePackageSource);
180
public void ActivePackageSource_SourceChanged_ActivePackageSourceUpdatedInSettings()
183
var packageSource = new PackageSource("http://sharpdevelop.com", "Test");
185
options.ActivePackageSource = packageSource;
187
var expectedKeyValuePair = new KeyValuePair<string, string>("Test", "http://sharpdevelop.com");
188
var actualKeyValuePair = fakeSettings.GetValuePassedToSetValueForActivePackageSourceSection();
190
Assert.AreEqual(expectedKeyValuePair, actualKeyValuePair);
194
public void ActivePackageSource_ActivePackageSourceNonNullInSettings_ReturnsActivatePackageSourceInSavedSettings()
197
var expectedSource = new PackageSource("http://source-url", "Test");
198
fakeSettings.SetFakeActivePackageSource(expectedSource);
199
fakeSettings.AddFakePackageSource(expectedSource);
200
CreateOptions(fakeSettings);
202
PackageSource actualSource = options.ActivePackageSource;
204
Assert.AreEqual(expectedSource, actualSource);
208
public void ActivePackageSource_SetToNullAfterHavingNonNullValue_ReturnsNull()
211
var source = new PackageSource("http://source-url", "Test");
212
options.ActivePackageSource = source;
214
options.ActivePackageSource = null;
216
PackageSource actualSource = options.ActivePackageSource;
217
Assert.IsNull(actualSource);
221
public void ActivePackageSource_ActivePackageSourceRemovedFromPackageSources_ActivePackageSourceSetToNull()
224
var source = new PackageSource("http://source-url", "Test");
225
options.PackageSources.Add(source);
227
var differentSource = new PackageSource("http://different-url", "Test2");
228
options.ActivePackageSource = differentSource;
230
var activeSource = options.ActivePackageSource;
232
Assert.IsNull(activeSource);
236
public void ActivePackageSource_ActivePackageSourceChanged_ActivePackageSourceSectionRemovedFromSettings()
240
options.ActivePackageSource = new PackageSource("http://sharpdevelop.com", "Test");
242
bool sectionDeleted = fakeSettings.IsActivePackageSourceSectionDeleted;
244
Assert.IsTrue(sectionDeleted);
248
public void ActivePackageSource_OneActivePackageSourceInSettingsAndActivePackageSourceSetToNull_ActivePackageSourceSectionRemoved()
251
var expectedSource = new PackageSource("http://source-url", "Test");
252
fakeSettings.SetFakeActivePackageSource(expectedSource);
253
fakeSettings.AddFakePackageSource(expectedSource);
254
CreateOptions(fakeSettings);
256
options.ActivePackageSource = null;
258
bool sectionRemoved = fakeSettings.IsActivePackageSourceSectionDeleted;
260
Assert.IsTrue(sectionRemoved);
264
public void ActivePackageSource_SettingsFilesDoesNotExistSoSettingsReturnsNullForActivePackageSourceSection_DoesNotThrowException()
267
fakeSettings.MakeActivePackageSourceSectionNull();
268
CreateOptions(fakeSettings);
270
PackageSource activePackageSource = null;
271
Assert.DoesNotThrow(() => activePackageSource = options.ActivePackageSource);
275
public void RecentPackages_OneRecentPackageAddedAndOptionsReloadedFromSavedProperties_ContainsOneRecentPackageThatWasSavedPreviously()
278
var package = new FakePackage("Test");
279
var recentPackage = new RecentPackageInfo(package);
280
options.RecentPackages.Add(recentPackage);
281
CreateOptions(properties);
283
var recentPackages = options.RecentPackages;
285
var expectedRecentPackages = new RecentPackageInfo[] {
286
new RecentPackageInfo(package)
289
RecentPackageInfoCollectionAssert.AreEqual(expectedRecentPackages, recentPackages);
293
public void RecentPackages_SaveRecentPackages_DoesNotThrowInvalidOperationException()
296
var recentPackage = AddRecentPackageToOptions("id", "1.0");
298
Assert.DoesNotThrow(() => SaveOptions());
302
public void ActivePackageSource_AggregatePackageSourceIsActivePackageSourceInSettings_ReturnsAggregatePackageSource()
305
var expectedPackageSource = RegisteredPackageSourceSettings.AggregatePackageSource;
306
fakeSettings.SetFakeActivePackageSource(expectedPackageSource);
307
CreateOptions(fakeSettings);
309
var activePackageSource = options.ActivePackageSource;
311
Assert.AreEqual(expectedPackageSource, activePackageSource);