public void CalculateTest()
        {
            var m    = new MultiplicativePseudoMeasure();
            var list = MeasureTestsHelper.RandomUtilityList(20);
            var cVal = list.MultiplyCombined();
            var aVal = m.Calculate(list);

            Assert.That(aVal, Is.EqualTo(cVal));
        }
        public void CloneTest()
        {
            var m  = new MultiplicativePseudoMeasure();
            var mc = m.Clone();

            Assert.IsNotNull(mc);
            var list  = MeasureTestsHelper.RandomUtilityList(20);
            var mVal  = m.Calculate(list);
            var mcVal = mc.Calculate(list);

            Assert.That(mcVal, Is.EqualTo(mVal));
        }
        public void CalculateTest(
            [Values(-100f, -1f, 0f, 1f, 5f, 10f, 100f, 1000000f)] float p,
            [Values(-1f, 0f, 0.5f, 0.75f, 1f, 2f)] float lowerBound)
        {
            var m   = new ConstrainedChebyshev(lowerBound);
            var cLb = lowerBound.Clamp01();

            var list = MeasureTestsHelper.RandomUtilityList(_rnd.Next(1, MaxVecLen));

            float aVal = m.Calculate(list);
            float cVal = MeasureTestsHelper.CalculateConstrainedChebyshevNorm(list, cLb);

            Assert.That(aVal, Is.EqualTo(cVal).Within(Tolerance));
            Assert.That(aVal <= One);
            Assert.That(aVal >= Zero);
        }