ZipTests.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using NUnit.Framework;
  7. using SharpGLTF.Scenes;
  8. using SharpGLTF.Geometry;
  9. using SharpGLTF.Geometry.Parametric;
  10. namespace SharpGLTF.IO
  11. {
  12. internal class ZipTests
  13. {
  14. [Test]
  15. public void ZipRoundtripTest()
  16. {
  17. // create a model
  18. var mesh = new MeshBuilder<Geometry.VertexTypes.VertexPositionNormal, Geometry.VertexTypes.VertexEmpty, Geometry.VertexTypes.VertexEmpty>("SphereMesh");
  19. mesh.AddSphere(Materials.MaterialBuilder.CreateDefault(), 50, System.Numerics.Matrix4x4.Identity);
  20. var scene = new SceneBuilder();
  21. scene.AddRigidMesh(mesh, System.Numerics.Matrix4x4.Identity).WithName("Sphere");
  22. Schema2.ModelRoot model = scene.ToGltf2();
  23. Assert.That(model.LogicalMeshes[0].Name, Is.EqualTo("SphereMesh"));
  24. Assert.That(model.LogicalNodes[0].Name, Is.EqualTo("Sphere"));
  25. model = _ZipRoundtrip(model);
  26. Assert.That(model.LogicalMeshes[0].Name, Is.EqualTo("SphereMesh"));
  27. Assert.That(model.LogicalNodes[0].Name, Is.EqualTo("Sphere"));
  28. }
  29. private static Schema2.ModelRoot _ZipRoundtrip(Schema2.ModelRoot model)
  30. {
  31. byte[] raw;
  32. // write to zip into memory:
  33. using (var memory = new System.IO.MemoryStream())
  34. {
  35. using (var zipWriter = new ZipWriter(memory))
  36. {
  37. zipWriter.AddModel("model.gltf", model);
  38. }
  39. raw = memory.ToArray();
  40. }
  41. // read the model back:
  42. using (var memory = new System.IO.MemoryStream(raw, false))
  43. {
  44. using (var zipReader = new ZipReader(memory))
  45. {
  46. return zipReader.LoadModel("model.gltf");
  47. }
  48. }
  49. }
  50. }
  51. }