public void TestNotificationReceived() { var connection = Mock.Create <IConnection>(); //setting mock Mock.Arrange(() => connection.WriteValue(Arg.IsAny <byte[]>())).Returns((byte[] b) => true); var sensor = new DistanceColorSensor(connection, Ports.PORT_D); sensor.OnChange += Changes; _expectedResult = new DistanceColorSensorEventArgs { ColorDetected = Color.Red, Distance = 2, Partial = 0.5 }; var data = new byte[] { 0, 0, 0, 0, (byte)_expectedResult.ColorDetected, (byte)_expectedResult.Distance, 0, (byte)(1.0 / _expectedResult.Partial) }; sensor.SetMode(DistanceColorSensorMods.COLOR_DISTANCE_FLOAT); sensor.FireEvent(data); Assert.True(_success); }
internal void FireEvent(byte[] data) { DistanceColorSensorEventArgs args = new DistanceColorSensorEventArgs(); var handler = OnChange; if (handler == null) { return; } switch (_mode) { case DistanceColorSensorMods.COLOR_ONLY: args.ColorDetected = (Color)data[4]; break; case DistanceColorSensorMods.DISTANCE_INCHES: case DistanceColorSensorMods.DISTANCE_HOW_CLOSE: case DistanceColorSensorMods.DISTANCE_SUBINCH_HOW_CLOSE: args.Distance = data[4]; break; case DistanceColorSensorMods.COUNT_2INCH: args.Count = data[4]; break; case DistanceColorSensorMods.COLOR_DISTANCE_FLOAT: { args.ColorDetected = (Color)data[4]; args.Distance = data[5]; args.Partial = data[7] == 0 ? 0 : 1.0 / data[7]; break; } case DistanceColorSensorMods.LUMINOSITY: args.Luminosity = (double)data[4] / 1023.0; break; } handler.Invoke(this, args); LoggerHelper.Instance.Debug("DistanceColorSensor::FireEvent OnChange"); }
private void Changes(object sender, DistanceColorSensorEventArgs e) { _success = (e.Distance == _expectedResult.Distance) && (e.ColorDetected == _expectedResult.ColorDetected) && (Math.Abs(e.Partial - _expectedResult.Partial) < 0.01); }