public void TestMissingValues()
        {
            var contact = new Contact("Jim", "Does", "*****@*****.**", "Lollipops", "837773");
            var dataSet = new Dataset(new Site(4, "New Site", "Tim Jones", contact, contact, new GPSCoords(0, 0, "argis")));

            var sensor = new Sensor("Dummy Sensor", "Does stuff", 10, 0, "C", 5, dataSet);

            sensor.AddState(new SensorState(sensor, DateTime.Now));
            sensor.CurrentState.Values.Add(new DateTime(1990, 5, 1, 4, 0, 0), 15);
            sensor.CurrentState.Values.Add(new DateTime(1990, 5, 1, 5, 0, 0), 15);
            sensor.CurrentState.Values.Add(new DateTime(1991, 8, 2, 0, 0, 0), 15);

            dataSet.AddSensor(sensor);

            dataSet.DataInterval = 60;

            dataSet.HighestYearLoaded = 1;

            Assert.AreEqual(60, dataSet.DataInterval);

            var missingValues = missingValuesDetector.GetDetectedValues(sensor);

            for (var i = new DateTime(1990, 5, 1, 6, 0, 0); i < new DateTime(1991, 8, 2, 0, 0, 0); i = i.AddHours(1))
            {
                Assert.Contains(new ErroneousValue(i, missingValuesDetector, sensor), missingValues);
            }
        }
Exemplo n.º 2
0
        //[Test] Limit no longer applied as we don't save the undo/redo stack
        public void AddStateMaximumFiveEntries()
        {
            var s = new Sensor("Temperature", "C");
            s.AddState(new SensorState(s, DateTime.Now));
            s.AddState(new SensorState(s, DateTime.Now));
            s.AddState(new SensorState(s, DateTime.Now));
            s.AddState(new SensorState(s, DateTime.Now));
            s.AddState(new SensorState(s, DateTime.Now));
            s.AddState(new SensorState(s, DateTime.Now));
            s.AddState(new SensorState(s, DateTime.Now));

            Assert.AreEqual(5, s.UndoStates.Count);
        }
Exemplo n.º 3
0
        public void ExportAsCSVCorrectValueCount()
        {
            var dateTime = new DateTime(2011, 8, 4, 0, 0, 0);
            var givenDataSet = new Dataset(new Site(1, "Steven", "Kerry", Contact, Contact, new GPSCoords(0, 0, "arcGis")));
            var sampleData = new Dictionary<DateTime, float> { { dateTime.AddMinutes(15), 100 }, { dateTime.AddMinutes(30), 100 }, { dateTime.AddMinutes(45), 100 }, { dateTime.AddMinutes(60), 100 } };
            var s = new Sensor("Awesome Sensor", "Awesome");
            var ss = new SensorState(s, DateTime.Now, sampleData, null);
            s.AddState(ss);
            givenDataSet.AddSensor(s);

            Assert.AreEqual(4, givenDataSet.ExpectedDataPointCount);

            dateTime = new DateTime(2011, 8, 4, 0, 0, 0);
            givenDataSet = new Dataset(new Site(1, "Steven", "Kerry", Contact, Contact, new GPSCoords(0, 0, "arcGis")));

            sampleData = new Dictionary<DateTime, float> { { dateTime.AddMinutes(60), 100 }, { dateTime.AddMinutes(75), 100 }, { dateTime.AddMinutes(90), 100 }, { dateTime.AddMinutes(105), 100 } };
            s = new Sensor("Awesome Sensor", "Awesome");
            ss = new SensorState(s, DateTime.Now, sampleData, null);
            s.AddState(ss);
            givenDataSet.AddSensor(s);

            Assert.AreEqual(4, givenDataSet.ExpectedDataPointCount);
        }
Exemplo n.º 4
0
        public void ValidUndoStatesAfterRedo()
        {
            var redoSensor = new Sensor("Temperature", "C");

            var correctStackItem = new SensorState(redoSensor, new DateTime(2011, 7, 5, 22, 47, 0), new Dictionary<DateTime, float> { { new DateTime(2010, 5, 5, 22, 00, 0), 22.5f }, { new DateTime(2010, 5, 5, 22, 15, 0), 21.4f }, { new DateTime(2010, 5, 5, 22, 30, 0), 22.0f } }, null);
            var correctStackItemTwo = new SensorState(redoSensor, new DateTime(2011, 7, 9, 22, 47, 0), new Dictionary<DateTime, float> { { new DateTime(2010, 5, 5, 22, 00, 0), 22.5f }, { new DateTime(2010, 5, 5, 22, 15, 0), 21.4f }, { new DateTime(2010, 5, 5, 22, 30, 0), 22.0f } }, null);

            redoSensor.AddState(correctStackItem);
            redoSensor.AddState(correctStackItemTwo);

            redoSensor.Undo();

            Assert.AreEqual(correctStackItem, redoSensor.CurrentState);

            redoSensor.Redo();

            Assert.AreEqual(1, redoSensor.UndoStates.Count);
        }
