public void ToByteArrayTest() { Guid centroidID = Guid.NewGuid(); ClusterPoint target = new ClusterPoint { X = 1.23, Y = 3.45, CentroidID = centroidID }; MemoryStream stream = new MemoryStream(); stream.Write(BitConverter.GetBytes(1.23), 0, sizeof(double)); stream.Write(BitConverter.GetBytes(3.45), 0, sizeof(double)); stream.Write(centroidID.ToByteArray(), 0, 16); byte[] expected = stream.ToArray(); byte[] actual; actual = target.ToByteArray(); Assert.AreEqual(expected.Length, actual.Length); for (int i = 0; i < expected.Length; i++) { Assert.AreEqual(expected[i], actual[i]); } }
public void EnumeratorTest() { ClusterPoint p = new ClusterPoint(1, 2, Guid.NewGuid()); MemoryStream stream = new MemoryStream(); const int NumElements = 5; for (int i = 0; i < NumElements; i++) { stream.Write(p.ToByteArray(), 0, ClusterPoint.Size); } ObjectStreamReader <ClusterPoint> pointStream = new ObjectStreamReader <ClusterPoint>(new MemoryStream(stream.ToArray()), ClusterPoint.FromByteArray, ClusterPoint.Size); Assert.AreEqual(p.CentroidID, pointStream.First().CentroidID); DateTime serialStart = DateTime.Now; int[] serialOutput = pointStream.Select(point => { System.Threading.Thread.Sleep(200); return(1); }).ToArray(); DateTime serialEnd = DateTime.Now; Assert.AreEqual(NumElements, serialOutput.Length); DateTime parallelStart = DateTime.Now; int[] parallelOutput = pointStream.AsParallel().Select(point => { System.Threading.Thread.Sleep(200); return(1); }).ToArray(); DateTime parallelEnd = DateTime.Now; Assert.AreEqual(NumElements, parallelOutput.Length); System.Diagnostics.Trace.WriteLine(string.Format("serial: {0}, parallel: {1}", (serialEnd - serialStart).TotalSeconds, (parallelEnd - parallelStart).TotalSeconds)); }