1 
2 using System;
3 using System.IO;
4 using NUnit.Framework;
5 using Mono.Addins;
6 using SimpleApp;
7 
8 namespace UnitTests
9 {
10 	public class TestBase
11 	{
12 		static bool firstRun = true;
13 
14 		public static string TempDir {
15 			get {
16 				string dir = new Uri (typeof(TestBase).Assembly.CodeBase).LocalPath;
17 				return Path.Combine (Path.GetDirectoryName (dir), "temp");
18 			}
19 		}
20 
21 		[TestFixtureSetUp]
Setup()22 		public virtual void Setup ()
23 		{
24 			AddinManager.AddinLoadError += OnLoadError;
25 			AddinManager.AddinLoaded += OnLoad;
26 			AddinManager.AddinUnloaded += OnUnload;
27 
28 			if (firstRun) {
29 				if (Directory.Exists (TempDir))
30 					Directory.Delete (TempDir, true);
31 				Directory.CreateDirectory (TempDir);
32 			}
33 
34 			AddinManager.Initialize (TempDir);
35 
36 			if (firstRun)
37 				AddinManager.Registry.Update (new ConsoleProgressStatus (true));
38 			else
39 				AddinManager.Registry.ResetConfiguration ();
40 
41 			firstRun = false;
42 		}
43 
44 		[TestFixtureTearDown]
Teardown()45 		public virtual void Teardown ()
46 		{
47 			AddinManager.AddinLoadError -= OnLoadError;
48 			AddinManager.AddinLoaded -= OnLoad;
49 			AddinManager.AddinUnloaded -= OnUnload;
50 			AddinManager.Shutdown ();
51 		}
52 
OnLoadError(object s, AddinErrorEventArgs args)53 		void OnLoadError (object s, AddinErrorEventArgs args)
54 		{
55 			Console.WriteLine ("Add-in error (" + args.AddinId + "): " + args.Message);
56 			Console.WriteLine (args.Exception);
57 		}
58 
OnLoad(object s, AddinEventArgs args)59 		void OnLoad (object s, AddinEventArgs args)
60 		{
61 			Console.WriteLine ("Add-in loaded: " + args.AddinId);
62 		}
63 
OnUnload(object s, AddinEventArgs args)64 		void OnUnload (object s, AddinEventArgs args)
65 		{
66 			Console.WriteLine ("Add-in unloaded: " + args.AddinId);
67 		}
68 	}
69 }
70