-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRevitAddinManifestTests.cs
More file actions
93 lines (79 loc) · 4.31 KB
/
RevitAddinManifestTests.cs
File metadata and controls
93 lines (79 loc) · 4.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
using System;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using dosymep.Revit.FileInfo.RevitAddins;
using NUnit.Framework;
namespace dosymep.Revit.FileInfo.Tests {
public class RevitAddinManifestTests {
public static readonly string[] AssemblyPaths = new[] {
@"C:\Program Files\Autodesk\Revit 2020",
@"C:\Program Files\Autodesk\Revit 2020\SDA\bin",
$@"C:\Users\{Environment.UserName}\AppData\Roaming\pyRevit\Extensions\BIM4Everyone.lib",
$@"C:\Users\{Environment.UserName}\AppData\Roaming\pyRevit\Extensions\BIM4Everyone.lib\devexpress_libs\libs",
$@"C:\Users\{Environment.UserName}\AppData\Roaming\pyRevit\Extensions\BIM4Everyone.lib\dosymep_libs\libs",
$@"C:\Users\{Environment.UserName}\AppData\Roaming\pyRevit\Extensions\BIM4Everyone.lib\dosymep_libs\libs\2020",
$@"C:\Users\{Environment.UserName}\AppData\Roaming\pyRevit-Master\bin",
$@"C:\Users\{Environment.UserName}\AppData\Roaming\pyRevit-Master\bin\engines\IPY277"
};
[SetUp]
public void Setup() {
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += CurrentDomain_ReflectionOnlyAssemblyResolve;
}
[TearDown]
public void Teardown() {
AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve;
AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve -= CurrentDomain_ReflectionOnlyAssemblyResolve;
}
private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) {
string assemblyPath = GetAssemblyPath(args);
return File.Exists(assemblyPath) ? Assembly.LoadFrom(assemblyPath) : null;
}
private Assembly CurrentDomain_ReflectionOnlyAssemblyResolve(object sender, ResolveEventArgs args) {
string assemblyPath = GetAssemblyPath(args);
return File.Exists(assemblyPath) ? Assembly.ReflectionOnlyLoadFrom(assemblyPath) : Assembly.ReflectionOnlyLoad(args.Name);
}
private static string GetAssemblyPath(ResolveEventArgs args) {
var assemblyName = new AssemblyName(args.Name);
return AssemblyPaths
.Select(item => Path.Combine(item, assemblyName.Name + ".dll"))
.FirstOrDefault(item => File.Exists(item));
}
[Test]
[TestCase(@"TestFiles\ModPlus.addin")]
[TestCase(@"TestFiles\pyRevit.addin")]
[TestCase(@"TestFiles\RevitLookup.addin")]
[TestCase(@"TestFiles\Autodesk.AddInManager.addin")]
public void GetRevitAddinManifestTest(string fullFilePath) {
RevitAddinManifest manifest = RevitAddinManifest.GetAddinManifest(fullFilePath);
Assert.That(manifest, Is.Not.Null);
}
[Test]
[TestCase(@"TestFiles\Assemblies\RevitLookup\RevitLookup.dll")]
[TestCase(@"TestFiles\Assemblies\RevitPlugins\RevitPlugins.dll")]
[TestCase(@"TestFiles\Assemblies\RevitPlugins\RevitPlugins_2021.dll")]
[TestCase(@"TestFiles\Assemblies\RevitPlugins\RevitPlugins_2022.dll")]
[TestCase(@"TestFiles\Assemblies\RevitPlugins\RevitPlugins_2023.dll")]
[TestCase(@"TestFiles\Assemblies\AddInManager\Autodesk.AddInManager.Command.dll")]
[TestCase(@"TestFiles\Assemblies\pyRevit-Master\bin\engines\IPY277\pyRevitLoader.dll")]
public void CreateRevitAddinManifestTests(string fullFilePath) {
RevitAddinManifest manifest = RevitAddinManifest.CreateAddinManifest(fullFilePath);
manifest.Save();
File.Delete(manifest.FullName);
}
[Test]
[TestCase(@"TestFiles\Assemblies\RevitLookup")]
[TestCase(@"TestFiles\Assemblies\AddInManager")]
[TestCase(@"TestFiles\Assemblies\RevitPlugins")]
[TestCase(@"TestFiles\Assemblies\pyRevit-Master")]
public void CreateRevitAddinManifestsTests(string rootDirectory) {
var manifests = RevitAddinManifest.CreateAddinManifests(rootDirectory);
foreach(RevitAddinManifest manifest in manifests) {
manifest.Save();
File.Delete(manifest.FullName);
}
}
}
}