public void IsCorrectRotation(int[] values, int expectedCount, int hiddenInEachItemExpectedCount) { foreach (var value in values) { var dataItem = new DataItem(); if (value < 0) { dataItem.Hide = true; } _colonLabelHelper.Add(dataItem); } var rotation = _colonLabelHelper.GetPossibleVariants().ToArray(); Assert.AreEqual(expectedCount, rotation.Length); Assert.IsTrue(rotation.All(_ => _.Count(__ => __ == LabelPosition.Hidden) == hiddenInEachItemExpectedCount)); }
/// <summary> /// Производит обсчёт расположения лэйблов значений и пытается максимально раздвинуть их между собой /// </summary> private void CalculateLabelPosition() { var tasks = BuildColons().Select(_ => Task.Factory.StartNew(() => { var helper = new DataColonLabelHelper { LabelHeight = LabelHeight, ScaleMax = FirstScale.Max, ScaleMin = FirstScale.Min, Height = Preferences.Height, Order = ColonDataItemOrder.Real }; helper.Clear(); foreach (var dataItem in _) { helper.Add(dataItem); } helper.EnsureBestLabels(); })).ToArray(); Task.WaitAll(tasks); }