Exemplo n.º 5
0
        public void ValidUndoStatesAfterMultilevelRedo()
        {
            _undoSensor = new Sensor("Temperature", "C");

            var correctStack = new Stack<SensorState>();
            correctStack.Push(new SensorState(_undoSensor, new DateTime(2011, 8, 12),
                                                       new Dictionary<DateTime, float> { { new DateTime(2011, 8, 12), 66.77f } }, null));
            correctStack.Push(new SensorState(_undoSensor, new DateTime(2011, 8, 11),
                                            new Dictionary<DateTime, float> { { new DateTime(2011, 8, 12), 66.77f } }, null));
            correctStack.Push(new SensorState(_undoSensor, new DateTime(2011, 8, 12),
                                new Dictionary<DateTime, float> { { new DateTime(2011, 8, 12), 64.77f } }, null));

            _undoSensor.AddState(new SensorState(_undoSensor, new DateTime(2011, 8, 11),
                                                       new Dictionary<DateTime, float> { { new DateTime(2011, 8, 12), 66.77f } }, null));
            _undoSensor.AddState(new SensorState(_undoSensor, new DateTime(2011, 8, 12),
                                            new Dictionary<DateTime, float> { { new DateTime(2011, 8, 12), 66.77f } }, null));
            _undoSensor.AddState(new SensorState(_undoSensor, new DateTime(2011, 8, 12),
                                new Dictionary<DateTime, float> { { new DateTime(2011, 8, 12), 64.77f } }, null));

            _undoSensor.Undo();
            _undoSensor.Undo();

            Assert.AreEqual(2, _undoSensor.RedoStates.Count);
            Assert.AreEqual(0, _undoSensor.UndoStates.Count);

            _undoSensor.Redo();
            _undoSensor.Redo();

            Assert.AreEqual(0, _undoSensor.RedoStates.Count);
            Assert.AreEqual(2, _undoSensor.UndoStates.Count);
        }
Exemplo n.º 6
0
        public void UndoToParticularState()
        {
            var s = new Sensor("Temperature", "C");
            var baseDate = new DateTime(2011, 7, 7, 12, 15, 0);

            s.AddState(new SensorState(s, baseDate));
            s.AddState(new SensorState(s, baseDate.AddMinutes(15)));
            s.AddState(new SensorState(s, baseDate.AddMinutes(30)));
            s.AddState(new SensorState(s, baseDate.AddMinutes(45)));
            s.AddState(new SensorState(s, baseDate.AddMinutes(60)));
            s.AddState(new SensorState(s, baseDate.AddMinutes(75)));
            s.AddState(new SensorState(s, baseDate.AddMinutes(90)));
            s.AddState(new SensorState(s, baseDate.AddMinutes(105)));

            s.Undo(baseDate.AddMinutes(75));

            Assert.AreEqual(2, s.RedoStates.Count);
            Assert.AreEqual(baseDate.AddMinutes(90), s.RedoStates[0].EditTimestamp);
            Assert.AreEqual(baseDate.AddMinutes(105), s.RedoStates[1].EditTimestamp);
        }
Exemplo n.º 7
0
        //[Test] Limit no longer applied as we don't save the undo/redo stack
        public void UndoStackPushesCorrectEntriesAndMaxFive()
        {
            var s = new Sensor("Temperature", "C");
            var baseDate = new DateTime(2011, 7, 7, 12, 15, 0);

            s.AddState(new SensorState(s, baseDate));
            Assert.AreEqual(baseDate, s.UndoStates[0].EditTimestamp);

            s.AddState(new SensorState(s, baseDate.AddMinutes(15)));
            Assert.AreEqual(baseDate.AddMinutes(15), s.UndoStates[0].EditTimestamp);

            s.AddState(new SensorState(s, baseDate.AddMinutes(30)));
            Assert.AreEqual(baseDate.AddMinutes(30), s.UndoStates[0].EditTimestamp);

            s.AddState(new SensorState(s, baseDate.AddMinutes(45)));
            Assert.AreEqual(baseDate.AddMinutes(45), s.UndoStates[0].EditTimestamp);

            s.AddState(new SensorState(s, baseDate.AddMinutes(60)));
            Assert.AreEqual(baseDate.AddMinutes(60), s.UndoStates[0].EditTimestamp);

            // Now, for the real test of the method...
            s.AddState(new SensorState(s, baseDate.AddMinutes(75)));
            Assert.AreEqual(baseDate.AddMinutes(75), s.UndoStates[0].EditTimestamp);
            Assert.AreEqual(baseDate.AddMinutes(15), s.UndoStates[4].EditTimestamp);

            s.AddState(new SensorState(s, baseDate.AddMinutes(90)));
            Assert.AreEqual(baseDate.AddMinutes(90), s.UndoStates[0].EditTimestamp);
            Assert.AreEqual(baseDate.AddMinutes(30), s.UndoStates[4].EditTimestamp);
        }
