private static void TestPoint() { // DotNet3d.Point code coverage { DotNet3d.Point p0 = new DotNet3d.Point(); p0.X = 10; p0.Y = 11; p0.Z = 12; var str = p0.ToString(); Trace.Assert(str == "(10 11 12)\n"); } DotNet3d.Point p1 = new DotNet3d.Point(); Trace.Assert(p1.ToString() == "(0 0 0)\n"); DotNet3d.Point p2 = new DotNet3d.Point { X = 1, Y = 2, Z = 3 }; Trace.Assert(p2.ToString() == "(1 2 3)\n"); DotNet3d.Point p3 = new DotNet3d.Point(p2); Trace.Assert(p3.ToString() == "(1 2 3)\n"); DotNet3d.Point p4 = new DotNet3d.Point(4, 5, 6); Trace.Assert(p4.ToString() == "(4 5 6)\n"); double[] arr = { 7, 8, 9 }; DotNet3d.Point p5 = new DotNet3d.Point(arr); Trace.Assert(p5.ToString() == "(7 8 9)\n"); DotNet3d.Point p6 = p2 + p4; Trace.Assert(p6.ToString() == "(5 7 9)\n"); DotNet3d.Point p7 = 2 * p2; Trace.Assert(p7.ToString() == "(2 4 6)\n"); DotNet3d.Point p8 = p2 * 2; Trace.Assert(p8.ToString() == "(2 4 6)\n"); DotNet3d.Point p9 = p2 / 2; Trace.Assert(p9.ToString() == "(0.5 1 1.5)\n"); }
private static void TestPly() { System.IO.Directory.CreateDirectory(@"..\..\testData\Output"); var plyAscii = new DotNet3d.Ply(@"..\..\testData\CalibrationXml-Ascii-UnixLineEndings.ply"); var PointCloudAscii = plyAscii.ToPointCloud(); var asciiTxt = PointCloudAscii.ToString(); var plyBinary = new DotNet3d.Ply(@"..\..\testData\CalibrationXml-Binary.ply"); var PointCloudBinary = plyBinary.ToPointCloud(); var binaryTxt = PointCloudBinary.ToString(); Trace.Assert(asciiTxt == binaryTxt); var plyAsciiWinLineEndings = new DotNet3d.Ply(@"..\..\testData\CalibrationXml-Ascii-WinLineEndings.ply"); var PointCloudAsciiWinLineEndings = plyAsciiWinLineEndings.ToPointCloud(); var asciiWinLineEndingsTxt = PointCloudAsciiWinLineEndings.ToString(); Trace.Assert(asciiTxt == asciiWinLineEndingsTxt); plyAscii.SaveAscii(@"..\..\testData\Output\CalibrationXml-Ascii-ToAscii.ply"); plyAscii.SaveBinary(@"..\..\testData\Output\CalibrationXml-Ascii-ToBinary.ply"); plyBinary.SaveAscii(@"..\..\testData\Output\CalibrationXml-Binary-ToAscii.ply"); plyBinary.SaveBinary(@"..\..\testData\Output\CalibrationXml-Binary-ToBinary.ply"); // array of points { var ptArr = new DotNet3d.Point[3]; ptArr[0] = new DotNet3d.Point(0, 0, 0); ptArr[1] = new DotNet3d.Point(1, 1, 1); ptArr[2] = new DotNet3d.Point(-1, -1, -1); var ply = new DotNet3d.Ply(ptArr); var txt = "ply\n" + "format ascii 1.0\n" + "comment Created by DotNet3d\n" + "element vertex 3\n" + "property float x\n" + "property float y\n" + "property float z\n" + "end_header\n" + "0 0 0\n" + "1 1 1\n" + "-1 -1 -1\n"; Trace.Assert(ply.ToString() == txt); } // point from strings { var pt = new DotNet3d.Point("1 2 3"); Trace.Assert(pt.ToString() == "(1 2 3)\n"); pt = new DotNet3d.Point("2, 4, 6"); Trace.Assert(pt.ToString() == "(2 4 6)\n"); pt = new DotNet3d.Point("3\t6\t9"); Trace.Assert(pt.ToString() == "(3 6 9)\n"); pt = new DotNet3d.Point("(4, 8, 12)"); Trace.Assert(pt.ToString() == "(4 8 12)\n"); } // Test loading binary (if this takes longer than a second to load, this consider this test a failure) { Stopwatch sw = new Stopwatch(); sw.Start(); var ply = new DotNet3d.Ply(@"..\..\testData\BIN-color_to_depth_Frame1.ply"); sw.Stop(); long oneSec = 1000; // NOTE: This takes about 2 ms on my home pc Trace.Assert(sw.ElapsedMilliseconds < oneSec); } // Test loading ascii (if this takes longer than a second to load, this consider this test a failure) { Stopwatch sw = new Stopwatch(); sw.Start(); var ply = new DotNet3d.Ply(@"..\..\testData\color_to_depth_Frame1.ply"); sw.Stop(); long tenSeconds = 10 * 1000; // NOTE: This once took 853414 ms (14 min), now it takes about 5 seconds on my home pc in debug mode Trace.Assert(sw.ElapsedMilliseconds < tenSeconds); } }