Index: src/Plugins/Wti/Wti.Forms/Extensions/ContextMenuStripExtensions.cs =================================================================== diff -u --- src/Plugins/Wti/Wti.Forms/Extensions/ContextMenuStripExtensions.cs (revision 0) +++ src/Plugins/Wti/Wti.Forms/Extensions/ContextMenuStripExtensions.cs (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -0,0 +1,32 @@ +using System; +using System.Drawing; +using System.Windows.Forms; + +namespace Wti.Forms.Extensions +{ + /// + /// Extension methods for . + /// + public static class ContextMenuStripExtensions + { + /// + /// Adds a new with all standard parameters. + /// + /// The parent menu to which the new item is added. + /// Value for . + /// Value for . + /// Value for . + /// Method to handle the user clicking on the item.. + public static void AddMenuItem(this ContextMenuStrip parentMenu, string text, string tooltip, Image icon, EventHandler clickHandler) + { + var newItem = new ToolStripMenuItem(text) + { + ToolTipText = tooltip, + Image = icon + }; + newItem.Click += clickHandler; + + parentMenu.Items.Add(newItem); + } + } +} \ No newline at end of file Index: src/Plugins/Wti/Wti.Forms/NodePresenters/PipingSurfaceLineCollectionNodePresenter.cs =================================================================== diff -u -r2cc167229383dbc03827939d66d50db5b651dba5 -rbb61ed227cf79e994b84019096e4297b2fbd4527 --- src/Plugins/Wti/Wti.Forms/NodePresenters/PipingSurfaceLineCollectionNodePresenter.cs (.../PipingSurfaceLineCollectionNodePresenter.cs) (revision 2cc167229383dbc03827939d66d50db5b651dba5) +++ src/Plugins/Wti/Wti.Forms/NodePresenters/PipingSurfaceLineCollectionNodePresenter.cs (.../PipingSurfaceLineCollectionNodePresenter.cs) (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -3,11 +3,14 @@ using System.Collections.Generic; using System.ComponentModel; using System.Drawing; +using System.Windows.Forms; using DelftTools.Controls; +using DelftTools.Controls.Swf; using DelftTools.Utils.Collections; using Wti.Data; +using Wti.Forms.Extensions; using Wti.Forms.Properties; namespace Wti.Forms.NodePresenters @@ -18,6 +21,12 @@ /// public class PipingSurfaceLineCollectionNodePresenter : ITreeNodePresenter { + /// + /// Injects the action to be performed when importing + /// instances to . + /// + public Action ImportSurfaceLinesAction { private get; set; } + public ITreeView TreeView { get; set; } public Type NodeTagType @@ -91,6 +100,10 @@ public IMenuItem GetContextMenu(ITreeNode sender, object nodeData) { + if (ImportSurfaceLinesAction != null) + { + return new MenuItemContextMenuStripAdapter(CreateContextMenu()); + } return null; } @@ -113,5 +126,23 @@ { throw new InvalidOperationException(String.Format("Cannot delete node of type {0}.", GetType().Name)); } + + private ContextMenuStrip CreateContextMenu() + { + var rootMenu = new ContextMenuStrip(); + + if (ImportSurfaceLinesAction != null) + { + rootMenu.AddMenuItem(Resources.ImportSurfaceLines, Resources.ImportSurfaceLinesDescription, + Resources.ImportIcon, ImportItemOnClick); + } + + return rootMenu; + } + + private void ImportItemOnClick(object sender, EventArgs eventArgs) + { + ImportSurfaceLinesAction(); + } } } \ No newline at end of file Index: src/Plugins/Wti/Wti.Forms/Properties/Resources.Designer.cs =================================================================== diff -u -r82e08784e174b6b2799fc19cc04e7d7aeb7b84e9 -rbb61ed227cf79e994b84019096e4297b2fbd4527 --- src/Plugins/Wti/Wti.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 82e08784e174b6b2799fc19cc04e7d7aeb7b84e9) +++ src/Plugins/Wti/Wti.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -98,6 +98,34 @@ } /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap ImportIcon { + get { + object obj = ResourceManager.GetObject("ImportIcon", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized string similar to Importeer dwarsdoorsnedes. + /// + public static string ImportSurfaceLines { + get { + return ResourceManager.GetString("ImportSurfaceLines", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Importeer nieuwe dwarsdoorsnedes van een *.csv bestand.. + /// + public static string ImportSurfaceLinesDescription { + get { + return ResourceManager.GetString("ImportSurfaceLinesDescription", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Peil dat gebruikt moet worden in de toetsing.. /// public static string PipingDataAssessmentLevelDescription { Index: src/Plugins/Wti/Wti.Forms/Properties/Resources.resx =================================================================== diff -u -r82e08784e174b6b2799fc19cc04e7d7aeb7b84e9 -rbb61ed227cf79e994b84019096e4297b2fbd4527 --- src/Plugins/Wti/Wti.Forms/Properties/Resources.resx (.../Resources.resx) (revision 82e08784e174b6b2799fc19cc04e7d7aeb7b84e9) +++ src/Plugins/Wti/Wti.Forms/Properties/Resources.resx (.../Resources.resx) (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -337,4 +337,13 @@ Piping berekening niet gelukt: {0} + + ..\Resources\table-import.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + Importeer dwarsdoorsnedes + + + Importeer nieuwe dwarsdoorsnedes van een *.csv bestand. + \ No newline at end of file Index: src/Plugins/Wti/Wti.Forms/Resources/table-import.png =================================================================== diff -u Binary files differ Index: src/Plugins/Wti/Wti.Forms/Wti.Forms.csproj =================================================================== diff -u -r82e08784e174b6b2799fc19cc04e7d7aeb7b84e9 -rbb61ed227cf79e994b84019096e4297b2fbd4527 --- src/Plugins/Wti/Wti.Forms/Wti.Forms.csproj (.../Wti.Forms.csproj) (revision 82e08784e174b6b2799fc19cc04e7d7aeb7b84e9) +++ src/Plugins/Wti/Wti.Forms/Wti.Forms.csproj (.../Wti.Forms.csproj) (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -48,6 +48,7 @@ Properties\GlobalAssembly.cs + Component @@ -107,6 +108,9 @@ + + PipingContextMenuStrip.cs + PublicResXFileCodeGenerator Resources.Designer.cs @@ -125,6 +129,9 @@ + + + Index: src/Plugins/Wti/Wti.IO/PipingSurfaceLinesCsvReader.cs =================================================================== diff -u --- src/Plugins/Wti/Wti.IO/PipingSurfaceLinesCsvReader.cs (revision 0) +++ src/Plugins/Wti/Wti.IO/PipingSurfaceLinesCsvReader.cs (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -0,0 +1,17 @@ +using System; + +namespace Wti.IO +{ + /// + /// File reader for a plain text file in comma-separated values format (*.csv), containing + /// data specifying surfacelines. + /// Expects data to be specified in the following format: + /// {ID};X1;Y1;Z1...;(Xn;Yn;Zn) + /// Where {ID} has to be a particular accepted text, and n triplets of doubles form the + /// 3D coordinates defining the geometric shape of the surfaceline.. + /// + public class PipingSurfaceLinesCsvReader + { + private readonly string[] acceptableIdNames = { "Profielnaam, LocationID" }; + } +} \ No newline at end of file Index: src/Plugins/Wti/Wti.IO/Wti.IO.csproj =================================================================== diff -u -r6dbce7d02bbc8849c767bf7963df7127a98c2897 -rbb61ed227cf79e994b84019096e4297b2fbd4527 --- src/Plugins/Wti/Wti.IO/Wti.IO.csproj (.../Wti.IO.csproj) (revision 6dbce7d02bbc8849c767bf7963df7127a98c2897) +++ src/Plugins/Wti/Wti.IO/Wti.IO.csproj (.../Wti.IO.csproj) (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -42,6 +42,7 @@ Properties\GlobalAssembly.cs + Index: src/Plugins/Wti/Wti.Plugin/FileImporter/PipingSurfaceLinesCsvImporter.cs =================================================================== diff -u -r2cc167229383dbc03827939d66d50db5b651dba5 -rbb61ed227cf79e994b84019096e4297b2fbd4527 --- src/Plugins/Wti/Wti.Plugin/FileImporter/PipingSurfaceLinesCsvImporter.cs (.../PipingSurfaceLinesCsvImporter.cs) (revision 2cc167229383dbc03827939d66d50db5b651dba5) +++ src/Plugins/Wti/Wti.Plugin/FileImporter/PipingSurfaceLinesCsvImporter.cs (.../PipingSurfaceLinesCsvImporter.cs) (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -65,7 +65,7 @@ { get { - return String.Format("{0} {1}(*.csv)|*.csv", + return String.Format("{0} {1} (*.csv)|*.csv", WtiFormsResources.PipingSurfaceLinesCollectionName, ApplicationResources.CsvFileName); } } @@ -84,12 +84,24 @@ public bool CanImportOn(object targetObject) { - throw new NotImplementedException(); + return targetObject is ICollection; } public object ImportItem(string path, object target = null) { - throw new NotImplementedException(); + // TODO: Open file at 'path' with PipingSurfaceLinesCsvReader + // TODO: Determine line count (for progress) + // TODO: For each line... + // TODO: Check ShouldCancel for early abort + // TODO: Read line + // TODO: Parse line + // TODO: Create PipingSurfaceLine + // TODO: Set data on PipingSurfaceLine + // TODO: Add all PipingSurfaceLines to 'target' if no errors occur. + + // TODO: Notifying observer? + + return target; } } } \ No newline at end of file Index: src/Plugins/Wti/Wti.Plugin/WtiApplicationPlugin.cs =================================================================== diff -u -rd6424435444e760d052fe6d8c8786e01bddf9d2b -rbb61ed227cf79e994b84019096e4297b2fbd4527 --- src/Plugins/Wti/Wti.Plugin/WtiApplicationPlugin.cs (.../WtiApplicationPlugin.cs) (revision d6424435444e760d052fe6d8c8786e01bddf9d2b) +++ src/Plugins/Wti/Wti.Plugin/WtiApplicationPlugin.cs (.../WtiApplicationPlugin.cs) (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -2,6 +2,8 @@ using DelftTools.Shell.Core; using Mono.Addins; using Wti.Data; +using Wti.Plugin.FileImporter; + using WtiFormsResources = Wti.Forms.Properties.Resources; using ApplicationResources = Wti.Plugin.Properties.Resources; @@ -52,5 +54,10 @@ CreateData = owner => new WtiProject() }; } + + public override IEnumerable GetFileImporters() + { + yield return new PipingSurfaceLinesCsvImporter(); + } } } \ No newline at end of file Index: src/Plugins/Wti/Wti.Plugin/WtiGuiPlugin.cs =================================================================== diff -u -r325410362b50750d3c291d19c1526799c9b1c583 -rbb61ed227cf79e994b84019096e4297b2fbd4527 --- src/Plugins/Wti/Wti.Plugin/WtiGuiPlugin.cs (.../WtiGuiPlugin.cs) (revision 325410362b50750d3c291d19c1526799c9b1c583) +++ src/Plugins/Wti/Wti.Plugin/WtiGuiPlugin.cs (.../WtiGuiPlugin.cs) (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -74,7 +74,10 @@ yield return new WtiProjectNodePresenter(); yield return new PipingDataNodePresenter(); yield return new PipingFailureMechanismNodePresenter(); - yield return new PipingSurfaceLineCollectionNodePresenter(); + yield return new PipingSurfaceLineCollectionNodePresenter + { + ImportSurfaceLinesAction = Gui.CommandHandler.ImportToGuiSelection + }; yield return new PipingOutputNodePresenter(); } } Index: test/Plugins/Wti/Wti.Forms.Test/Extensions/ContextMenuStripExtensionsTest.cs =================================================================== diff -u --- test/Plugins/Wti/Wti.Forms.Test/Extensions/ContextMenuStripExtensionsTest.cs (revision 0) +++ test/Plugins/Wti/Wti.Forms.Test/Extensions/ContextMenuStripExtensionsTest.cs (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -0,0 +1,37 @@ +using System.Windows.Forms; + +using NUnit.Framework; + +using Wti.Forms.Extensions; +using FormsResources = Wti.Forms.Properties.Resources; + +namespace Wti.Forms.Test.Extensions +{ + [TestFixture] + public class ContextMenuStripExtensionsTest + { + [Test] + public void AddMenuItem_AllDataProvided_AddFullyInitializedMenuItem() + { + // Setup + var menu = new ContextMenuStrip(); + int callCount = 0; + + const string menuItemsText = ""; + const string menuItemsTooltip = ""; + + // Call + menu.AddMenuItem(menuItemsText, menuItemsTooltip, FormsResources.ImportIcon, (sender, args) => callCount++); + + // Assert + Assert.AreEqual(1, menu.Items.Count); + var addedMenuItem = menu.Items[0]; + Assert.AreEqual(menuItemsText, addedMenuItem.Text); + Assert.AreEqual(menuItemsTooltip, addedMenuItem.ToolTipText); + Assert.IsNotNull(addedMenuItem.Image); + + addedMenuItem.PerformClick(); + Assert.AreEqual(1, callCount); + } + } +} \ No newline at end of file Index: test/Plugins/Wti/Wti.Forms.Test/NodePresenters/PipingSurfaceLineCollectionNodePresenterTest.cs =================================================================== diff -u -rb08cd825acc24d8d7b0f5e802bf65efece7ee4be -rbb61ed227cf79e994b84019096e4297b2fbd4527 --- test/Plugins/Wti/Wti.Forms.Test/NodePresenters/PipingSurfaceLineCollectionNodePresenterTest.cs (.../PipingSurfaceLineCollectionNodePresenterTest.cs) (revision b08cd825acc24d8d7b0f5e802bf65efece7ee4be) +++ test/Plugins/Wti/Wti.Forms.Test/NodePresenters/PipingSurfaceLineCollectionNodePresenterTest.cs (.../PipingSurfaceLineCollectionNodePresenterTest.cs) (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -5,6 +5,7 @@ using System.Linq; using DelftTools.Controls; +using DelftTools.Controls.Swf; using DelftTools.Utils.Collections; using NUnit.Framework; @@ -247,15 +248,18 @@ } [Test] - public void GetContextMenu_Always_ReturnNull() + public void GetContextMenu_DefaultScenario_ReturnNull() { // Setup var mocks = new MockRepository(); var nodeMock = mocks.StrictMock(); var dataMock = mocks.StrictMock(); mocks.ReplayAll(); - var nodePresenter = new PipingSurfaceLineCollectionNodePresenter(); + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter + { + ImportSurfaceLinesAction = null + }; // Call var contextMenu = nodePresenter.GetContextMenu(nodeMock, dataMock); @@ -266,6 +270,35 @@ } [Test] + public void GetContextMenu_SurfaceLinesImportActionSet_HaveImportSurfaceLinesItemInContextMenu() + { + // Setup + var mocks = new MockRepository(); + var nodeMock = mocks.StrictMock(); + var dataMock = mocks.StrictMock(); + var actionStub = mocks.Stub(); + mocks.ReplayAll(); + + var nodePresenter = new PipingSurfaceLineCollectionNodePresenter + { + ImportSurfaceLinesAction = actionStub + }; + + // Call + var returnedContextMenu = nodePresenter.GetContextMenu(nodeMock, dataMock); + + // Assert + var contextMenu = ((MenuItemContextMenuStripAdapter)returnedContextMenu).ContextMenuStrip; + Assert.AreEqual(1, contextMenu.Items.Count); + var importItem = contextMenu.Items[0]; + Assert.AreEqual("Importeer dwarsdoorsnedes", importItem.Text); + Assert.AreEqual("Importeer nieuwe dwarsdoorsnedes van een *.csv bestand.", importItem.ToolTipText); + Assert.AreEqual(16, importItem.Image.Width); + Assert.AreEqual(16, importItem.Image.Height); + mocks.VerifyAll(); // Expect no calls on arguments + } + + [Test] public void OnPropertyChange_Always_DoNothing() { // Setup Index: test/Plugins/Wti/Wti.Forms.Test/Wti.Forms.Test.csproj =================================================================== diff -u -ra3b93c36c2051bd6112327bff0d836ae7883737d -rbb61ed227cf79e994b84019096e4297b2fbd4527 --- test/Plugins/Wti/Wti.Forms.Test/Wti.Forms.Test.csproj (.../Wti.Forms.Test.csproj) (revision a3b93c36c2051bd6112327bff0d836ae7883737d) +++ test/Plugins/Wti/Wti.Forms.Test/Wti.Forms.Test.csproj (.../Wti.Forms.Test.csproj) (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -43,6 +43,7 @@ + Index: test/Plugins/Wti/Wti.IO.Test/PipingSurfaceLinesCsvReaderTest.cs =================================================================== diff -u --- test/Plugins/Wti/Wti.IO.Test/PipingSurfaceLinesCsvReaderTest.cs (revision 0) +++ test/Plugins/Wti/Wti.IO.Test/PipingSurfaceLinesCsvReaderTest.cs (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -0,0 +1,10 @@ +using NUnit.Framework; + +namespace Wti.IO.Test +{ + [TestFixture] + public class PipingSurfaceLinesCsvReaderTest + { + + } +} \ No newline at end of file Index: test/Plugins/Wti/Wti.IO.Test/Wti.IO.Test.csproj =================================================================== diff -u -rb9fb2479ca915755aa087e7898b9a78eb1e4f0c0 -rbb61ed227cf79e994b84019096e4297b2fbd4527 --- test/Plugins/Wti/Wti.IO.Test/Wti.IO.Test.csproj (.../Wti.IO.Test.csproj) (revision b9fb2479ca915755aa087e7898b9a78eb1e4f0c0) +++ test/Plugins/Wti/Wti.IO.Test/Wti.IO.Test.csproj (.../Wti.IO.Test.csproj) (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -38,6 +38,7 @@ + Index: test/Plugins/Wti/Wti.Plugin.Test/FileImporter/PipingSurfaceLineCsvImporterTest.cs =================================================================== diff -u -r2cc167229383dbc03827939d66d50db5b651dba5 -rbb61ed227cf79e994b84019096e4297b2fbd4527 --- test/Plugins/Wti/Wti.Plugin.Test/FileImporter/PipingSurfaceLineCsvImporterTest.cs (.../PipingSurfaceLineCsvImporterTest.cs) (revision 2cc167229383dbc03827939d66d50db5b651dba5) +++ test/Plugins/Wti/Wti.Plugin.Test/FileImporter/PipingSurfaceLineCsvImporterTest.cs (.../PipingSurfaceLineCsvImporterTest.cs) (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -5,6 +5,8 @@ using NUnit.Framework; +using Rhino.Mocks; + using Wti.Data; using Wti.Plugin.FileImporter; using WtiFormsResources = Wti.Forms.Properties.Resources; @@ -18,24 +20,81 @@ [Test] public void DefaultConstructor_ExpectedValues() { - // call + // Call var importer = new PipingSurfaceLinesCsvImporter(); - // assert + // Assert Assert.IsInstanceOf(importer); Assert.AreEqual(WtiFormsResources.PipingSurfaceLinesCollectionName, importer.Name); Assert.AreEqual(ApplicationResources.WtiApplicationName, importer.Category); Assert.AreEqual(16, importer.Image.Width); Assert.AreEqual(16, importer.Image.Height); CollectionAssert.AreEqual(new[]{typeof(IEnumerable)}, importer.SupportedItemTypes); Assert.IsFalse(importer.CanImportOnRootLevel); - var expectedFileFilter = String.Format("{0} {1}(*.csv)|*.csv", + var expectedFileFilter = String.Format("{0} {1} (*.csv)|*.csv", WtiFormsResources.PipingSurfaceLinesCollectionName, ApplicationResources.CsvFileName); Assert.AreEqual(expectedFileFilter, importer.FileFilter); Assert.IsNull(importer.TargetDataDirectory); Assert.IsFalse(importer.ShouldCancel); Assert.IsNull(importer.ProgressChanged); Assert.IsFalse(importer.OpenViewAfterImport); } + + [Test] + public void CanImportOn_TargetIsCollectionOfPipingSurfaceLines_ReturnTrue() + { + // Setup + var mocks = new MockRepository(); + var validTarget = mocks.StrictMock>(); + mocks.ReplayAll(); + + var importer = new PipingSurfaceLinesCsvImporter(); + + // Call + var importAllowed = importer.CanImportOn(validTarget); + + // Assert + Assert.IsTrue(importAllowed); + mocks.VerifyAll(); // Expect no calls on mocks. + } + + [Test] + public void CanImportOn_InvalidTarget_ReturnFalse() + { + // Setup + var mocks = new MockRepository(); + var invalidTarget = mocks.StrictMock>(); + mocks.ReplayAll(); + + var importer = new PipingSurfaceLinesCsvImporter(); + + // Call + var importAllowed = importer.CanImportOn(invalidTarget); + + // Assert + Assert.IsFalse(importAllowed); + mocks.VerifyAll(); // Expect no calls on mocks. + } + + [Test] + public void ImportItem_ImportingToValidTargetWithValidFile_ImportSurfaceLinesToCollection() + { + // Setup + const string validFilePath = ""; + var piping = new PipingFailureMechanism(); + + var importer = new PipingSurfaceLinesCsvImporter(); + + var importTarget = piping.SurfaceLines; + + // Precondition + Assert.IsTrue(importer.CanImportOn(importTarget)); + + // Call + var importedItem = importer.ImportItem(validFilePath, importTarget); + + // Assert + Assert.AreSame(importTarget, importedItem); + } } } \ No newline at end of file Index: test/Plugins/Wti/Wti.Plugin.Test/Wti.Plugin.Test.csproj =================================================================== diff -u -r2cc167229383dbc03827939d66d50db5b651dba5 -rbb61ed227cf79e994b84019096e4297b2fbd4527 --- test/Plugins/Wti/Wti.Plugin.Test/Wti.Plugin.Test.csproj (.../Wti.Plugin.Test.csproj) (revision 2cc167229383dbc03827939d66d50db5b651dba5) +++ test/Plugins/Wti/Wti.Plugin.Test/Wti.Plugin.Test.csproj (.../Wti.Plugin.Test.csproj) (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -38,6 +38,9 @@ ..\..\..\..\lib\nunit.framework.dll + + ..\..\..\..\lib\Rhino.Mocks.dll + Index: test/Plugins/Wti/Wti.Plugin.Test/WtiApplicationPluginTest.cs =================================================================== diff -u -rd6424435444e760d052fe6d8c8786e01bddf9d2b -rbb61ed227cf79e994b84019096e4297b2fbd4527 --- test/Plugins/Wti/Wti.Plugin.Test/WtiApplicationPluginTest.cs (.../WtiApplicationPluginTest.cs) (revision d6424435444e760d052fe6d8c8786e01bddf9d2b) +++ test/Plugins/Wti/Wti.Plugin.Test/WtiApplicationPluginTest.cs (.../WtiApplicationPluginTest.cs) (revision bb61ed227cf79e994b84019096e4297b2fbd4527) @@ -4,6 +4,8 @@ using Mono.Addins; using NUnit.Framework; using Wti.Data; +using Wti.Plugin.FileImporter; + using PluginResources = Wti.Plugin.Properties.Resources; using FormsResources = Wti.Forms.Properties.Resources; @@ -59,5 +61,19 @@ Assert.IsInstanceOf(projectDataItemDefinition.CreateData(null)); Assert.IsNull(projectDataItemDefinition.AddExampleData); } + + [Test] + public void GetFileImporters_Always_ReturnExpectedFileImporters() + { + // Setup + var plugin = new WtiApplicationPlugin(); + + // Call + var importers = plugin.GetFileImporters().ToArray(); + + // Assert + Assert.AreEqual(1, importers.Length); + Assert.IsInstanceOf(importers[0]); + } } } \ No newline at end of file