public void SimpleFitnessWriteAndRead()
        {
            var rand = new MersenneTwisterFast(0);
            var f    = new SimpleFitness();

            f.SetFitness(null, float.MaxValue, true);

            // Set up some random Trials just to check that they get transmitted
            const int n = 10;

            f.Trials = new List <double>(n);
            for (var i = 0; i < n; i++)
            {
                f.Trials.Add(rand.NextDouble());
            }

            using (var ms = new MemoryStream())
            {
                var writer = new BinaryWriter(ms);
                f.WriteFitness(null, writer); // Write
                ms.Position = 0;
                var reader = new BinaryReader(ms);
                var f2     = new SimpleFitness();
                f2.ReadFitness(null, reader); // Read

                // Compare
                Assert.AreEqual(f.Value, f2.Value);               // Value is same
                Assert.IsTrue(f2.IsIdeal);                        // Fitness is ideal
                Assert.AreEqual(f2.Trials.Count, f.Trials.Count); // Number of trials is the same
                for (var i = 0; i < f.Trials.Count; i++)
                {
                    Assert.AreEqual((double)f.Trials[i], (double)f2.Trials[i]); // Trial values are all the same
                }
            }
        }