public void CanDecToValue(long initial, long value, long expected)
        {
            var tslong = new ThreadSafeLong(initial);

            tslong.DecTo(value);
            Assert.Equal(expected, tslong.Value);
        }
示例#2
0
        public void ThreadSafeLong_ValueSet()
        {
            var tsdouble = new ThreadSafeLong();

            tsdouble.Value = 3L;
            Assert.AreEqual(3L, tsdouble.Value);
        }
        public void CanAddValue(long initial, long added, long expected)
        {
            var tslong = new ThreadSafeLong(initial);

            tslong.Add(added);
            Assert.Equal(expected, tslong.Value);
        }
        public void CanSetValue(long value)
        {
            var tslong = new ThreadSafeLong(0);

            tslong.Add(value);
            Assert.Equal(value, tslong.Value);
        }
示例#5
0
        public void ThreadSafeLong_Add()
        {
            var tsdouble = new ThreadSafeLong(3L);

            tsdouble.Add(2L);
            tsdouble.Add(5L);
            Assert.Equal(10L, tsdouble.Value);
        }
示例#6
0
        public void ThreadSafeLong_Constructors()
        {
            var tsdouble = new ThreadSafeLong(0L);

            Assert.Equal(0L, tsdouble.Value);

            tsdouble = new ThreadSafeLong(1L);
            Assert.Equal(1L, tsdouble.Value);
        }
示例#7
0
 public ProgressReport(int totalSteps)
 {
     if (totalSteps < 1)
     {
         throw new System.ArgumentException("Argument \"numberOfSteps\" cannot be less than 1.");
     }
     currentStep     = new ThreadSafeLong(0);
     this.totalSteps = new ThreadSafeLong(totalSteps);
 }
示例#8
0
        public void ThreadSafeLong_Overrides()
        {
            var tsdouble         = new ThreadSafeLong(9L);
            var equaltsdouble    = new ThreadSafeLong(9L);
            var notequaltsdouble = new ThreadSafeLong(10L);

            Assert.Equal("9", tsdouble.ToString());
            Assert.True(tsdouble.Equals(equaltsdouble));
            Assert.False(tsdouble.Equals(notequaltsdouble));
            Assert.False(tsdouble.Equals(null));
            Assert.True(tsdouble.Equals(9L));
            Assert.False(tsdouble.Equals(10L));

            Assert.Equal(9L.GetHashCode(), tsdouble.GetHashCode());
        }
        public async Task AddMultiThreads(int threads, int observations)
        {
            var tslong   = new ThreadSafeLong(0);
            var testData = new IEnumerable <long> [threads];
            var sum      = 0L;

            for (var i = 0; i < threads; i++)
            {
                var data = GenerateTestData(observations);
                sum        += data.sum;
                testData[i] = data.items;
            }

            await Task.WhenAll(testData.Select(async d =>
            {
                foreach (long item in d)
                {
                    await Task.Yield();
                    tslong.Add(item);
                }
            }).ToArray());

            Assert.Equal(sum, tslong.Value);
        }
        public async Task DecToMultiThreads(int threads, int observations)
        {
            var tslong   = new ThreadSafeLong(0);
            var testData = new IEnumerable <long> [threads];
            var min      = long.MaxValue;

            for (var i = 0; i < threads; i++)
            {
                var data = GenerateTestData(observations);
                min         = Math.Min(data.min, min);
                testData[i] = data.items;
            }

            await Task.WhenAll(testData.Select(async d =>
            {
                foreach (long item in d)
                {
                    await Task.Yield();
                    tslong.DecTo(item);
                }
            }).ToArray());

            Assert.Equal(min, tslong.Value);
        }
示例#11
0
        public void ThreadSafeLong_ValueSet()
        {
            var tsdouble = new ThreadSafeLong(3L);

            Assert.Equal(3L, tsdouble.Value);
        }
示例#12
0
 public HistogramHighBucketsStore(double[] bucketBounds)
 {
     _bounds = bucketBounds;
     Buckets = new ThreadSafeLong[bucketBounds.Length + 1]; // Allocate one more element for +Inf value
 }
        public void CanInitConstructor(long value)
        {
            var tslong = new ThreadSafeLong(value);

            Assert.Equal(value, tslong.Value);
        }