コード例 #1
0
        private static void TestRangeFromThreeToFour(IOrderedSymbolTable <int, string> numberToString)
        {
            var elementsWithThreeToFourKeys = numberToString.Range(3, 4).ToList();

            Assert.True(elementsWithThreeToFourKeys.Contains(KeyValuePair.Create(3, "A")));
            Assert.AreEqual(1, elementsWithThreeToFourKeys.Count);
        }
コード例 #2
0
        private static void TestRangeFromFourToFive(IOrderedSymbolTable <int, string> numberToString)
        {
            var elementsWithFourToFiveKeys = numberToString.Range(4, 5).ToList();

            Assert.True(elementsWithFourToFiveKeys.Contains(KeyValuePair.Create(5, "E")));
            Assert.AreEqual(1, elementsWithFourToFiveKeys.Count);
        }
        private static void HandleVerticalLine(ILine line, IOrderedSymbolTable <int, int> xToY, List <Point> intersections)
        {
            var aY = line.A.Y;
            var bY = line.B.Y;
            var intersectionWithCurrentVerticalLine = xToY
                                                      .Range(Math.Min(aY, bY), Math.Max(aY, bY))
                                                      .Select(intersection => CreatePointFrom(line.A.X, intersection.Key));

            intersections.AddRange(intersectionWithCurrentVerticalLine);
        }
 private static void HandleEvent(KeyValuePair <int, ILine> @event,
                                 IOrderedSymbolTable <int, int> xToY,
                                 List <Point> intersections)
 {
     var(x, line) = @event;
     if (line.LineType == ILine.Type.Horizontal)
     {
         HandleHorizontalLine(x, line, xToY);
     }
     else
     {
         HandleVerticalLine(line, xToY, intersections);
     }
 }
        private static void HandleHorizontalLine(int x, ILine line, IOrderedSymbolTable <int, int> xToY)
        {
            if (x == line.A.X)
            {
                xToY.Add(line.A.Y, x);
                return;
            }

            var deleted = xToY.TryDelete(line.A.Y);

            if (deleted)
            {
                return;
            }
            var message = $"Reached end point of horizontal line but couldn't remove its y:{line.A.Y} coordinated";

            throw new InvalidOperationException(message);
        }
コード例 #6
0
 private static void TestRangeFromFourToFour(IOrderedSymbolTable <int, string> numberToString)
 {
     Assert.AreEqual(0, numberToString.Range(4, 4).ToList().Count);
 }