public void ProcessSensorsTest()
		{
			double temp = 20;
			double humd = 22.1;
			double pressure = 52.2;
			int deviceId = 23;
			using(var context = new MockContext())
			{
				var sensor = new StubITemperatureSensor();
				sensor.GetTemperatureCelsius(() => temp);
				sensor.GetHumidity(() => humd);
				sensor.GetPressure(() => pressure);

				var appSetting = new StubIAppSettings();
				appSetting.DeviceId_Get(() => deviceId);
				IAppSettings aSett = appSetting;

				var controller = new ThermostatController(context, sensor, appSetting);
				DateTimeOffset before = DateTimeOffset.Now;
				controller.ProcessSensors();
				DateTimeOffset after = DateTimeOffset.Now;

				Assert.AreEqual(1, context.TemperatureEntries.Count());

				var first = context.TemperatureEntries.FirstOrDefault();
				Assert.AreNotEqual(Guid.Empty, first.Id);
				Assert.AreEqual(temp, first.TemperatureCelsius);
				Assert.AreEqual(humd, first.Humidity);
				Assert.AreEqual(pressure, first.Pressure);
				Assert.AreEqual(aSett.DeviceId, first.DeviceId);
				Assert.AreEqual(false, first.Synced);
				Assert.IsTrue(first.CreatedDateTime >= before && first.CreatedDateTime <= after);

			}
		}
Esempio n. 2
0
		private void canceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
		{
			deferral.Complete();
			deferral = null;
			timer.Tick -= timerTick;
			timer = null;
			controller = null;
		}
Esempio n. 3
0
		public void Run(IBackgroundTaskInstance taskInstance)
		{
			// 
			// TODO: Insert code to perform background work
			//
			// If you start any asynchronous methods here, prevent the task
			// from closing prematurely by using BackgroundTaskDeferral as
			// described in http://aka.ms/backgroundtaskdeferral
			//
			taskInstance.Canceled += canceled;
			deferral = taskInstance.GetDeferral();
			container = new SimpleContainer();
			container.Singleton<ThermostatController>();
			container.Singleton<IAppSettings, AppSettings>();
			container.Singleton<IServerContext, ServerContext>();

			controller = container.GetInstance<ThermostatController>();

			timer = new DispatcherTimer();
			timer.Tick += timerTick;
			timer.Interval = TimeSpan.FromSeconds(10);
			timer.Start();
		}