Exemplo n.º 8
0
        //[Test] Limit no longer applied as we don't save the undo/redo stack
        public void UndoRedoStackMaximumFiveEntries()
        {
            var s = new Sensor("Temperature", "C");

            s.AddState(new SensorState(s, DateTime.Now));
            s.AddState(new SensorState(s, DateTime.Now));
            s.AddState(new SensorState(s, DateTime.Now));
            s.AddState(new SensorState(s, DateTime.Now));
            s.AddState(new SensorState(s, DateTime.Now));
            s.AddState(new SensorState(s, DateTime.Now));
            s.AddState(new SensorState(s, DateTime.Now));

            Assert.AreEqual(5, s.UndoStates.Count);
            Assert.AreEqual(0, s.RedoStates.Count);

            s.Undo();
            s.Undo();
            s.Undo();
            s.Undo();

            // Since the top of the undo stack is the current state, we must have at least one item left on the undo stack...
            Assert.AreEqual(1, s.UndoStates.Count); // This is the real test
            Assert.AreEqual(4, s.RedoStates.Count);

            s.Redo();
            s.Redo();
            s.Redo();
            s.Redo();

            Assert.AreEqual(5, s.UndoStates.Count); // This is the real test
            Assert.AreEqual(0, s.RedoStates.Count);
        }
Exemplo n.º 9
0
        public void Setup()
        {
            _testUndoStates = new Stack<SensorState>();

            var testState = new SensorState(null, new DateTime(2010, 5, 7, 18, 42, 0));
            var secondaryTestState = new SensorState(null, new DateTime(2010, 12, 18, 5, 22, 0));

            _testUndoStates.Push(testState);
            _testUndoStates.Push(secondaryTestState);

            _secondUndoStates = new Stack<SensorState>();
            _secondUndoStates.Push(new SensorState(null, new DateTime(2005, 4, 3, 2, 1, 0)));
            _secondUndoStates.Push(new SensorState(null, new DateTime(2005, 4, 4, 2, 1, 0)));

            _tempSensor = new Sensor("Temperature", "C");

            // Initialise sensors for undo testing
            _undoSensor = new Sensor("Temperature", "C");
            _undoSensor.AddState(new SensorState(_undoSensor, new DateTime(2011, 8, 11),
                                                       new Dictionary<DateTime, float> { { new DateTime(2011, 8, 12), 66.77f } }, null));
            _undoSensor.AddState(new SensorState(_undoSensor, new DateTime(2011, 8, 12),
                                            new Dictionary<DateTime, float> { { new DateTime(2011, 8, 12), 66.77f } }, null));

            _secondUndoSensor = new Sensor("Temperature", "C");
            _secondUndoSensor.AddState(new SensorState(_secondUndoSensor, new DateTime(2011, 3, 11),
                                                       new Dictionary<DateTime, float> { { new DateTime(2011, 8, 12), 66.77f } }, null));
            _secondUndoSensor.AddState(new SensorState(_secondUndoSensor, new DateTime(2011, 3, 12),
                                            new Dictionary<DateTime, float> { { new DateTime(2011, 8, 12), 66.77f } }, null));

            _sensorEmpty = new Sensor("Temperature", "C");
            _ds = new Dataset(new Site(10, "Lake", "Bob Smith", contact, contact, new GPSCoords(50, 50, "argis")));
            _ds2 = new Dataset(new Site(10, "Lake Awesome", "Andy Smith", contact, contact, new GPSCoords(70, 30, "argis")));

            _sensor1 = new Sensor("Temperature", "Temperature at 10m", 100, 20, "°C", 0.003f, _ds);
            _sensor2 = new Sensor("DO", "Dissolved Oxygen in the water", 50, 0, "%", 5.6f, _ds2);
        }
