149 lines
5 KiB
C#
149 lines
5 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using MatterHackers.Agg;
|
|
using MatterHackers.Agg.Platform;
|
|
using MatterHackers.DataConverters3D;
|
|
using MatterHackers.MatterControl.DataStorage;
|
|
using MatterHackers.MatterControl.Tests.Automation;
|
|
using MatterHackers.PolygonMesh;
|
|
using NUnit.Framework;
|
|
|
|
namespace MatterControl.Tests.MatterControl
|
|
{
|
|
[TestFixture]
|
|
public class AssetManagerTests
|
|
{
|
|
|
|
[Test]
|
|
public async Task StoreAssetFile()
|
|
{
|
|
StaticData.RootPath = MatterControlUtilities.StaticDataPath;
|
|
MatterControlUtilities.OverrideAppDataLocation(MatterControlUtilities.RootPath);
|
|
|
|
// Create sample asset file
|
|
string tempFile = ApplicationDataStorage.Instance.GetNewLibraryFilePath(".txt");
|
|
Directory.CreateDirectory(Path.GetDirectoryName(tempFile));
|
|
File.WriteAllText(tempFile, "Sample Text");
|
|
|
|
// Set directory for asset resolution
|
|
Object3D.AssetsPath = ApplicationDataStorage.Instance.LibraryAssetsPath;
|
|
Directory.CreateDirectory(Object3D.AssetsPath);
|
|
|
|
foreach (var file in Directory.GetFiles(Object3D.AssetsPath))
|
|
{
|
|
File.Delete(file);
|
|
}
|
|
Assert.AreEqual(0, Directory.GetFiles(Object3D.AssetsPath).Length);
|
|
|
|
// Create AssetManager
|
|
var assetManager = new MockAssetManager();
|
|
AssetObject3D.AssetManager = assetManager;
|
|
|
|
// Store
|
|
string result = await AssetObject3D.AssetManager.StoreFile(tempFile, false, CancellationToken.None, null);
|
|
|
|
// Validate
|
|
Assert.AreEqual(1, Directory.GetFiles(Object3D.AssetsPath).Length, "Unexpected asset file count");
|
|
Assert.AreEqual("8FB7B108E5F0A7FAE84DF849DDE830FED5B5F786.txt", result, "Unexpected asset name");
|
|
Assert.AreEqual(0, assetManager.PublishCount, "No files should have been published");
|
|
}
|
|
|
|
class AssetTestObject3D : AssetObject3D
|
|
{
|
|
public override string AssetPath { get; set ; }
|
|
}
|
|
|
|
[Test]
|
|
public async Task StoreAsset()
|
|
{
|
|
StaticData.RootPath = MatterControlUtilities.StaticDataPath;
|
|
MatterControlUtilities.OverrideAppDataLocation(MatterControlUtilities.RootPath);
|
|
|
|
// Create sample asset file
|
|
string tempFile = ApplicationDataStorage.Instance.GetNewLibraryFilePath(".txt");
|
|
Directory.CreateDirectory(Path.GetDirectoryName(tempFile));
|
|
File.WriteAllText(tempFile, "Sample Text");
|
|
|
|
var object3D = new AssetTestObject3D()
|
|
{
|
|
AssetPath = tempFile
|
|
};
|
|
|
|
// Set directory for asset resolution
|
|
Object3D.AssetsPath = ApplicationDataStorage.Instance.LibraryAssetsPath;
|
|
Directory.CreateDirectory(Object3D.AssetsPath);
|
|
|
|
foreach(var file in Directory.GetFiles(Object3D.AssetsPath))
|
|
{
|
|
File.Delete(file);
|
|
}
|
|
Assert.AreEqual(0, Directory.GetFiles(Object3D.AssetsPath).Length);
|
|
|
|
// Create AssetManager
|
|
var assetManager = new MockAssetManager();
|
|
AssetObject3D.AssetManager = assetManager;
|
|
|
|
// Store
|
|
await AssetObject3D.AssetManager.StoreAsset(object3D, false, CancellationToken.None, null);
|
|
|
|
// Validate
|
|
Assert.AreEqual(1, Directory.GetFiles(Object3D.AssetsPath).Length, "Unexpected asset file count");
|
|
Assert.AreEqual("8FB7B108E5F0A7FAE84DF849DDE830FED5B5F786", object3D.AssetID, "Unexpected AssetID");
|
|
Assert.AreEqual("8FB7B108E5F0A7FAE84DF849DDE830FED5B5F786.txt", object3D.AssetPath, "Unexpected asset name");
|
|
Assert.AreEqual(0, assetManager.PublishCount, "No files should have been published");
|
|
}
|
|
|
|
[Test]
|
|
public async Task StoreMesh()
|
|
{
|
|
StaticData.RootPath = MatterControlUtilities.StaticDataPath;
|
|
MatterControlUtilities.OverrideAppDataLocation(MatterControlUtilities.RootPath);
|
|
|
|
// Create sample asset file
|
|
string tempFile = ApplicationDataStorage.Instance.GetNewLibraryFilePath(".txt");
|
|
Directory.CreateDirectory(Path.GetDirectoryName(tempFile));
|
|
File.WriteAllText(tempFile, "Sample Text");
|
|
|
|
var object3D = new Object3D()
|
|
{
|
|
Mesh = PlatonicSolids.CreateCube(1, 1, 1)
|
|
};
|
|
|
|
// Set directory for asset resolution
|
|
Object3D.AssetsPath = ApplicationDataStorage.Instance.LibraryAssetsPath;
|
|
Directory.CreateDirectory(Object3D.AssetsPath);
|
|
|
|
foreach (var file in Directory.GetFiles(Object3D.AssetsPath))
|
|
{
|
|
File.Delete(file);
|
|
}
|
|
Assert.AreEqual(0, Directory.GetFiles(Object3D.AssetsPath).Length);
|
|
|
|
// Create AssetManager
|
|
var assetManager = new MockAssetManager();
|
|
AssetObject3D.AssetManager = assetManager;
|
|
|
|
// Store
|
|
await AssetObject3D.AssetManager.StoreMesh(object3D, false, CancellationToken.None, null);
|
|
|
|
// Validate
|
|
Assert.AreEqual(1, Directory.GetFiles(Object3D.AssetsPath).Length, "Unexpected asset file count");
|
|
Assert.AreEqual("CF58E6637ED36311082F66EC5FA3A279E0513FE6.stl", object3D.MeshPath, "Unexpected MeshPath");
|
|
Assert.AreEqual(0, assetManager.PublishCount, "No files should have been published");
|
|
}
|
|
|
|
// Create AssetManager
|
|
public class MockAssetManager : AssetManager
|
|
{
|
|
public int PublishCount { get; private set; } = 0;
|
|
|
|
public override Task PublishAsset(string assetID, CancellationToken cancellationToken, Action<double, string> progress)
|
|
{
|
|
this.PublishCount++;
|
|
return Task.CompletedTask;
|
|
}
|
|
}
|
|
}
|
|
}
|