public void EnsureModelRelationshipEntryInSavedFileTest() { var file = new ThreeMfFile(); using (var ms = new MemoryStream()) { file.Save(ms); ms.Seek(0, SeekOrigin.Begin); file = ThreeMfFile.Load(ms); Assert.Equal(0, file.Models.Count); } file.Models.Add(new ThreeMfModel()); using (var ms = new MemoryStream()) { file.Save(ms); ms.Seek(0, SeekOrigin.Begin); file = ThreeMfFile.Load(ms); Assert.Equal(1, file.Models.Count); } file.Models.Add(new ThreeMfModel()); using (var ms = new MemoryStream()) { file.Save(ms); ms.Seek(0, SeekOrigin.Begin); file = ThreeMfFile.Load(ms); Assert.Equal(2, file.Models.Count); } }
public void LoadFromDiskTest() { var samplesDir = Path.Combine(Path.GetDirectoryName(typeof(ThreeMfFileLoadTests).GetTypeInfo().Assembly.Location), "Samples"); var loadedFiles = 0; foreach (var path in Directory.EnumerateFiles(samplesDir, "*.3mf", SearchOption.AllDirectories)) { var fileName = Path.GetFileName(path); if (fileName == "multiprop-metallic.3mf" || fileName == "multiprop-translucent.3mf") { // undefined namespace `ms` continue; } var pathParts = path.Split(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); if (pathParts.Contains("production") || pathParts.Contains("beam lattice")) { // not yet implemented continue; } if (pathParts.Contains("MUSTFAIL")) { // expected to fail continue; } using (var fs = new FileStream(path, FileMode.Open)) { var file = ThreeMfFile.Load(fs); var model = file.Models.Single(); loadedFiles++; } } Assert.True(loadedFiles > 0, "No sample files were loaded. Ensure all submodules have been initialized."); }
private static ThreeMfFile FileFromParts(params Tuple <string, string>[] filesAndContents) { using (var ms = new MemoryStream()) { using (var archive = new ZipArchive(ms, ZipArchiveMode.Create, true)) { var contentTypes = Tuple.Create("[Content_Types].xml", @" <Types xmlns=""http://schemas.openxmlformats.org/package/2006/content-types""> <Default Extension=""rels"" ContentType=""application/vnd.openxmlformats-package.relationships+xml"" /> <Default Extension=""model"" ContentType=""application/vnd.ms-package.3dmanufacturing-3dmodel+xml"" /> </Types> "); foreach (var pair in filesAndContents.Append(contentTypes)) { var path = pair.Item1; var contents = pair.Item2; var entry = archive.CreateEntry(path); using (var stream = entry.Open()) using (var writer = new StreamWriter(stream)) { writer.Write(contents); } } } ms.Seek(0, SeekOrigin.Begin); var file = ThreeMfFile.Load(ms); return(file); } }
public static ThreeMfFile RoundTripFile(ThreeMfFile file) { using (var ms = new MemoryStream()) { file.Save(ms); ms.Seek(0, SeekOrigin.Begin); var file2 = ThreeMfFile.Load(ms); return(file2); } }
public void FileSystemAPITest() { var filePath = Path.GetTempFileName(); var file = new ThreeMfFile(); file.Save(filePath); var roundTripFile = ThreeMfFile.Load(filePath); try { File.Delete(filePath); } catch { } }