1
1
// Copyright (c) Charlie Poole, Rob Prouse and Contributors. MIT License - see LICENSE.txt
2
2
3
3
using System;
4
+
using System.Collections.Generic;
4
5
using System.ComponentModel;
6
+
using System.Linq;
5
7
using System.Reflection;
6
8
using NUnit.Engine.Extensibility;
7
9
using NUnit.Framework;
@@ -14,7 +16,8 @@ public class ExtensionAssemblyTrackerTests
14
16
private static readonly string THIS_ASSEMBLY_PATH = THIS_ASSEMBLY.Location;
15
17
private static readonly string THIS_ASSEMBLY_NAME = THIS_ASSEMBLY.GetName().Name;
16
18
private static readonly Version THIS_ASSEMBLY_VERSION = THIS_ASSEMBLY.GetName().Version;
17
-
private static readonly ExtensionAssembly TEST_EXTENSION_ASSEMBLY =
19
+
20
+
private static readonly ExtensionAssembly TEST_EXTENSION_ASSEMBLY =
18
21
new ExtensionAssembly(THIS_ASSEMBLY_PATH, false, THIS_ASSEMBLY_NAME, THIS_ASSEMBLY_VERSION);
19
22
20
23
private ExtensionAssemblyTracker _tracker;
@@ -28,52 +31,74 @@ public void CreateTracker()
28
31
[Test]
29
32
public void AddToList()
30
33
{
31
-
_tracker.Add(TEST_EXTENSION_ASSEMBLY);
34
+
_tracker.AddOrUpdate(TEST_EXTENSION_ASSEMBLY);
32
35
33
36
Assert.That(_tracker.Count, Is.EqualTo(1));
34
-
Assert.That(_tracker[0].FilePath, Is.EqualTo(THIS_ASSEMBLY_PATH));
35
-
Assert.That(_tracker[0].AssemblyName, Is.EqualTo(THIS_ASSEMBLY_NAME));
36
-
Assert.That(_tracker[0].AssemblyVersion, Is.EqualTo(THIS_ASSEMBLY_VERSION));
37
+
var assembly = _tracker.Single();
38
+
39
+
Assert.That(assembly.FilePath, Is.EqualTo(THIS_ASSEMBLY_PATH));
40
+
Assert.That(assembly.AssemblyName, Is.EqualTo(THIS_ASSEMBLY_NAME));
41
+
Assert.That(assembly.AssemblyVersion, Is.EqualTo(THIS_ASSEMBLY_VERSION));
37
42
}
38
43
39
44
[Test]
40
-
public void AddUpdatesNameIndex()
45
+
public void AddUpdatesPathIndex()
41
46
{
42
-
_tracker.Add(TEST_EXTENSION_ASSEMBLY);
47
+
_tracker.AddOrUpdate(TEST_EXTENSION_ASSEMBLY);
43
48
44
-
Assert.That(_tracker.ByName.ContainsKey(THIS_ASSEMBLY_NAME));
45
-
Assert.That(_tracker.ByName[THIS_ASSEMBLY_NAME].AssemblyName, Is.EqualTo(THIS_ASSEMBLY_NAME));
46
-
Assert.That(_tracker.ByName[THIS_ASSEMBLY_NAME].FilePath, Is.EqualTo(THIS_ASSEMBLY_PATH));
47
-
Assert.That(_tracker.ByName[THIS_ASSEMBLY_NAME].AssemblyVersion, Is.EqualTo(THIS_ASSEMBLY_VERSION));
49
+
Assert.That(_tracker.ContainsPath(THIS_ASSEMBLY_PATH));
48
50
}
49
-
[Test]
50
-
public void AddUpdatesPathIndex()
51
-
{
52
-
_tracker.Add(TEST_EXTENSION_ASSEMBLY);
53
51
54
-
Assert.That(_tracker.ByPath.ContainsKey(THIS_ASSEMBLY_PATH));
55
-
Assert.That(_tracker.ByPath[THIS_ASSEMBLY_PATH].AssemblyName, Is.EqualTo(THIS_ASSEMBLY_NAME));
56
-
Assert.That(_tracker.ByPath[THIS_ASSEMBLY_PATH].FilePath, Is.EqualTo(THIS_ASSEMBLY_PATH));
57
-
Assert.That(_tracker.ByPath[THIS_ASSEMBLY_PATH].AssemblyVersion, Is.EqualTo(THIS_ASSEMBLY_VERSION));
52
+
private static IEnumerable<TestCaseData> TestCasesAddNewerAssemblyUpdatesExistingInformation()
53
+
{
54
+
yield return new TestCaseData(new Version(THIS_ASSEMBLY_VERSION.Major + 1, THIS_ASSEMBLY_VERSION.Minor, THIS_ASSEMBLY_VERSION.Build));
55
+
yield return new TestCaseData(new Version(THIS_ASSEMBLY_VERSION.Major, THIS_ASSEMBLY_VERSION.Minor + 1, THIS_ASSEMBLY_VERSION.Build));
56
+
yield return new TestCaseData(new Version(THIS_ASSEMBLY_VERSION.Major, THIS_ASSEMBLY_VERSION.Minor, THIS_ASSEMBLY_VERSION.Build + 1));
58
57
}
59
58
60
-
[Test]
61
-
public void AddDuplicatePathThrowsArgumentException()
59
+
[TestCaseSource(nameof(TestCasesAddNewerAssemblyUpdatesExistingInformation))]
60
+
public void AddNewerAssemblyUpdatesExistingInformation(Version newVersion)
62
61
{
63
-
_tracker.Add(TEST_EXTENSION_ASSEMBLY);
62
+
_tracker.AddOrUpdate(TEST_EXTENSION_ASSEMBLY);
63
+
64
+
string newAssemblyPath = "/path/to/new/assembly";
65
+
var newerAssembly = new ExtensionAssembly(newAssemblyPath, false, THIS_ASSEMBLY_NAME, newVersion);
66
+
67
+
_tracker.AddOrUpdate(newerAssembly);
64
68
65
-
Assert.That(() =>
66
-
_tracker.Add(TEST_EXTENSION_ASSEMBLY),
67
-
Throws.TypeOf<System.ArgumentException>());
69
+
Assert.That(_tracker.Count, Is.EqualTo(1));
70
+
Assert.That(_tracker.ContainsPath(newAssemblyPath));
71
+
72
+
var assembly = _tracker.Single();
73
+
Assert.That(assembly.FilePath, Is.EqualTo(newAssemblyPath));
74
+
Assert.That(assembly.AssemblyName, Is.EqualTo(THIS_ASSEMBLY_NAME));
75
+
Assert.That(assembly.AssemblyVersion, Is.EqualTo(newVersion));
68
76
}
69
77
70
-
[Test]
71
-
public void AddDuplicateAssemblyNameThrowsArgumentException()
78
+
private static IEnumerable<TestCaseData> AddNewerAssemblyUpdatesExistingInformationTestCases()
79
+
{
80
+
yield return new TestCaseData(new Version(THIS_ASSEMBLY_VERSION.Major - 1, THIS_ASSEMBLY_VERSION.Minor, THIS_ASSEMBLY_VERSION.Build));
81
+
yield return new TestCaseData(new Version(THIS_ASSEMBLY_VERSION.Major, THIS_ASSEMBLY_VERSION.Minor - 1, THIS_ASSEMBLY_VERSION.Build));
82
+
yield return new TestCaseData(new Version(THIS_ASSEMBLY_VERSION.Major, THIS_ASSEMBLY_VERSION.Minor, THIS_ASSEMBLY_VERSION.Build));
83
+
}
84
+
85
+
[TestCaseSource(nameof(AddNewerAssemblyUpdatesExistingInformationTestCases))]
86
+
public void AddOlderOrSameAssemblyDoesNotUpdateExistingInformation(Version newVersion)
72
87
{
73
-
_tracker.Add(TEST_EXTENSION_ASSEMBLY);
88
+
_tracker.AddOrUpdate(TEST_EXTENSION_ASSEMBLY);
89
+
90
+
string newAssemblyPath = "/path/to/new/assembly";
91
+
var newerAssembly = new ExtensionAssembly(newAssemblyPath, false, THIS_ASSEMBLY_NAME, newVersion);
92
+
93
+
_tracker.AddOrUpdate(newerAssembly);
94
+
95
+
Assert.That(_tracker.Count, Is.EqualTo(1));
96
+
Assert.That(_tracker.ContainsPath(newAssemblyPath));
74
97
75
-
Assert.That(() => _tracker.Add(new ExtensionAssembly("Some/Other/Path", false, THIS_ASSEMBLY_NAME, THIS_ASSEMBLY_VERSION)),
76
-
Throws.TypeOf<System.ArgumentException>());
98
+
var assembly = _tracker.Single();
99
+
Assert.That(assembly.FilePath, Is.EqualTo(THIS_ASSEMBLY_PATH));
100
+
Assert.That(assembly.AssemblyName, Is.EqualTo(THIS_ASSEMBLY_NAME));
101
+
Assert.That(assembly.AssemblyVersion, Is.EqualTo(THIS_ASSEMBLY_VERSION));
77
102
}
78
103
}
79
104
}
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4