[f-spot] Fixes bgo#670498 f-spot crashed - Export -> CD



commit 58be045c4c0559b5943ccc27baa207bfa31582f2
Author: Stephen Shaw <sshaw decriptor com>
Date:   Fri Mar 2 18:36:24 2012 -0700

    Fixes bgo#670498 f-spot crashed - Export -> CD
    
    Not exactly sure why it was crash, but a simple
    change to how the foreach was handled seems to
    fixed it.
    
    Also some cleanups wrt FSpot.Exporter.CD.  I
    renamed some methods to be easier to understand
    and improved some of the code.  The hope is with
    the addition of IDiscBurner that eventually other
    platforms/apps can be used.

 .gitignore                                         |    2 +
 F-Spot.sln                                         |   14 ++++-
 .../FSpot.Exporters.CD/FSpot.Exporters.CD.csproj   |    2 +
 .../FSpot.Exporters.CD/Brasero.cs                  |   63 ++++++++++++++++++++
 .../FSpot.Exporters.CD/CDExport.cs                 |   24 ++++----
 .../FSpot.Exporters.CD/CDExportDialog.cs           |   27 +++++---
 .../FSpot.Exporters.CD/IDiscBurner.cs              |   52 ++++++++++++++++
 .../Exporters/FSpot.Exporters.CD/Makefile.am       |    4 +-
 .../FSpot.Exporters.CD/TestOf_CDExport.cs          |   48 +++++++++++++++
 .../FSpot.Exporters.CD/TestOf_CDExportDialog.cs    |   44 ++++++++++++++
 .../FSpotExporters.UnitTests.csproj                |   52 ++++++++++++++++
 .../FSpotExporters.UnitTests/FSpotExporters.mdproj |   11 ++++
 12 files changed, 319 insertions(+), 24 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index d168799..cc7a774 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,6 +39,7 @@ config.sub
 /depcomp
 /mkinstalldirs
 /stamp-h1
+/doxygen
 build/m4/shave/shave
 build/m4/shave/shave-libtool
 build/m4/*.m4
@@ -65,3 +66,4 @@ help/*/*.xml
 /src/Core/test-results/
 /test-results/
 /src/Clients/MainApp.UnitTest/test-results/
+/src/Extensions/Exporters/FSpotExporters.UnitTests/bin/
diff --git a/F-Spot.sln b/F-Spot.sln
index 1ec8823..bdebbc3 100644
--- a/F-Spot.sln
+++ b/F-Spot.sln
@@ -97,11 +97,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FSpot.Exporters.Zip", "src\
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FSpot.Exporters.Tabblo", "src\Extensions\Exporters\FSpot.Exporters.Tabblo\FSpot.Exporters.Tabblo.csproj", "{414E9813-E0A8-4BD4-8694-485F528518F5}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FSpotExporters.UnitTests", "src\Extensions\Exporters\FSpotExporters.UnitTests\FSpotExporters.UnitTests.csproj", "{F38C0ADF-29A3-453B-B272-61CC5BF3BB1E}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
 		Submodule|Any CPU = Submodule|Any CPU
 		Release|Any CPU = Release|Any CPU
