//----------------------------------------------------------------------- // // Copyright (c) 2012 Deltares. All rights reserved. // // B. Faassen // barry.faassen@deltares.nl // // n.a. //----------------------------------------------------------------------- using System; using System.Linq; using Deltares.Dam.Data; using Deltares.Dam.Data.Sensors; using NUnit.Framework; using Group = Deltares.Dam.Data.Sensors.Group; namespace Deltares.Dam.Tests.Sensors { [TestFixture] public class SensorRepositoryTest { #region Setup [TestFixtureSetUp] public void FixtureSetup() { } [TestFixtureTearDown] public void FixtureTearDown() { } [SetUp] public void TestSetup() { } [TearDown] public void TestTearDown() { } #endregion [Test] public void AddNew_TransientSensor_SensorIsAddedToRepositoryAndIsNotTransient() { // setup using (var location = new Location("test")) { var repository = new SensorRepository(location); // call Sensor sensor = repository.AddNew(); // assert Assert.IsNotNull(sensor); Assert.IsFalse(sensor.IsTransient(), "The sensor ID is transient. This should not be the case when added to the repository"); Assert.AreEqual(1, repository.Sensors.Count()); } } [Test] [ExpectedException(typeof(ArgumentException))] public void Add_SensorWithSameID_Throws() { // setup using (var location = new Location("test")) { var repository = new SensorRepository(location); var sensor1 = new Sensor() { ID = 1, Name = "test1" }; var sensor2 = new Sensor() { ID = 1, Name = "test2" }; // call repository.Add(sensor1); // assert repository.Add(sensor2); // throws } } [Test] [ExpectedException(typeof(ArgumentException))] public void Add_SensorWithSameName_Throws() { // setup using (var location = new Location("test")) { var repository = new SensorRepository(location); var sensor1 = new Sensor { ID = 1, Name = "test1" }; var sensor2 = new Sensor { ID = 2, Name = "test1" }; // call repository.Add(sensor1); // assert repository.Add(sensor2); // throws } } /// /// Test was setup because of issues with serializing and deserializing the state of the /// repository /// [Test] public void SerializeDeserialize_ValidRepository_ShouldWorkWithoutExceptions() { // setup using (var location = new Location("test_location_xyz")) { var repository = new SensorRepository(location); const string testSensorXyz = "test_sensor_xyz"; var sensor = new Sensor { ID = 1, Name = testSensorXyz }; sensor.Add(PLLineType.PL1); // call repository.Add(sensor); repository.AddNew(); string xml = repository.Serialize(); var newRepo = SensorRepository.Deserialize(xml); // assert Assert.IsNotEmpty(xml); Assert.AreEqual(repository.Sensors.Count(), newRepo.Sensors.Count()); Assert.IsTrue(repository.Sensors.Any(s => s.Name == testSensorXyz && s.ID == 1 && s.PLLineMappings.Any(p => p == PLLineType.PL1))); } } } }