Exemplo n.º 10
0
        public void SetUndoStates()
        {
            var testSensor = new Sensor(_testName, _testDescription, _testUpperLimit, _testLowerLimit, _testUnit, _testMaxRateOfChange, new Stack<SensorState>(), _blankStack, _blankCalibrationDates, _ds);

            var secondStates = _secondUndoStates.Reverse();

            foreach (SensorState s in secondStates)
                testSensor.AddState(s);

            Assert.AreEqual(_secondUndoStates.SkipWhile((x, index) => index == 0).ToList(), testSensor.UndoStates);

            // Reset
            testSensor = new Sensor(_testName, _testDescription, _testUpperLimit, _testLowerLimit, _testUnit, _testMaxRateOfChange, _testUndoStates, _blankStack, _blankCalibrationDates, _ds);

            var testUndo = _testUndoStates.Reverse();

            foreach (SensorState s in testUndo)
                testSensor.AddState(s);

            Assert.AreEqual(_testUndoStates, testSensor.UndoStates);
        }
Exemplo n.º 11
0
        public void RevertToRaw()
        {
            var s = new Sensor("Temperature", "C");
            var baseDate = new DateTime(2011, 5, 5, 12, 15, 0);
            var original = new SensorState(s, new Dictionary<DateTime, float>() { { baseDate.AddMinutes(15), 20 }, { baseDate.AddMinutes(30), 40 }, { baseDate.AddMinutes(45), 60 }, { baseDate.AddMinutes(60), 80 } }, null);

            var newValues = new SensorState(s, new Dictionary<DateTime, float>() { { baseDate.AddMinutes(15), 20 }, { baseDate.AddMinutes(30), 40 }, { baseDate.AddMinutes(45), 60 }, { baseDate.AddMinutes(60), 1000 } }, null);

            foreach (KeyValuePair<DateTime, float> kv in original.Values)
                s.RawData.Values.Add(kv.Key, kv.Value);

            s.AddState(newValues);
            s.RevertToRaw();

            Assert.AreEqual(s.CurrentState, original);
        }
 public void SetUp()
 {
     _detector = new RunningMeanStandardDeviationDetector { SmoothingPeriod = 240, NumberOfStandardDeviations = 0.5f };
     _sensor = new Sensor("Test Sensor", "Used in testing", 100, 10, "Unit", 5, new Dataset(null) { DataInterval = 60 });
     _sensor.AddState(new SensorState(_sensor, DateTime.Now));
     _sensor.CurrentState.Values.Add(DateTime.Now.AddHours(1), 5);
     _sensor.CurrentState.Values.Add(DateTime.Now.AddHours(2), 5);
     _sensor.CurrentState.Values.Add(DateTime.Now.AddHours(3), 5);
     _erroneousValue = new ErroneousValue(DateTime.Now.AddHours(4), 600, _sensor);
     _sensor.CurrentState.Values.Add(_erroneousValue.TimeStamp, _erroneousValue.Value);
     _sensor.CurrentState.Values.Add(DateTime.Now.AddHours(5), 5);
     _sensor.CurrentState.Values.Add(DateTime.Now.AddHours(6), 5);
     _sensor.CurrentState.Values.Add(DateTime.Now.AddHours(7), 5);
 }
Exemplo n.º 13
0
        public void SetUp()
        {
            var rawSensor = new Sensor("Temperature", "Temperature at 30m", 40, 20, "C", 20, null);

            rawSensor.AddState(new SensorState(rawSensor, DateTime.Now));

            _baseDate = DateTime.Now;

            rawSensor.CurrentState.Values.Add(_baseDate, 15);
            rawSensor.CurrentState.Values.Add(_baseDate.AddMinutes(15), 20);
            rawSensor.CurrentState.Values.Add(_baseDate.AddMinutes(30), 25);

            _gSensor = new GraphableSensor(rawSensor);
        }
Exemplo n.º 14
0
        public void ExportCSVWithIndividualDateColumns()
        {
            var dateTime = new DateTime(2011, 8, 4, 0, 0, 0);
            var givenDataSet = new Dataset(new Site(1, "Steven", "Kerry", Contact, Contact, new GPSCoords(0, 0, "arcGis")));
            var sampleData = new Dictionary<DateTime, float> { { dateTime.AddMinutes(15), 100 }, { dateTime.AddMinutes(30), 100 }, { dateTime.AddMinutes(45), 100 }, { dateTime.AddMinutes(60), 100 } };
            var s = new Sensor("Awesome Sensor", "Awesome");
            var ss = new SensorState(s, DateTime.Now, sampleData, null);
            s.AddState(ss);
            givenDataSet.AddSensor(s);

            DatasetExporter.Export(givenDataSet, _outputFilePath, ExportFormat.CSV, true, false, false, ExportedPoints.AllPoints, DateColumnFormat.OneDateColumn, loadInUnloadedValues: false);

            Assert.AreEqual(DatasetOutputWithIndividualColumns, File.ReadAllText(_outputFilePath));
        }