Locator is not required.

More tests passing.
This commit is contained in:
Lars Brubaker 2015-06-30 18:49:20 -07:00
parent e33ceb62f1
commit b4ce84740a
6 changed files with 149 additions and 54 deletions

View file

@ -40,6 +40,7 @@ using MatterHackers.MatterControl.PrintQueue;
using MatterHackers.MatterControl.DataStorage;
using System.IO;
using MatterHackers.Agg.PlatformAbstract;
using System.Threading;
namespace MatterControl.Tests
{
@ -47,7 +48,8 @@ namespace MatterControl.Tests
public class LibraryProviderTests
{
string pathToMesh = Path.Combine("..", "..", "..", "TestData", "TestMeshes", "LibraryProviderData");
string meshFileName;
string meshFileName = "Box20x20x10.stl";
string meshPathAndFileName;
bool dataReloaded = false;
bool itemAdded = false;
@ -65,7 +67,7 @@ namespace MatterControl.Tests
[SetUp]
public void SetupBeforeTest()
{
meshFileName = Path.Combine(pathToMesh, "Box20x20x10.stl");
meshPathAndFileName = Path.Combine(pathToMesh, meshFileName);
dataReloaded = false;
itemAdded = false;
@ -85,14 +87,15 @@ namespace MatterControl.Tests
[Test, Category("LibraryProviderFileSystem")]
public void LibraryProviderFileSystem_NavigationWorking()
{
Datastore.Instance.Initialize();
Thread.Sleep(3000); // wait for the library to finish initializing
LibraryProviderFileSystem testProvider = new LibraryProviderFileSystem(pathToMesh, "TestPath", null);
Assert.IsTrue(testProvider.CollectionCount == 0, "Start with a new database for these tests.");
Assert.IsTrue(testProvider.ItemCount == 1, "Start with a new database for these tests.");
PrintItemWrapper itemAtRoot = testProvider.GetPrintItemWrapper(0);
List<ProviderLocatorNode> providerLocator = itemAtRoot.PrintItem.GetLibraryProviderLocator();
Assert.IsTrue(providerLocator.Count == 1);
// create a collection and make sure it is on disk
dataReloaded = false; // it has been loaded for the default set of parts
string collectionName = "Collection1";
string createdDirectory = Path.Combine(pathToMesh, collectionName);
Assert.IsTrue(!Directory.Exists(createdDirectory));
@ -102,42 +105,137 @@ namespace MatterControl.Tests
Assert.IsTrue(dataReloaded == true);
Assert.IsTrue(Directory.Exists(createdDirectory));
dataReloaded = false;
// make sure removing it gets rid of it
Assert.IsTrue(dataReloaded == false);
testProvider.RemoveCollection(testProvider.GetCollectionItem(0));
Assert.IsTrue(dataReloaded == true);
Assert.IsTrue(!Directory.Exists(createdDirectory));
// test GetProviderForItem
}
[Test, Category("LibraryProviderSqlite")]
public void LibraryProviderSqlite_NavigationWorking()
{
LibraryProviderSQLite testProvider = new LibraryProviderSQLite(null, null);
Assert.IsTrue(testProvider.CollectionCount == 0, "Start with a new database for these tests.");
Assert.IsTrue(testProvider.ItemCount == 1, "Start with a new database for these tests.");
PrintItemWrapper itemAtRoot = testProvider.GetPrintItemWrapper(0);
List<ProviderLocatorNode> providerLocator = itemAtRoot.PrintItem.GetLibraryProviderLocator();
Assert.IsTrue(providerLocator.Count == 1);
// create a collection and make sure it is on disk
string collectionName = "Collection1";
//Assert.IsTrue(); // assert that the record does not exist in the DB
Assert.IsTrue(dataReloaded == false);
testProvider.AddCollectionToLibrary(collectionName);
Assert.IsTrue(testProvider.CollectionCount == 1);
Assert.IsTrue(dataReloaded == true);
// Assert.IsTrue(); // assert that the record does exist in the DB
// add an item works correctly
LibraryProvider subProvider = testProvider.GetProviderForItem(testProvider.GetCollectionItem(0));
dataReloaded = false;
itemAdded = false;
string subPathAndFile = Path.Combine(createdDirectory, meshFileName);
Assert.IsTrue(!File.Exists(subPathAndFile));
Assert.IsTrue(dataReloaded == false);
Assert.IsTrue(itemAdded == false);
// WIP: saving the name incorectly for this location (does not need to be changed).
subProvider.AddFilesToLibrary(new string[] { meshPathAndFileName });
Thread.Sleep(3000); // wait for the add to finihs
Assert.IsTrue(subProvider.ItemCount == 1);
Assert.IsTrue(dataReloaded == true);
Assert.IsTrue(itemAdded == true);
Assert.IsTrue(File.Exists(subPathAndFile));
// make sure the provider locator is correct
// remove item works
dataReloaded = false;
Assert.IsTrue(dataReloaded == false);
Assert.IsTrue(itemRemoved == false);
subProvider.RemoveItem(subProvider.GetPrintItemWrapper(0));
Assert.IsTrue(dataReloaded == true);
Assert.IsTrue(itemRemoved == true);
Assert.IsTrue(!File.Exists(subPathAndFile));
// remove collection gets rid of it
dataReloaded = false;
// make sure removing it gets rid of it
Assert.IsTrue(dataReloaded == false);
testProvider.RemoveCollection(testProvider.GetCollectionItem(0));
Assert.IsTrue(dataReloaded == true);
Assert.IsTrue(testProvider.CollectionCount == 0);
//Assert.IsTrue(); // assert that the record does not exist in the DB
Assert.IsTrue(!Directory.Exists(createdDirectory));
}
private bool NamedCollectionExists(string nameToLookFor)
{
string query = string.Format("SELECT * FROM PrintItemCollection WHERE Name = '{0}' ORDER BY Name ASC;", nameToLookFor);
IEnumerable<PrintItemCollection> result = (IEnumerable<PrintItemCollection>)Datastore.Instance.dbSQLite.Query<PrintItemCollection>(query);
foreach (PrintItemCollection collection in result)
{
if (collection.Name == nameToLookFor)
{
return true;
}
}
return false;
}
private bool NamedItemExists(string nameToLookFor)
{
string query = string.Format("SELECT * FROM PrintItem WHERE Name = '{0}' ORDER BY Name ASC;", nameToLookFor);
IEnumerable<PrintItem> result = (IEnumerable<PrintItem>)Datastore.Instance.dbSQLite.Query<PrintItem>(query);
foreach (PrintItem collection in result)
{
if (collection.Name == nameToLookFor)
{
return true;
}
}
return false;
}
[Test, Category("LibraryProviderSqlite")]
public void LibraryProviderSqlite_NavigationWorking()
{
Datastore.Instance.Initialize();
LibraryProviderSQLite testProvider = new LibraryProviderSQLite(null, null);
Thread.Sleep(3000); // wait for the library to finish initializing
Assert.IsTrue(testProvider.CollectionCount == 0, "Start with a new database for these tests.");
Assert.IsTrue(testProvider.ItemCount == 1, "Start with a new database for these tests.");
// create a collection and make sure it is on disk
dataReloaded = false; // it has been loaded for the default set of parts
string collectionName = "Collection1";
Assert.IsTrue(!NamedCollectionExists(collectionName)); // assert that the record does not exist in the DB
Assert.IsTrue(dataReloaded == false);
testProvider.AddCollectionToLibrary(collectionName);
Assert.IsTrue(testProvider.CollectionCount == 1);
Assert.IsTrue(dataReloaded == true);
Assert.IsTrue(NamedCollectionExists(collectionName)); // assert that the record does exist in the DB
PrintItemWrapper itemAtRoot = testProvider.GetPrintItemWrapper(0);
List<ProviderLocatorNode> providerLocator = itemAtRoot.PrintItem.GetLibraryProviderLocator();
Assert.IsTrue(providerLocator.Count == 1);
// add an item works correctly
dataReloaded = false;
itemAdded = false;
Assert.IsTrue(!NamedItemExists(collectionName));
Assert.IsTrue(dataReloaded == false);
Assert.IsTrue(itemAdded == false);
testProvider.AddFilesToLibrary(new string[] { meshPathAndFileName });
Thread.Sleep(3000); // wait for the add to finihs
Assert.IsTrue(testProvider.ItemCount == 2);
Assert.IsTrue(dataReloaded == true);
Assert.IsTrue(itemAdded == true);
string fileNameWithExtension = Path.GetFileNameWithoutExtension(meshPathAndFileName);
Assert.IsTrue(NamedItemExists(fileNameWithExtension));
// make sure the provider locator is correct
// remove item works
dataReloaded = false;
Assert.IsTrue(dataReloaded == false);
Assert.IsTrue(itemRemoved == false);
testProvider.RemoveItem(testProvider.GetPrintItemWrapper(1));
Assert.IsTrue(dataReloaded == true);
Assert.IsTrue(itemRemoved == true);
Assert.IsTrue(!NamedItemExists(fileNameWithExtension));
// remove collection gets rid of it
dataReloaded = false;
Assert.IsTrue(dataReloaded == false);
testProvider.RemoveCollection(testProvider.GetCollectionItem(0));
Assert.IsTrue(dataReloaded == true);
Assert.IsTrue(testProvider.CollectionCount == 0);
Assert.IsTrue(!NamedCollectionExists(collectionName)); // assert that the record does not exist in the DB
}
}
}