Ejemplo n.º 1
0
        public void ClosestPointsFinderCalculateHandler_SendsMessage_ForMessage(
            [NotNull, Frozen] ISelkieInMemoryBus bus,
            [NotNull, Frozen] ISettingsManager manager,
            [NotNull, Frozen] IClosestPointsFinder finder,
            [NotNull] ClosestPointsFinderModel sut,
            [NotNull] ClosestIdsCalculateMessage message)
        {
            // Arrange
            SetupSettingsManager(manager);

            var expected = new[]
            {
                1,
                2,
                3
            };

            finder.ClosestIds.Returns(expected);

            // Act
            sut.ClosestPointsFinderCalculateHandler(message);

            // Assert
            bus.Received()
            .PublishAsync(Arg.Is <ClosestIdsChangedMessage>(x => expected.SequenceEqual(x.ClosestPointIds)));
        }
Ejemplo n.º 2
0
        public void ClosestPointsFinderCalculateHandler_CallsRun_ForMessage(
            [NotNull, Frozen] ISelkieInMemoryBus bus,
            [NotNull, Frozen] ISettingsManager manager,
            [NotNull, Frozen] IClosestPointsFinder finder,
            [NotNull] ClosestPointsFinderModel sut,
            [NotNull] ClosestIdsCalculateMessage message)
        {
            // Arrange
            SetupSettingsManager(manager);

            // Act
            sut.ClosestPointsFinderCalculateHandler(message);

            // Assert
            finder.Received().Run(Arg.Is <IApplicationArguments>(x => x.Source == "Test.txt" &&
                                                                 x.NumberOfClosestPoints == 3 &&
                                                                 x.QueryPointCoordinates == "1 2 3" &&
                                                                 x.ShiftPointCoordinates == "4 5 6"));
        }
        internal void ClosestPointsFinderCalculateHandler(ClosestIdsCalculateMessage message)
        {
            // todo avoid converting to string, use a different class to configure (the app was original developed as a console application)
            string queryPointCoordinates = "{0} {1} {2}".Inject(m_Manager.QueryPoint.X,
                                                                m_Manager.QueryPoint.Y,
                                                                m_Manager.QueryPoint.Z);

            string shiftPointCoordinates = "{0} {1} {2}".Inject(m_Manager.ShiftPoint.X,
                                                                m_Manager.ShiftPoint.Y,
                                                                m_Manager.ShiftPoint.Z);

            var arguments = new ApplicationArguments
            {
                Source = m_Manager.Filename,                 // todo Source should be named Filename
                NumberOfClosestPoints = m_Manager.NumberOfClosestPoints,
                QueryPointCoordinates = queryPointCoordinates,
                ShiftPointCoordinates = shiftPointCoordinates
            };

            m_Finder.Run(arguments);

            SendClosestIdsChangedMessage();
        }
Ejemplo n.º 4
0
        internal void SendClosestIdsCalculateMessage()
        {
            var message = new ClosestIdsCalculateMessage();

            m_Bus.PublishAsync(message);
        }