public override string ToString() { string output = $"MMSI: {MMSI} Type: {MessageType} "; switch (MessageType) { case 1: case 2: case 3: output += PositionReport?.ToString(); break; case 4: output += BaseStationReport?.ToString(); break; case 5: output += VoygageReport?.ToString(); break; default: output += "unsupported messagetype"; break; } return(output); }
public void SaveExistingTest( [Values(15.0, null)] double?latitude, [Values(42.0, null)] double?longitude, [Values(false, true)] bool setPositionDateTime) { var editMode = EditMode.Edit; var positionDateTime = setPositionDateTime ? new DateTime?(new DateTime(2001, 1, 1)) : null; var positionReportID = "TestPositionReportID"; var comment = "A position report comment"; var position = latitude != null && longitude != null ? new Position(latitude.Value, longitude.Value) : null; var positionReport = new PositionReport(); positionReport.ID = positionReportID; positionReport.Comment = ""; _positionReportRepositoryMock.Expect(r => r.Get(positionReportID)).Return(positionReport); _positionReportRepositoryMock.Expect( r => r.SubmitChanges()) .WhenCalled( b => VerifyPositionReport(positionReport, positionReportID, positionDateTime, comment, position)); var result = TestedController.Save(editMode, positionReportID, positionDateTime, comment, latitude, longitude); VerifyRedirectToRouteResult(result, expectedAction: "Index"); }
public static AisMessage DecodeAisString(string armoredString) { var aisMsg = new AisMessage(); string binary = DecodeVDXArmoredString(armoredString); aisMsg.MessageType = Convert.ToInt32(binary.Substring(0, 6), 2); aisMsg.RepeatIndicator = Convert.ToInt32(binary.Substring(6, 2), 2); aisMsg.MMSI = Convert.ToInt32(binary.Substring(8, 30), 2); switch (aisMsg.MessageType) { case 1: case 2: case 3: aisMsg.PositionReport = PositionReport.CreateFromBinary(binary); break; case 4: aisMsg.BaseStationReport = BaseStationReport.CreateFromBinary(binary); break; case 5: aisMsg.VoygageReport = VoyageReport.CreateFromBinary(binary); break; } return(aisMsg); }
/// <summary> /// PositionReport message handler /// </summary> private void OnPositionReport(PositionReport message) { if (message.getAccount() == _accountId) { var fxcmPositionId = message.getFXCMPosID(); if (_openPositions.ContainsKey(fxcmPositionId) && message is ClosedPositionReport) { _openPositions.Remove(fxcmPositionId); } else { _openPositions[fxcmPositionId] = message; } } if (message.getRequestID() == _currentRequest) { AutoResetEvent autoResetEvent; if (message.isLastRptRequested() && _mapRequestsToAutoResetEvents.TryGetValue(_currentRequest, out autoResetEvent)) { autoResetEvent.Set(); _mapRequestsToAutoResetEvents.Remove(_currentRequest); } } }
public async Task <JsonResult> GetPositionByDate(string vehicleId, string start) { var id = Guid.Parse(vehicleId); // var endPeriod = DateTime.Now; var startPeriod = default(DateTime); DateTime.TryParseExact(start, "yyyy-MM-dHH:mm", null, DateTimeStyles.AssumeLocal, out startPeriod); var endPeriod = startPeriod.Date.AddDays(1).AddTicks(-1); var vehicle = await ObjectContext.Vehicles.FindAsync(id); var positions = await _positionService.GetVehiclePositionsByPeriod(id, startPeriod, endPeriod); if (!positions.Any()) { return(Json(new List <TargetViewModel>(), JsonRequestBehavior.AllowGet)); } var gpsCollection = positions.Select(x => new { Latitude = x.Lat, Longitude = x.Long, GpsStatement = x.Timestamp.ToString("O") }); var positionReport = new PositionReport(); var result = positionReport.BuidDailyReport(positions, startPeriod, vehicle.VehicleName); var distance = result.Where(x => x.MotionStatus == "Moving").Sum(x => x.Distance); return(Json(new { Vehiclename = vehicle?.VehicleName, Distance = distance, Periods = result, GpsCollection = gpsCollection }, JsonRequestBehavior.AllowGet)); }
private static void VerifyPositionReport(PositionReport positionReportToVerify, string positionReportID, DateTime?positionDateTime, string comment, Position position) { Assert.AreEqual(positionReportToVerify.ID, positionReportID, "PositionReport ID has been modified."); Assert.AreEqual(positionReportToVerify.PositionDateTime, positionDateTime, "PositionDateTime not set."); Assert.AreEqual(positionReportToVerify.Comment, comment, "Comment not set."); Assert.AreEqual(positionReportToVerify.Position, position, "Position not set."); }
public PositionActivity(int x, int y, int width, int height, PositionReport pType) { this.Position = pType; this.X = x; this.Y = y; this.Width = width; this.Height = height; }
public void ValidateInvalidPowerTrades() { var powerTrades = new PowerTrades { Day = SummerDay, Trades = new[] { PowerTrade.Create(SummerDay.DateTime, 24), PowerTrade.Create(SummerDay.DateTime, 23) } }; Assert.Throws <ArgumentException>(() => PositionReport.ValidateTrades(powerTrades)); }
/// <summary> /// /// </summary> /// <returns></returns> public async Task <JsonResult> AllVehiclesWithLastPosition() { var report = new PositionReport(); var user = User.Identity; var positions = report.PositionViewModels(await _positionService.GetLastVehiclPosition(user.Name)); return(Json(positions, JsonRequestBehavior.AllowGet)); }
public static PositionReport Build() { var report = new PositionReport { SubHeadings = new List <string>(), ValidationErrors = new List <string>(), Groups = new List <PositionReportGroup>(), }; return(report); }
public void BuildPositionOnePowerTrade() { var powerTrade = PowerTrade.Create(SummerDay.DateTime, 24); var trades = new PowerTrades { Day = SummerDay, Trades = new[] { powerTrade } }; var actual = PositionReport.BuildPosition(trades); var expectedPeriods = powerTrade.Periods; Assert.That(actual.Day, Is.EqualTo(trades.Day)); CollectionAssert.AreEqual(expectedPeriods, actual.Periods, new PowerPeriodComparer(0.0001)); }
public void ValidateValidPowerTrades() { var powerTrades = new PowerTrades { Day = SummerDay, Trades = Enumerable.Range(1, 2).Select(i => PowerTrade.Create(SummerDay.DateTime, 24)).ToArray() }; var actual = PositionReport.ValidateTrades(powerTrades); Assert.That(actual.Day, Is.EqualTo(powerTrades.Day)); for (var i = 0; i < powerTrades.Trades.Count(); i++) { CollectionAssert.AreEqual(actual.Trades[i].Periods, powerTrades.Trades[i].Periods, new PowerPeriodComparer(0.0001)); } }
public void WidgetTest() { var positionReport = new PositionReport(); var positionReportListPage = new PagedList <PositionReport>(new [] { positionReport }, 1, 1, 1); _positionReportRepositoryMock.Expect(r => r.ListPublished(1, 1)).Return(positionReportListPage); var result = TestedController.Widget(); VerifyViewResult(result, "LatestPositionsWidget", typeof(PositionReport), positionReport); }
public void CanProcessEventData() { var report = new PositionReport(18, "Ais", new DateTime(2018, 12, 14, 10, 29, 54), 55.4436546, 3.6985412); var processor = new PositionProcessor(); var result = processor.ProcessMessage(report); Assert.NotNull(result); Assert.Equal(4, result.GeoHash.Length); Assert.Equal(report.Longitude, result.Position.Coordinates.Longitude); Assert.Equal(report.Latitude, result.Position.Coordinates.Latitude); }
public PositionReport Create() { var positionReport = new PositionReport { ID = Guid.NewGuid().ToString(), PositionDateTime = DateTime.Now, WindDirection = 0, WindSpeed = 0, Course = 0, Speed = 0 }; return(positionReport); }
/// <summary> /// Converts an FXCM position to a QuantConnect holding. /// </summary> /// <param name="fxcmPosition">The FXCM position</param> private static Holding ConvertHolding(PositionReport fxcmPosition) { return(new Holding { Symbol = ConvertSymbol(fxcmPosition.getInstrument()), Type = GetSecurityType(fxcmPosition.getInstrument()), AveragePrice = Convert.ToDecimal(fxcmPosition.getSettlPrice()), ConversionRate = 1.0m, CurrencySymbol = "$", Quantity = Convert.ToDecimal(fxcmPosition.getPositionQty().getLongQty() > 0 ? fxcmPosition.getPositionQty().getLongQty() : -fxcmPosition.getPositionQty().getShortQty()) }); }
/// <summary> /// Converts an FXCM position to a QuantConnect holding. /// </summary> /// <param name="fxcmPosition">The FXCM position</param> private static Holding ConvertHolding(PositionReport fxcmPosition) { return new Holding { Symbol = ConvertSymbol(fxcmPosition.getInstrument()), Type = GetSecurityType(fxcmPosition.getInstrument()), AveragePrice = Convert.ToDecimal(fxcmPosition.getSettlPrice()), ConversionRate = 1.0m, CurrencySymbol = "$", Quantity = Convert.ToDecimal(fxcmPosition.getPositionQty().getLongQty() > 0 ? fxcmPosition.getPositionQty().getLongQty() : -fxcmPosition.getPositionQty().getShortQty()) }; }
public void BuildPositionMultiplePowerTrades() { var powerTrade = CreatePowerTrade(SummerDay, 24); var trades = new PowerTrades { Day = SummerDay, Trades = new[] { powerTrade, powerTrade, powerTrade } }; var actual = PositionReport.BuildPosition(trades); var expectedPeriods = powerTrade.Periods.Select(p => new PowerPeriod { Period = p.Period, Volume = p.Volume * 3.0 }).ToArray(); Assert.That(actual.Day, Is.EqualTo(trades.Day)); CollectionAssert.AreEqual(expectedPeriods, actual.Periods, new PowerPeriodComparer(0.0001)); }
/// <summary> /// Converts an FXCM position to a QuantConnect holding. /// </summary> /// <param name="fxcmPosition">The FXCM position</param> private Holding ConvertHolding(PositionReport fxcmPosition) { var securityType = _symbolMapper.GetBrokerageSecurityType(fxcmPosition.getInstrument().getSymbol()); return(new Holding { Symbol = _symbolMapper.GetLeanSymbol(fxcmPosition.getInstrument().getSymbol(), securityType, Market.FXCM), Type = securityType, AveragePrice = Convert.ToDecimal(fxcmPosition.getSettlPrice()), CurrencySymbol = "$", Quantity = Convert.ToDecimal(fxcmPosition.getPositionQty().getLongQty() > 0 ? fxcmPosition.getPositionQty().getLongQty() : -fxcmPosition.getPositionQty().getShortQty()) }); }
public static PositionReport WithSubHeading(this PositionReport source, string value) { if (source.SubHeadings == null) { source.SubHeadings = new List <string> { value }; } else { source.SubHeadings.Add(value); } return(source); }
public static PositionReport WithValidationError(this PositionReport source, string value) { if (source.ValidationErrors == null) { source.ValidationErrors = new List <string> { value }; } else { source.ValidationErrors.Add(value); } return(source); }
public static PositionReport WithGroup(this PositionReport source, PositionReportGroup value) { if (source.Groups == null) { source.Groups = new List <PositionReportGroup> { value }; } else { source.Groups.Add(value); } return(source); }
public PositionActivity(int v1, int v2, PositionReport pType) { this.Position = pType; if ((pType & PositionReport.Moved) == PositionReport.Moved) { this.X = v1; this.Y = v2; } if ((pType & PositionReport.Resized) == PositionReport.Resized) { this.Width = v1; this.Height = v2; } }
public void DeleteTest() { var positionReportID = "TestPositionReportID"; var positionReport = new PositionReport(); positionReport.ID = positionReportID; _positionReportRepositoryMock.Expect(r => r.Get(positionReportID)).Return(positionReport); var result = TestedController.Delete(positionReportID); VerifyViewResult(result, "ConfirmDelete", typeof(PositionReport), positionReport); }
public void AddTest() { var positionReport = new PositionReport(); AddRole("Author"); _positionReportRepositoryMock.Expect(r => r.Create()).Return(positionReport); var result = TestedController.Add(); VerifyViewResult(result, "Edit", typeof(EditPositionReportData)); var resultModel = (EditPositionReportData)((ViewResult)result).ViewData.Model; Assert.That(resultModel.EditMode, Is.EqualTo(EditMode.Add)); Assert.That(resultModel.PositionReport, Is.EqualTo(positionReport)); }
private static PositionReport ProcessMessage(string subject, string messageBody) { var positionReport = new PositionReport(); var positionReportRepositoryMock = MockRepository.GenerateMock <IPositionReportRepository>(); positionReportRepositoryMock.Expect(b => b.Create()).Return(positionReport); positionReportRepositoryMock.Expect(b => b.SubmitChanges()); var parsedMessage = new ParsedMessage("*****@*****.**", "*****@*****.**", subject, messageBody, null); var positionReportMessageProcessor = new PositionReportMessageProcessor(positionReportRepositoryMock); positionReportMessageProcessor.ProcessMessage(parsedMessage); positionReportRepositoryMock.VerifyAllExpectations(); return(positionReport); }
public void SaveDeleteTest() { var positionReportID = "TestPositionReportID"; var positionReport = new PositionReport(); positionReport.ID = positionReportID; _positionReportRepositoryMock.Expect(r => r.Get(positionReportID)).Return(positionReport); _positionReportRepositoryMock.Expect(r => r.Delete(positionReport)); _positionReportRepositoryMock.Expect(r => r.SubmitChanges()); var result = TestedController.SaveDelete(positionReportID); VerifyRedirectToRouteResult(result, expectedAction: "Index"); }
public void TestReportingRoundtripOutThenInPositionReport() { // payment rules abstract type issue var orig = new PositionReport() { fpmlVersion = "5-3", position = new[] { new ReportedPosition() { constituent = new PositionConstituent() { Item = new Trade() { collateral = new Collateral() { independentAmount = new IndependentAmount() { paymentDetail = new[] { new PaymentDetail() { id = "id0", paymentRule = new PercentageRule() { paymentPercentSpecified = true, paymentPercent = 5.0M } } } } } } } } } }; PositionReport copy = Roundtrip_OutThenIn(orig, true, false); // tests Trade trade = (Trade)copy.position[0].constituent.Item; PercentageRule rule = (PercentageRule)trade.collateral.independentAmount.paymentDetail[0].paymentRule; Assert.IsTrue(rule.paymentPercentSpecified); Assert.AreEqual(5.0M, rule.paymentPercent); }
/// <summary> /// /// </summary> /// <param name="vehicleId"></param> /// <returns></returns> public async Task <JsonResult> GetTargetByPeriod(string vehicleId) { var id = Guid.Parse(vehicleId); //var start = var endPeriod = DateTime.Now; var startPeriod = DateTime.Now.Date; var vehicle = await _vehicleService.GetVehicleById(id); var positions = await _positionService.GetVehiclePositionsByPeriod(id, startPeriod, endPeriod); if (!positions.Any()) { return(Json(new List <TargetViewModel>(), JsonRequestBehavior.AllowGet)); } var gpsCollection = positions.Select(x => new { Latitude = x.Lat, Longitude = x.Long, GpsStatement = x.Timestamp.ToString("O") }); var positionReport = new PositionReport(); return(Json(new { Periods = positionReport.BuidDailyReport(positions, startPeriod, vehicle.VehicleName), GpsCollection = gpsCollection }, JsonRequestBehavior.AllowGet)); }
// PositionReport message handler private void OnPositionReport(PositionReport positionReport) { Console.WriteLine("OnPositionReport()"); Console.WriteLine("\tRequestId = {0}", positionReport.getRequestID()); Console.WriteLine("\tgetAccount() = " + positionReport.getAccount()); Console.WriteLine("\tgetInstrument().getSymbol() = " + positionReport.getInstrument().getSymbol()); Console.WriteLine("\tgetCurrency() = " + positionReport.getCurrency()); Console.WriteLine("\tgetPositionQty() = " + positionReport.getPositionQty()); Console.WriteLine("\tgetSettlPrice() = " + positionReport.getSettlPrice()); Console.WriteLine(); if (positionReport.getRequestID() == _currentRequest) { if (positionReport.isLastRptRequested()) { _requestPositionListEvent.Set(); } } }
public void Start() { // Build the computation environment. _environment = new Environment { TokenSource = new CancellationTokenSource(), Interval = TimeSpan.FromMinutes(XmlConvert.ToDouble(ConfigurationManager.AppSettings["schedule-interval-minutes"])), PowerService = new PowerService(), GetTrades = (p, d) => PositionReport.GetTrades(p, d), ValidateTrades = t => PositionReport.ValidateTrades(t), BuildPosition = t => PositionReport.BuildPosition(t), BuildReport = (rs, p) => PositionReport.BuildReport(rs, p), WriteReport = (rs, r) => PositionReport.WriteReport(rs, r), PipelineBufferSize = XmlConvert.ToInt32(ConfigurationManager.AppSettings["pipeline-buffer-size"]), ReportSpecification = new ReportSpecification { FilenameFormat = ConfigurationManager.AppSettings["report-filename-format"], FilenameDateFormat = ConfigurationManager.AppSettings["report-filename-date-format"], OutputPath = ConfigurationManager.AppSettings["report-output-path"], Headers = ConfigurationManager.AppSettings["report-headers"], LocalTimeFormat = ConfigurationManager.AppSettings["report-localtime-format"] } }; // Create the position report pipelined computation. _pipeline = Pipeline.Create(LogManager.GetLogger("Pipeline"), _environment); // Run the position report pipelined computation at the specified interval until a cancellation request is received. _subscription = Observable.Generate(0, i => !_environment.TokenSource.IsCancellationRequested, i => i + 1, i => i, i => i == 0 ? TimeSpan.Zero : _environment.Interval) .Timestamp() .Select(x => x.Timestamp) .Subscribe(_pipeline.AsObserver()); }
/// <summary> /// PositionReport message handler /// </summary> private void OnPositionReport(PositionReport message) { if (message.getAccount() == _accountId) { if (_openPositions.ContainsKey(message.getCurrency()) && message is ClosedPositionReport) { _openPositions.Remove(message.getCurrency()); } else { _openPositions[message.getCurrency()] = message; } } if (message.getRequestID() == _currentRequest) { if (message.isLastRptRequested()) { _mapRequestsToAutoResetEvents[_currentRequest].Set(); _mapRequestsToAutoResetEvents.Remove(_currentRequest); } } }
public void SaveWithInvalidEditModeTest() { var editMode = (EditMode)Int32.MaxValue; var positionReportID = Guid.Empty.ToString(); var comment = "A position report comment"; var positionReport = new PositionReport(); positionReport.ID = positionReportID; try { var result = TestedController.Save(editMode, positionReportID, null, comment, null, null); Assert.Fail("ArgumentException not raised."); } catch (ArgumentException ex) { Assert.That(ex.ParamName, Is.EqualTo("editMode")); } }
/// <summary> /// Converts an FXCM position to a QuantConnect holding. /// </summary> /// <param name="fxcmPosition">The FXCM position</param> private Holding ConvertHolding(PositionReport fxcmPosition) { var securityType = _symbolMapper.GetBrokerageSecurityType(fxcmPosition.getInstrument().getSymbol()); return new Holding { Symbol = _symbolMapper.GetLeanSymbol(fxcmPosition.getInstrument().getSymbol(), securityType, Market.FXCM), Type = securityType, AveragePrice = Convert.ToDecimal(fxcmPosition.getSettlPrice()), ConversionRate = 1.0m, CurrencySymbol = "$", Quantity = Convert.ToDecimal(fxcmPosition.getPositionQty().getLongQty() > 0 ? fxcmPosition.getPositionQty().getLongQty() : -fxcmPosition.getPositionQty().getShortQty()) }; }
/// <summary> /// PositionReport message handler /// </summary> private void OnPositionReport(PositionReport message) { if (message.getAccount() == _accountId) { var fxcmSymbol = message.getInstrument().getSymbol(); if (_openPositions.ContainsKey(fxcmSymbol) && message is ClosedPositionReport) { _openPositions.Remove(fxcmSymbol); } else { _openPositions[fxcmSymbol] = message; } } if (message.getRequestID() == _currentRequest) { AutoResetEvent autoResetEvent; if (message.isLastRptRequested() && _mapRequestsToAutoResetEvents.TryGetValue(_currentRequest, out autoResetEvent)) { autoResetEvent.Set(); _mapRequestsToAutoResetEvents.Remove(_currentRequest); } } }