public void WrongParameters()
        {
            var ps = new ParticleSystem();
              ps.Parameters.AddUniform<Vector3F>("D");
              ps.Parameters.AddUniform<float>("L");
              ps.Parameters.AddUniform<Vector3F>("A");

              var e = new LinearAccelerationEffector { ParticleSystem = ps };

              var dt = new TimeSpan(0, 0, 0, 1);

              // There should be no exception.
              e.RequeryParameters();
              e.Initialize();
              e.BeginUpdate(dt);
              e.UpdateParticles(dt, 10, 20);
              e.EndUpdate(dt);

              e.Uninitialize();
        }
        public void Uninitialize()
        {
            var ps = new ParticleSystem();
              var wp0 = new WeakReference(ps.Parameters.AddVarying<Vector3F>(ParticleParameterNames.Direction));
              var wp1 = new WeakReference(ps.Parameters.AddVarying<float>(ParticleParameterNames.LinearSpeed));
              var wp2 = new WeakReference(ps.Parameters.AddVarying<Vector3F>(ParticleParameterNames.LinearAcceleration));

              var e = new LinearAccelerationEffector { ParticleSystem = ps };

              e.RequeryParameters();
              e.Uninitialize();

              e.ParticleSystem = null;
              ps = null;

              GC.Collect();
              GC.WaitForFullGCComplete();

              Assert.IsFalse(wp0.IsAlive);
              Assert.IsFalse(wp1.IsAlive);
              Assert.IsFalse(wp2.IsAlive);
        }