public static int[] ToCoordinates(this IGraph self, int index)
        {
            var dimensions = self.DimensionsSizes.ToArray();

            #region Invariant observance

            var rangeOfValidIndices = new InclusiveValueRange <int>(self.Size - 1, 0);
            if (!rangeOfValidIndices.Contains(index))
            {
                throw new ArgumentOutOfRangeException(nameof(index));
            }
            #endregion

            #region Helper methods
            int GetCoordinateValue(int dimensionSize)
            {
                int coordinate = index % dimensionSize;

                index /= dimensionSize;
                return(coordinate);
            }

            int Coordinates(int i) => GetCoordinateValue(dimensions[i]);

            #endregion

            return(Enumerable
                   .Range(0, dimensions.Length)
                   .Select(Coordinates)
                   .ToArray());
        }
Example #2
0
        public void Constructor_UpperValueIsLesserThanLower_ConstructsCorrectly(int upperValue, int lowerValue)
        {
            var range = new InclusiveValueRange <int>(upperValue, lowerValue);

            Assert.AreEqual(lowerValue, range.UpperValueOfRange);
            Assert.AreEqual(upperValue, range.LowerValueOfRange);
        }
Example #3
0
 static Constants()
 {
     GraphWidthValueRange         = new InclusiveValueRange <int>(80, 1);
     GraphLengthValueRange        = new InclusiveValueRange <int>(50, 1);
     ObstaclesPercentValueRange   = new InclusiveValueRange <int>(99, 0);
     AlgorithmDelayTimeValueRange = new InclusiveValueRange <int>(35, 0);
 }
Example #4
0
 public MenuList(ICollection <string> menuItemsNames, int columns = 2)
 {
     columnsValueRange   = new InclusiveValueRange <int>(10, 1);
     this.columns        = columnsValueRange.ReturnInRange(columns);
     this.menuItemsNames = menuItemsNames;
     menuList            = new Lazy <string>(CreateMenu);
 }
Example #5
0
 private IEnumerable <double> RandomValues(InclusiveValueRange <double> valueRange)
 {
     for (int i = 0; i < valueRange.Amplitude(); i++)
     {
         yield return(valueRange.GetRandomValue());
     }
 }
Example #6
0
        /// <summary>
        /// Return user's console input in range of values
        /// </summary>
        /// <param name="accompanyingMessage">An input message</param>
        /// <param name="upperRangeValue">An upper value of input range</param>
        /// <param name="lowerRangeValue">A lower value of input range</param>
        /// <returns>A number in the range from
        /// <paramref name="lowerRangeValue"/> to
        /// <paramref name="upperRangeValue"/></returns>
        /// <exception cref="System.IO.IOException"></exception>
        public static int InputNumber(string accompanyingMessage,
                                      int upperRangeValue, int lowerRangeValue = 0)
        {
            var rangeOfValidInput = new InclusiveValueRange <int>(upperRangeValue, lowerRangeValue);

            return(InputNumber(accompanyingMessage, rangeOfValidInput));
        }
Example #7
0
        public bool Contains_ValueIsInValueRange_ReturnsRightCondition(int upperValue,
                                                                       int lowerValue, int testValue)
        {
            var range = new InclusiveValueRange <int>(upperValue, lowerValue);

            return(range.Contains(testValue));
        }
Example #8
0
 public MainView(IMainModel model)
 {
     mainModel      = model as MainViewModel ?? throw new ArgumentException(nameof(model));
     menu           = new Menu <Action>(model);
     menuList       = new MenuList(menu.MenuActionsNames, columns: 3);
     menuValueRange = new InclusiveValueRange <int>(menu.MenuActionsNames.Length, 1);
 }
Example #9
0
 static Constants()
 {
     GraphWidthValueRange         = new InclusiveValueRange <int>(67, 1);
     GraphLengthValueRange        = new InclusiveValueRange <int>(32, 1);
     ObstaclesPercentValueRange   = new InclusiveValueRange <int>(99, 0);
     AlgorithmDelayTimeValueRange = new InclusiveValueRange <int>(35, 0);
     GraphParamsValueRanges       = new ValueRanges <int>(GraphWidthValueRange, GraphLengthValueRange);
 }
Example #10
0
        public void GetRandomValueTest_InclusiveValueRangeDouble_ReturnsValueInRange(
            double lowerValue, double upperValue)
        {
            var valueRange = new InclusiveValueRange <double>(upperValue, lowerValue);

            var randomValues = RandomValues(valueRange);

            Assert.IsTrue(randomValues.All(valueRange.Contains));
        }
