コード例 #1
0
        public async Task move_should_stop_at_the_edge_of_the_garden(char orientation, int expectedY, int expectedX)
        {
            IPosition setting = new DevicePosition(5, 5, orientation) as IPosition;

            _initialSettingsMock.Setup(x => x.DevicePosition).Returns(setting);
            _buffer = new DeviceBuffer();
            _device = new SLMMDevice(_initialSettingsMock.Object, _buffer, _actuator);

            var position = _device.CurrentPosition();

            _device.Move();
            _device.Move();
            _device.Move();
            _device.Move();
            _device.Move();
            _device.Move();
            _device.Move();
            _device.Move();
            _device.Move();
            IPosition newPosition = await _device.Move();

            Assert.AreEqual(expectedY, newPosition.YAxis);
            Assert.AreEqual(expectedX, newPosition.XAxis);
            Assert.AreEqual(orientation, newPosition.Orientation);
        }
コード例 #2
0
        private static Mock <ISettings> SetInitialSettingsMock(int gardenLenght, int gardenWidth, int yAxis, int xAxis, char orientation)
        {
            var configurationMock = new Mock <IConfiguration>();
            var settings          = new Mock <ISettings>();

            var gardenSize = new GardenSize(gardenLenght, gardenWidth);

            settings.Setup(x => x.GardenSize).Returns(gardenSize as ISize);

            var devicePosition = new DevicePosition(yAxis, xAxis, orientation);

            settings.SetupGet(x => x.DevicePosition).Returns(devicePosition as IPosition);
            return(settings);
        }
コード例 #3
0
        private void TrackBarTempo_Scroll(object sender, EventArgs e)
        {
            DevicePosition position = CachedDevicePosition.cache[trackBarTempo.Value];

            lblValoreSelezionatoTrackBar.Text = "Valore selezionato: " + position.time.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss");

            //ripulisco i punti del grafico del movimento
            chartMovimentoDevice.Series["Device"].Points.Clear();

            //aggiungo la nuova posizione
            int p = chartMovimentoDevice.Series["Device"].Points.AddXY(position.xPosition, position.yPosition);

            chartMovimentoDevice.Series["Device"].Points[p].ToolTip = position.time.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss");
        }
コード例 #4
0
        public async Task be_able_turn_90_degrees_clockwise(char currentOrientation, char expectedOrientation)
        {
            // arrange

            IPosition setting = new DevicePosition(5, 5, currentOrientation) as IPosition;

            _initialSettingsMock.Setup(x => x.DevicePosition).Returns(setting);
            _buffer = new DeviceBuffer();
            _device = new SLMMDevice(_initialSettingsMock.Object, _buffer, _actuator);

            // act
            var position = await _device.TurnClockwise();

            // assert
            Assert.AreEqual(expectedOrientation, position.Orientation);
        }
コード例 #5
0
        public async Task move_one_step_forward(char orientation, int expectedY, int expectedX)
        {
            // garden: 0 x 0 -> 10 x 10
            // starts at: 'N', y:5, x:5
            // expects: 'N', y + 1 = 6, x

            IPosition setting = new DevicePosition(5, 5, orientation) as IPosition;

            _initialSettingsMock.Setup(x => x.DevicePosition).Returns(setting);
            _buffer = new DeviceBuffer();
            _device = new SLMMDevice(_initialSettingsMock.Object, _buffer, _actuator);

            var position = _device.CurrentPosition();

            IPosition newPosition = await _device.Move();

            Assert.AreEqual(expectedY, newPosition.YAxis);
            Assert.AreEqual(expectedX, newPosition.XAxis);
            Assert.AreEqual(orientation, newPosition.Orientation);
        }
コード例 #6
0
        public async Task be_able_turn_anti_clockwise_in_sequence(char start, int numberTurns, char expected)
        {
            // arrange
            IPosition setting = new DevicePosition(5, 5, start) as IPosition;

            _initialSettingsMock.Setup(x => x.DevicePosition).Returns(setting);
            _buffer = new DeviceBuffer();
            _device = new SLMMDevice(_initialSettingsMock.Object, _buffer, _actuator);

            IPosition position = _device.CurrentPosition();

            // act
            for (int i = 0; i < numberTurns; i++)
            {
                position = await _device.TurnCounterClockwise();
            }

            // assert
            Assert.AreEqual(expected, position.Orientation);
        }
