public void ThreadSafeLong_Add() { var tsdouble = new ThreadSafeLong(3L); tsdouble.Add(2L); tsdouble.Add(5L); Assert.Equal(10L, 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); }
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); }