Example #11
0
        public void GetRandomValueTest_InclusiveValueRangeInt32_ReturnsValueInRange(
            int lowerValue, int upperValue)
        {
            var valueRange = new InclusiveValueRange <int>(upperValue, lowerValue);

            var randomValues = RandomValues(valueRange);

            Assert.IsTrue(randomValues.All(valueRange.Contains));
        }
Example #12
0
        public void ReturnInRange_ValueIsLesserThanUpperValue_ReturnsLowerValue(int upperValue,
                                                                                int lowerValue, int outOfRangeValue)
        {
            var range = new InclusiveValueRange <int>(upperValue, lowerValue);

            var valueInRange = range.ReturnInRange(outOfRangeValue);

            Assert.AreEqual(range.LowerValueOfRange, valueInRange);
        }
Example #13
0
        public void ReturnInRange_ValueIsInRange_ReturnsUnchangedValue(int upperValue,
                                                                       int lowerValue, int withinRangeValue)
        {
            var range = new InclusiveValueRange <int>(upperValue, lowerValue);

            var valueInRange = range.ReturnInRange(withinRangeValue);

            Assert.AreEqual(valueInRange, withinRangeValue);
        }
Example #14
0
 static Constants()
 {
     ScaleValueRange              = new InclusiveValueRange <double>(2.5, 0.1);
     GraphWidthValueRange         = new InclusiveValueRange <int>(150, 1);
     GraphLengthValueRange        = new InclusiveValueRange <int>(75, 1);
     GraphParamsValueRanges       = new ValueRanges <int>(GraphWidthValueRange, GraphLengthValueRange);
     ObstaclesPercentValueRange   = new InclusiveValueRange <double>(99, 0);
     AlgorithmDelayTimeValueRange = new InclusiveValueRange <double>(35, 0);
     OffsetValueRange             = new InclusiveValueRange <double>(-1000, 1000);
 }
Example #15
0
        /// <summary>
        /// Checks whether coordinate is within graph
        /// </summary>
        /// <param name="self"></param>
        /// <param name="graph"></param>
        /// <returns>true if <paramref name="self"/> coordinates
        /// values is not greater than the corresponding dimension if graph
        /// and is not lesser than 0; false if it is or coordinate has more or
        /// less coordinates values than <paramref name="graph"/> has dimensions</returns>
        /// <exception cref="ArgumentNullException">Thrown when any of parametres is null</exception>
        public static bool IsWithinGraph(this ICoordinate self, IGraph graph)
        {
            bool IsWithin(int coordinate, int graphDimension)
            {
                var range = new InclusiveValueRange <int>(graphDimension - 1, 0);

                return(range.Contains(coordinate));
            }

            return(self.IsWithinGraph(graph, IsWithin));
        }
 public GraphAssemble(
     IVertexFactory vertexFactory,
     ICoordinateFactory coordinateFactory,
     IGraphFactory graphFactory,
     IVertexCostFactory costFactory,
     INeighboursCoordinatesFactory radarFactory)
 {
     this.vertexFactory     = vertexFactory;
     this.coordinateFactory = coordinateFactory;
     this.graphFactory      = graphFactory;
     this.costFactory       = costFactory;
     this.radarFactory      = radarFactory;
     percentRange           = new InclusiveValueRange <int>(99, 0);
 }
Example #17
0
 static Constants()
 {
     DistanceBetweenVerticesValueRange = new InclusiveValueRange <double>(70, 0);
     ZoomValueRange            = new InclusiveValueRange <double>(1000, 0);
     OpacityValueRange         = new InclusiveValueRange <double>(1, 0);
     AngleValueRange           = new InclusiveValueRange <double>(360, 0);
     ObstaclePercentValueRange = new InclusiveValueRange <double>(99, 0);
     AlgorithmDelayValueRange  = new InclusiveValueRange <double>(35, 0);
     GraphWidthValueRange      = new InclusiveValueRange <int>(25, 1);
     GraphLengthValueRange     = GraphWidthValueRange;
     GraphHeightValueRange     = GraphLengthValueRange;
     GraphParamsValueRanges    = new ValueRanges <int>(
         GraphWidthValueRange,
         GraphLengthValueRange,
         GraphHeightValueRange
         );
 }
 public static double GetRandomValue(this InclusiveValueRange <double> valueRange)
 {
     return(valueRange.Amplitude() * Random.NextDouble() + valueRange.LowerValueOfRange);
 }
 public static int GetRandomValue(this InclusiveValueRange <int> valueRange)
 {
     return(Random.Next(valueRange.LowerValueOfRange, valueRange.UpperValueOfRange + 1));
 }
Example #20
0
 static BaseVertexCost()
 {
     CostRange = new InclusiveValueRange <int>(9, 1);
     Random    = new Random();
 }