コード例 #7
0
        private void BoxDevice_SelectedIndexChanged(object sender, EventArgs e)
        {
            string   device  = boxDevice.Text;
            DateTime dateMin = dateTimePickerDateMin.Value.ToUniversalTime();
            DateTime dateMax = dateTimePickerDateMax.Value.ToUniversalTime();

            CachedDevicePosition.cache.Clear();

            int i = 0;

            foreach (DevicePosition position in dbManager.deviceMovement(device, dateMin, dateMax))
            {
                CachedDevicePosition.cache.Add(i, position);
                i++;
            }

            trackBarTempo.Enabled                = true;
            lblValoreMassimoTrackbar.Visible     = true;
            lblValoreMinimoTrackbar.Visible      = true;
            lblValoreSelezionatoTrackBar.Visible = true;

            trackBarTempo.Minimum = 0;
            trackBarTempo.Maximum = CachedDevicePosition.cache.Count - 1;
            trackBarTempo.Value   = CachedDevicePosition.cache.Count - 1;

            lblValoreMinimoTrackbar.Text      = "Valore minimo: " + CachedDevicePosition.cache[0].time.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss");
            lblValoreMassimoTrackbar.Text     = "Valore massimo: " + CachedDevicePosition.cache[CachedDevicePosition.cache.Count - 1].time.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss");
            lblValoreSelezionatoTrackBar.Text = "Valore selezionato: " + CachedDevicePosition.cache[CachedDevicePosition.cache.Count - 1].time.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss");

            //disegno il primo punto
            //ripulisco i punti del grafico del movimento
            chartMovimentoDevice.Series["Device"].Points.Clear();

            DevicePosition devicePosition = CachedDevicePosition.cache[CachedDevicePosition.cache.Count - 1];

            //aggiungo la nuova posizione
            int p = chartMovimentoDevice.Series["Device"].Points.AddXY(devicePosition.xPosition, devicePosition.yPosition);

            chartMovimentoDevice.Series["Device"].Points[p].ToolTip = devicePosition.time.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss");
        }
コード例 #8
0
        internal DevicePosition[] loadDevicesPositions(string roomName, DateTime fromdate, string fromtime, DateTime todate, string totime)
        {
            LinkedList <DevicePosition>         li     = new LinkedList <DevicePosition>();
            Dictionary <String, DevicePosition> prepos = new Dictionary <String, DevicePosition>();

            using (ConnectionHandle conn = new ConnectionHandle(connectionpool, connectionstring, false))
            {
                String query = "select identifier,xpos,ypos,tm,outmovement,uncertainty from devicespositions where roomname=@roomname and tm>=@tmstart and tm<=@tmend order by tm asc";
                try
                {
                    if (!connectioncheck(conn))
                    {
                        throw new Exception("Connection is not open");
                    }
                    using (var cmd = new NpgsqlCommand(query, conn.conn))
                    {
                        addParameters(cmd,
                                      "roomname", roomName,
                                      "tmstart", new DateTime(fromdate.Year, fromdate.Month, fromdate.Day, Convert.ToInt32(fromtime.Split(':')[0]), Convert.ToInt32(fromtime.Split(':')[1]), 0),
                                      "tmend", new DateTime(todate.Year, todate.Month, todate.Day, Convert.ToInt32(totime.Split(':')[0]), Convert.ToInt32(totime.Split(':')[1]), 0));
                        using (var reader = cmd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                DevicePosition dp = new DevicePosition();
                                DevicePosition dp2;
                                dp.identifier   = reader.GetString(0);
                                dp.xpos         = reader.GetDouble(1);
                                dp.ypos         = reader.GetDouble(2);
                                dp.timestamp    = reader.GetDateTime(3);
                                dp.moveout      = reader.GetBoolean(4);
                                dp.uncertainity = reader.GetDouble(5);
                                if (prepos.TryGetValue(dp.identifier, out dp2))
                                {
                                    dp.prexpos            = dp2.xpos;
                                    dp.preypos            = dp2.ypos;
                                    prepos[dp.identifier] = dp;
                                }
                                else
                                {
                                    dp.prexpos = -1;
                                    dp.preypos = -1;
                                    prepos.Add(dp.identifier, dp);
                                }
                                if (dp.moveout)
                                {
                                    prepos.Remove(dp.identifier);
                                }
                                li.AddLast(dp);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    manageDbException(ex, conn.conn, true);
                    return(null);
                }
            }
            return(li.ToArray <DevicePosition>());
        }