public TAMStroke CreateRandomStroke(Vector2 center, TAMTone tone) { var size = (float)_random.Next(); var length = Mathf.Lerp(_generationConfiguration.StrokeLengthRange.x, _generationConfiguration.StrokeLengthRange.y, size); length += (float)_random.NextBetween(_generationConfiguration.StrokeHeightJitterRange.x, _generationConfiguration.StrokeLengthJitterRange.y); var height = Mathf.Lerp(_generationConfiguration.StrokeHeightRange.x, _generationConfiguration.StrokeHeightRange.y, size); height += (float)_random.NextBetween(_generationConfiguration.StrokeHeightJitterRange.x, _generationConfiguration.StrokeHeightJitterRange.y); float rotation; if (tone.StrokeOrientation == TAMStrokeOrientation.Horizontal) { rotation = (float)_random.NextBetween(-1, 1) * _generationConfiguration.MaxRotationJitter; } else if (tone.StrokeOrientation == TAMStrokeOrientation.Vertical) { // strokes vertical rotation = (float)_random.NextBetween(-1, 1) * _generationConfiguration.MaxRotationJitter + Mathf.PI / 2; } else { if (_random.NextBoolean()) { rotation = (float)_random.NextBetween(-1, 1) * _generationConfiguration.MaxRotationJitter; } else { rotation = (float)_random.NextBetween(-1, 1) * _generationConfiguration.MaxRotationJitter + Mathf.PI / 2; } } return(new TAMStroke(center, height, length, rotation, _lastId++)); }
public static void TestMultipleRandomCreationsAndDeletions<TLink>(this ILinks<TLink> links, int maximumOperationsPerCycle) { var comparer = Comparer<TLink>.Default; var addressToUInt64Converter = CheckedConverter<TLink, ulong>.Default; var uInt64ToAddressConverter = CheckedConverter<ulong, TLink>.Default; for (var N = 1; N < maximumOperationsPerCycle; N++) { var random = new System.Random(N); var created = 0UL; var deleted = 0UL; for (var i = 0; i < N; i++) { var linksCount = addressToUInt64Converter.Convert(links.Count()); var createPoint = random.NextBoolean(); if (linksCount >= 2 && createPoint) { var linksAddressRange = new Range<ulong>(1, linksCount); TLink source = uInt64ToAddressConverter.Convert(random.NextUInt64(linksAddressRange)); TLink target = uInt64ToAddressConverter.Convert(random.NextUInt64(linksAddressRange)); //-V3086 var resultLink = links.GetOrCreate(source, target); if (comparer.Compare(resultLink, uInt64ToAddressConverter.Convert(linksCount)) > 0) { created++; } } else { links.Create(); created++; } } Assert.True(created == addressToUInt64Converter.Convert(links.Count())); for (var i = 0; i < N; i++) { TLink link = uInt64ToAddressConverter.Convert((ulong)i + 1UL); if (links.Exists(link)) { links.Delete(link); deleted++; } } Assert.True(addressToUInt64Converter.Convert(links.Count()) == 0L); } }
private static void TestMultipleRandomCreationsAndDeletions(int maximumOperationsPerCycle) { var and = Link.Create(Link.Itself, Link.Itself, Link.Itself); //var comparer = Comparer<TLink>.Default; for (var N = 1; N < maximumOperationsPerCycle; N++) { var random = new System.Random(N); var linksCount = 1; for (var i = 0; i < N; i++) { var createPoint = random.NextBoolean(); if (linksCount > 2 && createPoint) { var linksAddressRange = new Range <ulong>(1, (ulong)linksCount); Link source = random.NextUInt64(linksAddressRange); Link target = random.NextUInt64(linksAddressRange); //-V3086 var resultLink = Link.Create(source, and, target); if (resultLink > linksCount) { linksCount++; } } else { Link.Create(Link.Itself, Link.Itself, Link.Itself); linksCount++; } } for (var i = 0; i < N; i++) { Link link = i + 2; if (link.Linker != null) { Link.Delete(link); linksCount--; } } } }