public void InitialProbabilityIsSet(double prob, long expectedValue)
        {
            var sampler = new TraceIdDynamicRatioSampler(prob);

            Assert.Equal(prob, sampler.GetCurrentSamplingProbability());
            Assert.Equal(expectedValue, sampler.GetCurrentTraceIdUpperBound());
        }
        public void UpdateProbabilityWorksProperly()
        {
            var sampler = new TraceIdDynamicRatioSampler(1);

            sampler.UpdateSamplingProbability(0);
            Assert.Equal(0, sampler.GetCurrentSamplingProbability());
            Assert.Equal(long.MinValue, sampler.GetCurrentTraceIdUpperBound());

            sampler.UpdateSamplingProbability(0.5);
            Assert.Equal(0.5, sampler.GetCurrentSamplingProbability());
            Assert.Equal(4611686018427387904, sampler.GetCurrentTraceIdUpperBound());

            sampler.UpdateSamplingProbability(0.25);
            Assert.Equal(0.25, sampler.GetCurrentSamplingProbability());
            Assert.Equal(2305843009213693952, sampler.GetCurrentTraceIdUpperBound());

            sampler.UpdateSamplingProbability(0.1);
            Assert.Equal(0.1, sampler.GetCurrentSamplingProbability());
            Assert.Equal(922337203685477632, sampler.GetCurrentTraceIdUpperBound());
        }