+		Default|Any CPU = Default|Any CPU
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 		{05A7FEC4-974A-40EB-AFB8-14E523EEEFFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
@@ -328,6 +331,14 @@ Global
 		{ECF8996A-DE63-4225-927F-84641E0EB794}.Release|Any CPU.Build.0 = Release|Any CPU
 		{ECF8996A-DE63-4225-927F-84641E0EB794}.Submodule|Any CPU.ActiveCfg = Debug|Any CPU
 		{ECF8996A-DE63-4225-927F-84641E0EB794}.Submodule|Any CPU.Build.0 = Debug|Any CPU
+		{F38C0ADF-29A3-453B-B272-61CC5BF3BB1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F38C0ADF-29A3-453B-B272-61CC5BF3BB1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F38C0ADF-29A3-453B-B272-61CC5BF3BB1E}.Default|Any CPU.ActiveCfg = Debug|Any CPU
+		{F38C0ADF-29A3-453B-B272-61CC5BF3BB1E}.Default|Any CPU.Build.0 = Debug|Any CPU
+		{F38C0ADF-29A3-453B-B272-61CC5BF3BB1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F38C0ADF-29A3-453B-B272-61CC5BF3BB1E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F38C0ADF-29A3-453B-B272-61CC5BF3BB1E}.Submodule|Any CPU.ActiveCfg = Debug|Any CPU
+		{F38C0ADF-29A3-453B-B272-61CC5BF3BB1E}.Submodule|Any CPU.Build.0 = Debug|Any CPU
 		{FBA30EB0-05EB-446D-827D-D41EBF4B81E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{FBA30EB0-05EB-446D-827D-D41EBF4B81E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{FBA30EB0-05EB-446D-827D-D41EBF4B81E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -386,6 +397,7 @@ Global
 		{BE981FC8-9B41-4336-815C-ECC365AE05D4} = {C9302C4A-B571-4F8E-8FFA-7B4C7DF8B3E3}
 		{4C9355A7-1797-4708-A1F2-FBCDB782D04D} = {C9302C4A-B571-4F8E-8FFA-7B4C7DF8B3E3}
 		{414E9813-E0A8-4BD4-8694-485F528518F5} = {C9302C4A-B571-4F8E-8FFA-7B4C7DF8B3E3}
+		{F38C0ADF-29A3-453B-B272-61CC5BF3BB1E} = {C9302C4A-B571-4F8E-8FFA-7B4C7DF8B3E3}
 	EndGlobalSection
 	GlobalSection(MonoDevelopProperties) = preSolution
 		StartupItem = src\Clients\MainApp\MainApp.csproj
@@ -421,7 +433,7 @@ Global
 		$7.LineAlign = 0
 		$6.inheritsSet = Mono
 		$0.StandardHeader = $8
-		$8.Text = @ ${FileName}\n Author:\n      ${AuthorName} <${AuthorEmail}>\n Copyright (c) ${Year} ${CopyrightHolder}
+		$8.Text = @ ${FileName}\n\n Author:\n      ${AuthorName} <${AuthorEmail}>\n\n Copyright (c) ${Year} SUSE LINUX Products GmbH, Nuernberg, Germany.\n\n Permission is hereby granted, free of charge, to any person obtaining\n a copy of this software and associated documentation files (the\n "Software"), to deal in the Software without restriction, including\n without limitation the rights to use, copy, modify, merge, publish,\n distribute, sublicense, and/or sell copies of the Software, and to\n permit persons to whom the Software is furnished to do so, subject to\n the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDER
 S BE\n LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n \n
 		$8.IncludeInNewFiles = True
 		version = 0.9.0
 		outputpath = .
diff --git a/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD.csproj b/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD.csproj
index f1c2f8c..c9fc3d0 100644
--- a/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD.csproj
+++ b/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD.csproj
@@ -33,6 +33,8 @@
   <ItemGroup>
     <Compile Include="FSpot.Exporters.CD\CDExport.cs" />
     <Compile Include="FSpot.Exporters.CD\CDExportDialog.cs" />
+    <Compile Include="FSpot.Exporters.CD\IDiscBurner.cs" />
+    <Compile Include="FSpot.Exporters.CD\Brasero.cs" />
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="Resources\CDExport.addin.xml">
diff --git a/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD/Brasero.cs b/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD/Brasero.cs
new file mode 100644
index 0000000..d723bec
--- /dev/null
+++ b/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD/Brasero.cs
@@ -0,0 +1,63 @@
+// Brasero.cs
+//
+// Author:
+//   Stephen Shaw <sshaw decriptor com>
+//
+// Copyright (C) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+// Borrowed parts from banshee.
+// src/Backends/Banshee.Gnome/Banshee.GnomeBackend/Brasero.cs
+using System;
+using System.IO;
+using System.Diagnostics;
+
+using Hyena;
+
+namespace FSpot.Exporters.CD
+{
+	public class Brasero : IDiscBurner
+	{
+		private string brasero_exec;
+		public Brasero ()
+		{
+			brasero_exec = Paths.FindProgramInPath ("brasero");
+			if (null == brasero_exec)
+				throw new FileNotFoundException ("brasero");
+		}
+
+		/// <summary>
+		/// Start the process to burn the media to disc
+		/// </summary>
+		public void Run ()
+		{
+			// -n, --ncb         Burn the contents of the burn:// URI
+			// --immediately     Start burning immediately.
+			// It seems like in past version --immediately was part of -n
+			// Unfortunately, brasero (3.2) doesn't seem to clean up burn://
+			// after a successful burn.
+			ProcessStartInfo psi = new ProcessStartInfo (brasero_exec, "-n --immediately");
+			Process.Start (psi);
+		}
+	}
+}
+
diff --git a/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD/CDExport.cs b/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD/CDExport.cs
index ead4150..871c743 100644
--- a/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD/CDExport.cs
+++ b/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD/CDExport.cs
@@ -3,9 +3,11 @@
 //
 // Author:
 //   Ruben Vermeersch <ruben savanne be>
+//   Stephen Shaw <sshaw decriptor com>
 //
 // Copyright (C) 2010 Novell, Inc.
 // Copyright (C) 2010 Ruben Vermeersch
+// Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -48,6 +50,7 @@ using GtkBeans;
 namespace FSpot.Exporters.CD {
 	public class CDExport : FSpot.Extensions.IExporter {
 		IBrowsableCollection selection;
+		IDiscBurner burner;
 
 		System.Uri dest = new System.Uri ("burn:///");
 
@@ -60,20 +63,20 @@ namespace FSpot.Exporters.CD {
 
 		public CDExport ()
 		{
+			burner = new Brasero();
 		}
 
 		public void Run (IBrowsableCollection selection)
 		{
 			this.selection = selection;
 			dialog = new CDExportDialog (selection, dest);
-			//LoadHistory ();
 
 			if (dialog.Run () != (int)ResponseType.Ok) {
 				dialog.Destroy ();
 				return;
 			}
 
-			clean = dialog.Clean;
+			clean = dialog.RemovePreviousPhotos;
 
 			command_thread = new System.Threading.Thread (new System.Threading.ThreadStart (Transfer));
 			command_thread.Name = Catalog.GetString ("Transferring Pictures");
@@ -84,10 +87,7 @@ namespace FSpot.Exporters.CD {
 			dialog.Destroy ();
 		}
 
-		[DllImport ("libc")]
-		extern static int system (string program);
-
-//		//FIXME: rewrite this as a Filter
+		//FIXME: rewrite this as a Filter
 	        public static GLib.File UniqueName (System.Uri path, string shortname)
 	        {
 	                int i = 1;
@@ -114,7 +114,8 @@ namespace FSpot.Exporters.CD {
 			}
 		}
 
-		public void Transfer () {
+		public void Transfer ()
+		{
 			try {
 				bool result = true;
 
@@ -123,14 +124,14 @@ namespace FSpot.Exporters.CD {
 
 				foreach (IPhoto photo in selection.Items) {
 
-				//FIXME need to implement the uniquename as a filter
+					//FIXME need to implement the uniquename as a filter
 					using (FilterRequest request = new FilterRequest (photo.DefaultVersion.Uri)) {
 						GLib.File source = FileFactory.NewForUri (request.Current.ToString ());
 						GLib.File target = UniqueName (dest, photo.Name);
 						FileProgressCallback cb = Progress;
 
 						progress_dialog.Message = System.String.Format (Catalog.GetString ("Transferring picture \"{0}\" To CD"), photo.Name);
-						progress_dialog.Fraction = photo_index / (double) selection.Count;
+						progress_dialog.Fraction = photo_index / (double)selection.Count;
 						progress_dialog.ProgressText = System.String.Format (Catalog.GetString ("{0} of {1}"),
 											     photo_index, selection.Count);
 
@@ -149,14 +150,13 @@ namespace FSpot.Exporters.CD {
 					progress_dialog.ProgressText = Catalog.GetString ("Transfer Complete");
 					progress_dialog.ButtonLabel = Gtk.Stock.Ok;
 					progress_dialog.Hide ();
-					system ("brasero -n");
-				} else {
+					burner.Run ();
+				} else
 					throw new System.Exception (System.String.Format ("{0}{3}{1}{3}{2}",
 											  progress_dialog.Message,
 											  Catalog.GetString ("Error While Transferring"),
 											  result.ToString (),
 											  System.Environment.NewLine));
-				}
 
 			} catch (System.Exception e) {
 				Hyena.Log.DebugException (e);
diff --git a/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD/CDExportDialog.cs b/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD/CDExportDialog.cs
index 2bd4ef6..1e52b56 100644
--- a/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD/CDExportDialog.cs
+++ b/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD/CDExportDialog.cs
@@ -3,9 +3,11 @@
 //
 // Author:
 //   Ruben Vermeersch <ruben savanne be>
+//   Stephen Shaw <sshaw decriptor com>
 //
 // Copyright (C) 2010 Novell, Inc.
 // Copyright (C) 2010 Ruben Vermeersch
+// Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -48,17 +50,21 @@ namespace FSpot.Exporters.CD
 		Gtk.Window listwindow;
 		System.Uri dest;
 
-        [GtkBeans.Builder.Object] Button browse_button;
+      		[GtkBeans.Builder.Object] Button browse_button;
 		[GtkBeans.Builder.Object] ScrolledWindow thumb_scrolledwindow;
 		[GtkBeans.Builder.Object] CheckButton remove_check;
 		[GtkBeans.Builder.Object] Label size_label;
+
+		// This is a frame for any photos that are still in the queue
+		// to be burned to disc.  As of now(March 3, 2012), that's burn:///
 		[GtkBeans.Builder.Object] Frame previous_frame;
 
-		public bool Clean {
+		public bool RemovePreviousPhotos {
 			get { return remove_check.Active; }
 		}
 
-		public CDExportDialog (IBrowsableCollection collection, System.Uri dest) : base (Assembly.GetExecutingAssembly (), "CDExport.ui", "cd_export_dialog")
+		public CDExportDialog (IBrowsableCollection collection, System.Uri dest) :
+			base (Assembly.GetExecutingAssembly (), "CDExport.ui", "cd_export_dialog")
 		{
 			this.dest = dest;
 
@@ -88,17 +94,18 @@ namespace FSpot.Exporters.CD
 			thumb_scrolledwindow.Add (view);
 			this.ShowAll ();
 
-			previous_frame.Visible = IsEmpty (dest);
-
-            browse_button.Clicked += HandleBrowseExisting;
+			previous_frame.Visible = !IsDestEmpty (dest);
 
+			browse_button.Clicked += HandleBrowseExisting;
 		}
 
-		bool IsEmpty (System.Uri path)
+		bool IsDestEmpty (System.Uri path)
 		{
-			foreach (GLib.FileEnumerator f in FileFactory.NewForUri (path).EnumerateChildren ("*", FileQueryInfoFlags.None, null))
-				return true;
-			return false;
+			GLib.File f = FileFactory.NewForUri (path);
+			foreach (GLib.FileInfo info in f.EnumerateChildren ("*", FileQueryInfoFlags.None, null)) {
+				return false;
+			}
+			return true;
 		}
 
 		void HandleBrowseExisting (object sender, System.EventArgs args)
diff --git a/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD/IDiscBurner.cs b/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD/IDiscBurner.cs
new file mode 100644
index 0000000..d2e663a
--- /dev/null
+++ b/src/Extensions/Exporters/FSpot.Exporters.CD/FSpot.Exporters.CD/IDiscBurner.cs
@@ -0,0 +1,52 @@
+//
+// IDiscBurner.cs
+//
+// Author:
+//   Stephen Shaw <sshaw decriptor com>
+//
+// Copyright (C) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+/*
+ * Previously there was unmanaged code that called the command brasero -n
+ * using:
+ * 		[DllImport ("libc")]
+ *		extern static int system (string program);
+ * essentially forcing CDExport to be tied exclusively to brasero and gnome.
+ *
+ * The idea with this change is to allow other burners and platforms.  So,
+ * not much has changed yet, but ideally it would be cool if the platform
+ * be detected and all of this done properly.
+ */
+
+namespace FSpot.Exporters.CD
+{
+	/// <summary>
+	/// Provides a generic interface for potentially other burner
+	/// and platforms.
+	/// </summary>
+	public interface IDiscBurner
+	{
+		void Run ();
+	}
+}
+
diff --git a/src/Extensions/Exporters/FSpot.Exporters.CD/Makefile.am b/src/Extensions/Exporters/FSpot.Exporters.CD/Makefile.am
index 08aba01..6009c25 100644
--- a/src/Extensions/Exporters/FSpot.Exporters.CD/Makefile.am
+++ b/src/Extensions/Exporters/FSpot.Exporters.CD/Makefile.am
@@ -4,8 +4,10 @@ LINK = $(REF_FSPOT_EXTENSION_CDEXPORT)
 INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
 
 SOURCES =  \
+	FSpot.Exporters.CD/Brasero.cs \
 	FSpot.Exporters.CD/CDExport.cs \
-	FSpot.Exporters.CD/CDExportDialog.cs
+	FSpot.Exporters.CD/CDExportDialog.cs \
+	FSpot.Exporters.CD/IDiscBurner.cs
 
 RESOURCES =  \
 	Resources/CDExport.addin.xml \
diff --git a/src/Extensions/Exporters/FSpotExporters.UnitTests/FSpot.Exporters.CD/TestOf_CDExport.cs b/src/Extensions/Exporters/FSpotExporters.UnitTests/FSpot.Exporters.CD/TestOf_CDExport.cs
new file mode 100644
index 0000000..74405a3
--- /dev/null
+++ b/src/Extensions/Exporters/FSpotExporters.UnitTests/FSpot.Exporters.CD/TestOf_CDExport.cs
@@ -0,0 +1,48 @@
+//  TestOf_CDExport.cs
+// 
+//  Author:
+//       Stephen Shaw <sshaw decriptor com>
+// 
+//  Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+// 
+//  Permission is hereby granted, free of charge, to any person obtaining
+//  a copy of this software and associated documentation files (the
+//  "Software"), to deal in the Software without restriction, including
+//  without limitation the rights to use, copy, modify, merge, publish,
+//  distribute, sublicense, and/or sell copies of the Software, and to
+//  permit persons to whom the Software is furnished to do so, subject to
+//  the following conditions:
+// 
+//  The above copyright notice and this permission notice shall be
+//  included in all copies or substantial portions of the Software.
+// 
+//  THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
+//  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+//  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+//  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+//  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+//  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//  
+//
+
+using System;
+using NUnit.Framework;
+
+using FSpot.Exporters.CD;
+
+namespace FSpotExporters.UnitTests
+{
+	[TestFixture]
+	public class TestOf_CDExport
+	{
+		CDExport _cdExport = new CDExport();
+
+		[Test]
+		public void CDExportDefaultSystemUri ()
+		{
+
+		}
+	}
+}
+
diff --git a/src/Extensions/Exporters/FSpotExporters.UnitTests/FSpot.Exporters.CD/TestOf_CDExportDialog.cs b/src/Extensions/Exporters/FSpotExporters.UnitTests/FSpot.Exporters.CD/TestOf_CDExportDialog.cs
new file mode 100644
index 0000000..dad99c6
--- /dev/null
+++ b/src/Extensions/Exporters/FSpotExporters.UnitTests/FSpot.Exporters.CD/TestOf_CDExportDialog.cs
@@ -0,0 +1,44 @@
+//  TestOf_CDExportDialog.cs
+// 
+//  Author:
+//       Stephen Shaw <sshaw decriptor com>
+// 
+//  Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+// 
+//  Permission is hereby granted, free of charge, to any person obtaining
+//  a copy of this software and associated documentation files (the
+//  "Software"), to deal in the Software without restriction, including
+//  without limitation the rights to use, copy, modify, merge, publish,
+//  distribute, sublicense, and/or sell copies of the Software, and to
+//  permit persons to whom the Software is furnished to do so, subject to
+//  the following conditions:
+// 
+//  The above copyright notice and this permission notice shall be
+//  included in all copies or substantial portions of the Software.
+// 
+//  THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND,
+//  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+//  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+//  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+//  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+//  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+//  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//  
+
+using System;
+using NUnit.Framework;
+
+using FSpot.Exporters.CD;
+
+namespace FSpotExporters.UnitTests
+{
+    [TestFixture]
+    public class TestOf_CDExportDialog
+    {
+        [Test]
+        public void TestCase ()
+        {
+        }
+    }
+}
+
diff --git a/src/Extensions/Exporters/FSpotExporters.UnitTests/FSpotExporters.UnitTests.csproj b/src/Extensions/Exporters/FSpotExporters.UnitTests/FSpotExporters.UnitTests.csproj
new file mode 100644
index 0000000..94d70a1
--- /dev/null
+++ b/src/Extensions/Exporters/FSpotExporters.UnitTests/FSpotExporters.UnitTests.csproj
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.21022</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{F38C0ADF-29A3-453B-B272-61CC5BF3BB1E}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <RootNamespace>FSpotExportersCD.UnitTests</RootNamespace>
+    <AssemblyName>FSpotExportersCD.UnitTests</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <ReleaseVersion>0.9.0</ReleaseVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug</OutputPath>
+    <DefineConstants>DEBUG;</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>none</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Release</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="nunit.core, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77" />
+    <Reference Include="nunit.framework, Version=2.4.8.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="FSpot.Exporters.CD\TestOf_CDExport.cs" />
+    <Compile Include="FSpot.Exporters.CD\TestOf_CDExportDialog.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <ItemGroup>
+    <Folder Include="FSpot.Exporters.CD\" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\FSpot.Exporters.CD\FSpot.Exporters.CD.csproj">
+      <Project>{3CBAA4AE-AC83-4043-BBB5-6EA7962EC983}</Project>
+      <Name>FSpot.Exporters.CD</Name>
+    </ProjectReference>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/src/Extensions/Exporters/FSpotExporters.UnitTests/FSpotExporters.mdproj b/src/Extensions/Exporters/FSpotExporters.UnitTests/FSpotExporters.mdproj
new file mode 100644
index 0000000..32e0cb4
--- /dev/null
+++ b/src/Extensions/Exporters/FSpotExporters.UnitTests/FSpotExporters.mdproj
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Default</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ItemType>NUnitAssemblyGroupProject</ItemType>
+    <ProductVersion>9.0.21022</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{5201DCFC-4A58-4B67-B3FA-9B13B1FC5EA2}</ProjectGuid>
+  </PropertyGroup>
+</Project>
\ No newline at end of file



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]