public void WrongParameters()
        {
            var ps = new ParticleSystem();

            ps.Parameters.AddUniform <float>("A");
            ps.Parameters.AddUniform <float>("S");

            var e = new AngularVelocityEffector {
                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 <float>(ParticleParameterNames.Angle));
            var wp1 = new WeakReference(ps.Parameters.AddVarying <float>(ParticleParameterNames.AngularSpeed));

            var e = new AngularVelocityEffector {
                ParticleSystem = ps
            };

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

            e.ParticleSystem = null;
            ps = null;

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

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