public void IPEndPointHelper_IsLocalOrLanAddress_Returns_Correct_Values() { ExcelWorksheetData worksheet = new ExcelWorksheetData(TestContext); IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(worksheet.String("IPAddress")), 0); Assert.AreEqual(worksheet.Bool("Expected"), IPEndPointHelper.IsLocalOrLanAddress(endPoint)); }
public void AccessConfiguration_IsPathAccessible_StringVersion_Rejects_Or_Allows_Requests() { var worksheet = new ExcelWorksheetData(TestContext); RunDataDrivenTest(worksheet, (requestPathAndFile, requestAddress) => { return(_Configuration.IsPathAccessible(requestPathAndFile, requestAddress)); }); }
public void MimeType_GetForExtension_Returns_Correct_MimeType_For_Extension() { var excelWorkSheet = new ExcelWorksheetData(TestContext); var mimeType = excelWorkSheet.String("MimeType"); var extension = excelWorkSheet.String("Extension"); Assert.AreEqual(mimeType, MimeType.GetForExtension(extension), extension); }
public void MimeType_GetForExtension_Returns_Correct_MimeType_For_Extensions_With_Leading_Full_Stop() { var excelWorkSheet = new ExcelWorksheetData(TestContext); var mimeType = excelWorkSheet.String("MimeType"); var extension = String.Format(".{0}", excelWorkSheet.String("Extension")); Assert.AreEqual(mimeType, MimeType.GetForExtension(extension), extension); }
public void MimeType_GetContentClassification_Returns_Correct_Content_Classification_For_Mime_Type() { var worksheet = new ExcelWorksheetData(TestContext); var mimeType = worksheet.EString("MimeType"); var classification = worksheet.ParseEnum <ContentClassification>("Classification"); Assert.AreEqual(classification, MimeType.GetContentClassification(mimeType)); }
public void Describe_Bytes_Formats_Bytes_Correctly() { var worksheet = new ExcelWorksheetData(TestContext); using (var switcher = new CultureSwitcher(worksheet.String("Region"))) { Assert.AreEqual(worksheet.String("Description"), Describe.Bytes(worksheet.Long("Bytes"))); } }
public void LogClient_IsLocal_Is_Conversion_Of_IpAddress_Property() { var worksheet = new ExcelWorksheetData(TestContext); var logClient = new LogClient() { IpAddress = worksheet.EString("IpAddress") }; Assert.AreEqual(worksheet.Bool("IsLocal"), logClient.IsLocal); }
public void Describe_Bytes_Formats_Bytes_Correctly() { var worksheet = new ExcelWorksheetData(TestContext); using(var switcher = new CultureSwitcher(worksheet.String("Region"))) { Assert.AreEqual(worksheet.String("Description"), Describe.Bytes(worksheet.Long("Bytes"))); } }
public void Aircraft_UpdateCoordinates_Resets_Coordinates_If_Aircraft_Looks_To_Be_Moving_Impossibly_Quickly() { // Some aircraft's transponders report the wrong position. Further, some radios misinterpret position updates at // extreme ranges. We can guess the position is wrong if the position and timing of two updates would require the // aircraft to be moving at incredibly high speeds. When this is detected we should reset the trails, otherwise the // user sees long lines drawn across the map, or a scribble effect if the transponder is just reporting nonsense. var worksheet = new ExcelWorksheetData(TestContext); var time = DateTime.UtcNow; var shortSeconds = 24 * 60 * 60; // seconds in a day _Aircraft.DataVersion = time.Ticks; _Aircraft.Latitude = worksheet.Float("Lat1"); _Aircraft.Longitude = worksheet.Float("Lng1"); _Aircraft.Track = 1; _Aircraft.UpdateCoordinates(time, shortSeconds); int milliseconds = worksheet.Int("Milliseconds"); time = time.AddMilliseconds(milliseconds); _Aircraft.DataVersion = time.Ticks; _Aircraft.Latitude = worksheet.Float("Lat2"); _Aircraft.Longitude = worksheet.Float("Lng2"); _Aircraft.Track = 2; _Aircraft.UpdateCoordinates(time, shortSeconds); if (!worksheet.Bool("ResetTrail")) { if (milliseconds >= 1000) { Assert.AreEqual(2, _Aircraft.FullCoordinates.Count); Assert.AreEqual(2, _Aircraft.ShortCoordinates.Count); } else { Assert.AreEqual(1, _Aircraft.FullCoordinates.Count); Assert.AreEqual(1, _Aircraft.ShortCoordinates.Count); Assert.AreEqual(1, _Aircraft.FullCoordinates[0].Heading); Assert.AreEqual(1, _Aircraft.ShortCoordinates[0].Heading); } } else { if (milliseconds < 1000) { Assert.AreEqual(0, _Aircraft.FullCoordinates.Count); Assert.AreEqual(0, _Aircraft.ShortCoordinates.Count); } else { Assert.AreEqual(1, _Aircraft.FullCoordinates.Count); Assert.AreEqual(1, _Aircraft.ShortCoordinates.Count); Assert.AreEqual(2, _Aircraft.FullCoordinates[0].Heading); Assert.AreEqual(2, _Aircraft.ShortCoordinates[0].Heading); } } }
public void MimeType_GetForExtension_Is_Case_Insensitive() { var worksheet = new ExcelWorksheetData(TestContext); var mimeType = worksheet.String("MimeType"); var extension = String.Format(".{0}", worksheet.String("Extension")); Assert.AreEqual(mimeType, MimeType.GetForExtension(extension.ToLower()), extension.ToLower()); Assert.AreEqual(mimeType, MimeType.GetForExtension(extension.ToUpper()), extension.ToUpper()); }
private void BuildExpectedList(ExcelWorksheetData worksheet, List <string> list, string column) { string value = worksheet.EString(column); if (value != null) { list.Add(value); } }
public void MimeType_GetKnownExtensions_Returns_Reasonable_List() { var worksheet = new ExcelWorksheetData(TestContext); var mimeType = worksheet.String("MimeType"); var extension = worksheet.String("Extension"); var extensions = MimeType.GetKnownExtensions(); Assert.IsTrue(extensions.Contains(extension.ToLower())); }
public void LogClient_Address_Is_Conversion_Of_IpAddress_Property() { var worksheet = new ExcelWorksheetData(TestContext); var logClient = new LogClient() { IpAddress = worksheet.EString("IpAddress") }; var expected = worksheet.String("Address"); if(expected == null) Assert.IsNull(logClient.Address); else Assert.AreEqual(expected, logClient.Address.ToString()); }
public void Do_ExtractMessageBytes_Extracts_Messages_From_Bytes(bool inputIsText, int blobCount, int extractedCount, Func<byte[], byte[]> alterFirstPacket = null) { var worksheet = new ExcelWorksheetData(TestContext); var comments = worksheet.String("Comments"); var input = new List<byte[]>(); for(var i = 1;i <= blobCount;++i) { var blobColumn = String.Format("Blob{0}", i); if(worksheet.String(blobColumn) != null) { byte[] bytes; if(inputIsText) bytes = Encoding.ASCII.GetBytes(worksheet.String(blobColumn).Replace("\\n", "\n").Replace("\\r", "\r")); else bytes = worksheet.Bytes(blobColumn); if(input.Count == 0 && alterFirstPacket != null) bytes = alterFirstPacket(bytes); input.Add(bytes); } } var expectedOutput = new List<ExtractedBytes>(); for(var i = 1;i <= extractedCount;++i) { var bytesColumn = String.Format("Extracted{0}", i); var parityColumn = String.Format("HadParity{0}", i); var checksumColumn = String.Format("BadChecksum{0}", i); if(worksheet.String(bytesColumn) != null || worksheet.String(checksumColumn) != null) { expectedOutput.Add(new ExtractedBytes() { Bytes = worksheet.Bytes(bytesColumn), HasParity = worksheet.Bool(parityColumn), ChecksumFailed = worksheet.Bool(checksumColumn), }); } } var output = new List<ExtractedBytes>(); foreach(var inputBytes in input) { foreach(var extractedBytes in Extractor.ExtractMessageBytes(inputBytes, 0, inputBytes.Length)) { output.Add((ExtractedBytes)extractedBytes.Clone()); } } Assert.AreEqual(expectedOutput.Count, output.Count, comments); for(var i = 0;i < expectedOutput.Count;++i) { var expected = expectedOutput[i]; var actual = output[i]; Assert.AreEqual(Format, actual.Format); Assert.AreEqual(expected.ChecksumFailed, actual.ChecksumFailed, comments); if(!expected.ChecksumFailed) { Assert.AreEqual(expected.HasParity, actual.HasParity, comments); var actualBytes = new byte[actual.Length]; Array.Copy(actual.Bytes, actual.Offset, actualBytes, 0, actual.Length); Assert.IsTrue(expected.Bytes.SequenceEqual(actualBytes), comments); } } }
public void PipelineRequest_IsMobileUserAgentString_Decodes_Common_Mobile_UserAgent_Strings() { var worksheet = new ExcelWorksheetData(TestContext); var userAgent = worksheet.EString("UserAgent"); var device = worksheet.String("Device"); var isMobile = worksheet.Bool("IsMobile"); _Request.UserAgent = userAgent; Assert.AreEqual(isMobile, _Request.IsMobileUserAgentString, "{0}: {1}", device, userAgent ?? "<null>"); }
private void SpreadsheetTests(Action <ExcelWorksheetData> afterSetFolder) { var worksheet = new ExcelWorksheetData(TestContext); bool checkCacheChanged = worksheet.ColumnExists("CacheChanged"); for (int i = 1; i <= 2; ++i) { string nameColumn = String.Format("File{0}", i); string lastModifiedColumn = String.Format("Time{0}", i); if (!worksheet.ColumnExists(nameColumn)) { continue; } var name = worksheet.String(nameColumn); var time = worksheet.ColumnExists(lastModifiedColumn) ? worksheet.DateTime(lastModifiedColumn) : new DateTime(2999, 12, 31); if (name != null) { _Files.Add(new TestFileInfo(name, time)); } } _Provider.Setup(p => p.GetFilesInFolder(It.IsAny <string>())).Returns(_Files); var folder = worksheet.String("Folder"); if (folder != null) { _DirectoryCache.Folder = folder; } if (worksheet.ColumnExists("LastModified")) { var fileInfo = worksheet.String("LastModified") == null ? null : new TestFileInfo(worksheet.String("FileName"), worksheet.DateTime("LastModified")); _Provider.Setup(p => p.GetFileInfo(worksheet.EString("FileName"))).Returns(fileInfo); } if (checkCacheChanged) { _DirectoryCache.CacheChanged += _CacheChangedEvent.Handler; } if (afterSetFolder != null) { afterSetFolder(worksheet); } Assert.AreEqual(folder, _DirectoryCache.Folder); Assert.AreEqual(worksheet.Bool("Exists"), _DirectoryCache.FileExists(worksheet.EString("SearchFor"))); if (checkCacheChanged) { Assert.AreEqual(worksheet.Bool("CacheChanged") ? 1 : 0, _CacheChangedEvent.CallCount); } }
public void Aircraft_IcaoCompliantRegistration_Correctly_Transforms_Registration_To_Comply_With_ICAO_Rules() { var worksheet = new ExcelWorksheetData(TestContext); var aircraft = Factory.Singleton.Resolve <IAircraft>(); aircraft.Registration = worksheet.EString("Registration"); Assert.AreEqual(worksheet.EString("IcaoCompliantRegistration"), aircraft.IcaoCompliantRegistration); Assert.AreEqual(worksheet.EString("Registration"), aircraft.Registration); }
public void Describe_AirportName_Formats_AirportName_Correctly() { var worksheet = new ExcelWorksheetData(TestContext); var officialName = worksheet.EString("OfficialName"); var cityName = worksheet.EString("City"); var expected = worksheet.EString("Result"); var result = Describe.AirportName(officialName, cityName); Assert.AreEqual(expected, result); }
public void NewVersionChecker_CheckForNewVersion_Returns_Correct_Value() { var worksheet = new ExcelWorksheetData(TestContext); _ApplicationInformation.Setup(p => p.Version).Returns(new Version(worksheet.String("ApplicationVersion"))); _Provider.Setup(p => p.DownloadFileContent(It.IsAny <string>())).Returns(worksheet.String("WebsiteVersion").Replace(@"\r", "\r").Replace(@"\n", "\n")); bool expected = worksheet.Bool("IsNewer"); Assert.AreEqual(expected, _NewVersionChecker.CheckForNewVersion()); Assert.AreEqual(expected, _NewVersionChecker.IsNewVersionAvailable); }
public void RequestReceivedEventArgs_Constructor_Builds_Properties_From_Request_Correctly() { ExcelWorksheetData worksheet = new ExcelWorksheetData(TestContext); var request = new Mock <IRequest>() { DefaultValue = DefaultValue.Mock }.SetupAllProperties(); var response = new Mock <IResponse>() { DefaultValue = DefaultValue.Mock }.SetupAllProperties(); var headers = new NameValueCollection(); var endPoint = new IPEndPoint(IPAddress.Parse(worksheet.String("ResponseAddress")), 45678); request.Setup(r => r.RemoteEndPoint).Returns(endPoint); request.Setup(r => r.Url).Returns(new Uri(worksheet.EString("Url"))); request.Setup(r => r.RawUrl).Returns(worksheet.EString("RawUrl")); request.Setup(r => r.Headers).Returns(headers); var xForwardedFor = worksheet.EString("XForwardedFor"); if (xForwardedFor != null) { headers.Add("X-Forwarded-For", xForwardedFor); } var args = new RequestReceivedEventArgs(request.Object, response.Object, worksheet.EString("Root")); Assert.AreEqual(worksheet.EString("WebSite"), args.WebSite); Assert.AreEqual(worksheet.EString("PathAndFile"), args.PathAndFile); Assert.AreEqual(worksheet.EString("Path"), args.Path); Assert.AreEqual(worksheet.EString("File"), args.File); Assert.AreEqual(worksheet.EString("ProxyAddress"), args.ProxyAddress); Assert.AreEqual(worksheet.EString("ClientAddress"), args.ClientAddress); Assert.AreEqual(worksheet.Bool("IsInternetRequest"), args.IsInternetRequest); Assert.AreEqual(worksheet.Int("PathCount"), args.PathParts.Count); Assert.AreEqual(worksheet.Int("QueryCount"), args.QueryString.Count); for (var i = 0; i < args.PathParts.Count; ++i) { Assert.AreEqual(worksheet.EString(String.Format("Path{0}", i)), args.PathParts[i]); } for (var i = 0; i < args.QueryString.Count; ++i) { var expectedName = worksheet.String(String.Format("QueryName{0}", i)); var expectedValue = worksheet.String(String.Format("QueryValue{0}", i)); Assert.AreEqual(expectedValue, args.QueryString[expectedName]); } }
public void ModeSParity_StripParity_Removes_Parity_From_Last_Three_Bytes() { var worksheet = new ExcelWorksheetData(TestContext); var bytes = worksheet.Bytes("Bytes"); var offset = worksheet.Int("Offset"); var length = worksheet.Int("Length"); _ModeSParity.StripParity(bytes, offset, length); Assert.IsTrue(worksheet.Bytes("Expected").SequenceEqual(bytes)); }
public void AircraftSanityChecker_IsGoodAircraftIcao_Returns_Correct_Value() { var worksheet = new ExcelWorksheetData(TestContext); var icao = worksheet.EString("ICAO"); var expected = worksheet.Bool("Result"); _Configuration.RawDecodingSettings.SuppressIcao0 = worksheet.Bool("SuppressIcao0"); var result = _Checker.IsGoodAircraftIcao(icao); Assert.AreEqual(expected, result); }
public void AccessConfiguration_IsPathAccessible_IPAddressVersion_Rejects_Or_Allows_Requests() { var worksheet = new ExcelWorksheetData(TestContext); RunDataDrivenTest(worksheet, (requestPathAndFile, requestAddress) => { IPAddress ipAddress; if (!IPAddress.TryParse(requestAddress, out ipAddress)) { ipAddress = IPAddress.None; } return(_Configuration.IsPathAccessible(requestPathAndFile, ipAddress)); }); }
public void PolarPlotter_Initialise_Initialises_The_Plotter_Correctly() { var worksheet = new ExcelWorksheetData(TestContext); var roundDegrees = 0; var seenArgException = false; try { roundDegrees = worksheet.Int("RoundDegree"); _Plotter.Initialise( worksheet.Double("Latitude"), worksheet.Double("Longitude"), worksheet.Int("LowSlice"), worksheet.Int("HighSlice"), worksheet.Int("SliceHeight"), roundDegrees ); } catch (ArgumentException) { seenArgException = true; } Assert.AreEqual(worksheet.Bool("ArgException"), seenArgException); if (!seenArgException) { var slices = _Plotter.TakeSnapshot(); Assert.AreEqual(worksheet.Double("Latitude"), _Plotter.Latitude); Assert.AreEqual(worksheet.Double("Longitude"), _Plotter.Longitude); Assert.AreEqual(worksheet.Int("RoundDegree"), _Plotter.RoundToDegrees); Assert.AreEqual(worksheet.Int("CountSlices"), slices.Count); var expectedPlotsPerSlice = 360 / roundDegrees; foreach (var slice in slices) { Assert.AreEqual(expectedPlotsPerSlice, slice.PolarPlots.Count); } for (var i = 1; i <= 5; ++i) { var lowName = String.Format("Low{0}", i); var highName = String.Format("High{0}", i); var lowText = worksheet.String(lowName); var highText = worksheet.String(highName); if (lowText != null && highText != null) { var expectedLow = lowText == "Min" ? int.MinValue : int.Parse(lowText); var expectedHigh = highText == "Max" ? int.MaxValue : int.Parse(highText); Assert.IsTrue(slices.Any(r => r.AltitudeLower == expectedLow && r.AltitudeHigher == expectedHigh), "Could not find {0}-{1}", lowText, highText); } } } }
public void Aircraft_UpdateCoordinates_Replaces_Last_Full_Coordinate_If_Track_Hardly_Changes() { // If an update changes the position but the aircraft remains on the same ground track as the previous position // then there's no need to keep the previous position, it can be replaced with the current one. var worksheet = new ExcelWorksheetData(TestContext); var time = DateTime.Now; var expected = new List <Coordinate>(); for (int i = 1; i <= 4; ++i) { var latInColumn = String.Format("Lat{0}", i); var lngInColumn = String.Format("Lng{0}", i); var trkInColumn = String.Format("Trk{0}", i); var latOutColumn = String.Format("CLat{0}", i); var lngOutColumn = String.Format("CLng{0}", i); var trkOutColumn = String.Format("CTrk{0}", i); if (worksheet.String(latInColumn) != null) { time = time.AddHours(1); _Aircraft.DataVersion = time.Ticks; _Aircraft.Latitude = worksheet.Float(latInColumn); _Aircraft.Longitude = worksheet.Float(lngInColumn); _Aircraft.Track = worksheet.NFloat(trkInColumn); _Aircraft.UpdateCoordinates(time, 300 * 60 * 60); Assert.AreEqual(i, _Aircraft.ShortCoordinates.Count); } if (worksheet.String(latOutColumn) != null) { expected.Add(new Coordinate(0, 0, worksheet.Float(latOutColumn), worksheet.Float(lngOutColumn), worksheet.NFloat(trkOutColumn))); } } Assert.AreEqual(expected.Count, _Aircraft.FullCoordinates.Count); for (int i = 0; i < expected.Count; ++i) { var expCoordinate = expected[i]; var fullCoordinate = _Aircraft.FullCoordinates[i]; Assert.AreEqual(expCoordinate, fullCoordinate, i.ToString()); Assert.AreEqual(expCoordinate.Heading, fullCoordinate.Heading, i.ToString()); } }
public void Describe_Airport_Formats_Airport_Correctly() { var worksheet = new ExcelWorksheetData(TestContext); var comparer = new IPAddressComparer(); var lhs = worksheet.String("LHS") == null ? null : IPAddress.Parse(worksheet.String("LHS")); var rhs = worksheet.String("RHS") == null ? null : IPAddress.Parse(worksheet.String("RHS")); var expectedResult = worksheet.Int("Result"); var result = comparer.Compare(lhs, rhs); if(expectedResult < 0) Assert.IsTrue(result < 0); else if(expectedResult > 0) Assert.IsTrue(result > 0); else Assert.AreEqual(0, result); }
public void Describe_Airport_Formats_Airport_Correctly() { var worksheet = new ExcelWorksheetData(TestContext); var airport = new Airport(); airport.IcaoCode = worksheet.EString("Icao"); airport.IataCode = worksheet.EString("Iata"); airport.Name = worksheet.EString("Name"); airport.Country = worksheet.EString("Country"); var result = Describe.Airport(airport, worksheet.Bool("PreferIata"), worksheet.Bool("ShowCode"), worksheet.Bool("ShowName"), worksheet.Bool("ShowCountry")); Assert.AreEqual(worksheet.EString("Result"), result); }
public void GreatCircleMaths_Distance_Calculates_Correct_Distances() { var worksheet = new ExcelWorksheetData(TestContext); var startLatitude = worksheet.NDouble("StartLatitude"); var startLongitude = worksheet.NDouble("StartLongitude"); var endLatitude = worksheet.NDouble("EndLatitude"); var endLongitude = worksheet.NDouble("EndLongitude"); var expected = worksheet.NDouble("Distance"); var actual = GreatCircleMaths.Distance(startLatitude, startLongitude, endLatitude, endLongitude); if(expected == null) Assert.IsNull(actual); else Assert.AreEqual((double)expected, (double)actual, 0.0001); }
public void PipelineContext_ConstructUrl_Returns_Correct_Values() { var worksheet = new ExcelWorksheetData(TestContext); var scheme = worksheet.EString("Scheme"); var host = worksheet.EString("Host"); var pathBase = worksheet.EString("PathBase"); var path = worksheet.EString("Path"); var queryString = worksheet.EString("QueryString"); var expected = worksheet.EString("URL"); var url = PipelineContext.ConstructUrl(scheme, host, pathBase, path, queryString); Assert.AreEqual(expected, url); }
public void Airline_IsCharterFlightNumber_Returns_Correct_Value() { var worksheet = new ExcelWorksheetData(TestContext); var regex = worksheet.EString("Regex"); var flightNumber = worksheet.EString("FlightNumber"); var airline = new Airline() { CharterFlightPattern = regex }; var actual = airline.IsCharterFlightNumber(flightNumber); var expected = worksheet.Bool("Matches"); Assert.AreEqual(expected, actual, $"FlightNumber '{flightNumber}' and Regex '{regex}'"); }
public void Cidr_Matches_Compares_Addresses_Correctly() { var worksheet = new ExcelWorksheetData(TestContext); // Uncomment this block if you want to restrict the test to just those rows with a RunThis of true // var runThis = worksheet.NBool("RunThis").GetValueOrDefault(); // if(!runThis) Assert.Fail(); var cidr = Cidr.Parse(worksheet.String("CIDR")); var address = GetExcelIPAddress(worksheet, "Address"); var expected = worksheet.Bool("Result"); var actual = cidr.Matches(address); Assert.AreEqual(expected, actual); }
public void GreatCircleMaths_Bearing_Calculates_Correct_Bearing() { var worksheet = new ExcelWorksheetData(TestContext); var startLatitude = worksheet.NDouble("StartLatitude"); var startLongitude = worksheet.NDouble("StartLongitude"); var endLatitude = worksheet.NDouble("EndLatitude"); var endLongitude = worksheet.NDouble("EndLongitude"); var currentTrack = worksheet.NDouble("CurrentTrack"); var expected = worksheet.NDouble("Bearing"); var actual = GreatCircleMaths.Bearing(startLatitude, startLongitude, endLatitude, endLongitude, currentTrack, worksheet.Bool("ReverseBearing"), worksheet.Bool("IgnoreCurrentTrack")); if(expected == null) Assert.IsNull(actual); else Assert.AreEqual((double)expected, (double)actual, 0.0001); }
public void Callsign_Ctor_Parses_Callsigns_Correctly() { var worksheet = new ExcelWorksheetData(TestContext); var callsignText = worksheet.EString("Callsign"); var callsign = new Callsign(callsignText); var message = $"Callsign is '{callsignText}'"; Assert.AreEqual(worksheet.EString("OriginalCallsign"), callsign.OriginalCallsign, message); Assert.AreEqual(worksheet.EString("Code"), callsign.Code, message); Assert.AreEqual(worksheet.EString("Number"), callsign.Number, message); Assert.AreEqual(worksheet.EString("TrimmedNumber"), callsign.TrimmedNumber, message); Assert.AreEqual(worksheet.EString("TrimmedCallsign"), callsign.TrimmedCallsign, message); Assert.AreEqual(worksheet.Bool("IsOriginalCallsignValid"), callsign.IsOriginalCallsignValid, message); }
public void Cidr_TryParse_Parses_Addresses_Correctly() { var worksheet = new ExcelWorksheetData(TestContext); Cidr cidr; var address = worksheet.EString("Parse"); var parsed = Cidr.TryParse(address, out cidr); Assert.AreEqual(!parsed, worksheet.NBool("Exception").GetValueOrDefault()); if (parsed) { Assert.AreEqual(GetExcelIPAddress(worksheet, "Address"), cidr.Address); Assert.AreEqual(GetExcelIPAddress(worksheet, "MaskedAddress"), cidr.MaskedAddress); Assert.AreEqual(worksheet.Int("BitmaskBits"), cidr.BitmaskBits); Assert.AreEqual(worksheet.UInt("IPv4Bitmask"), cidr.IPv4Bitmask); } }
public void Responder_SendText_Fills_Response_Correctly() { ExcelWorksheetData worksheet = new ExcelWorksheetData(TestContext); string encodingName = worksheet.String("Encoding"); var encoding = encodingName == null ? (Encoding)null : (Encoding)typeof(Encoding).GetProperty(encodingName, BindingFlags.Static | BindingFlags.Public).GetValue(null, null); _Responder.SendText(_Request.Object, _Response.Object, worksheet.EString("Text"), encoding, worksheet.EString("MimeType")); byte[] expectedStreamContent = worksheet.Bytes("ResponseContent"); byte[] actualStreamContent = _OutputStream.ToArray(); Assert.IsTrue(expectedStreamContent.SequenceEqual(actualStreamContent)); Assert.AreEqual(expectedStreamContent.Length, _Response.Object.ContentLength); Assert.AreEqual(worksheet.String("ResponseMimeType"), _Response.Object.MimeType); Assert.AreEqual(HttpStatusCode.OK, _Response.Object.StatusCode); }
public void WebSite_Image_Renders_Pictures_At_Correct_Size() { var worksheet = new ExcelWorksheetData(TestContext); CreateMonochromeImage("ImageRenderSize.png", worksheet.Int("OriginalWidth"), worksheet.Int("OriginalHeight"), Brushes.Red); ConfigurePictureManagerForPathAndFile(TestContext.TestDeploymentDir, "ImageRenderSize.png"); _Configuration.BaseStationSettings.PicturesFolder = TestContext.TestDeploymentDir; _WebSite.AttachSiteToServer(_WebServer.Object); string pathAndFile = String.Format("/Images/Size-{0}/File-ImageRenderSize/Picture.png", worksheet.String("Size")); _WebServer.Raise(m => m.RequestReceived += null, RequestReceivedEventArgsHelper.Create(_Request, _Response, pathAndFile, false)); using (var siteImage = (Bitmap)Bitmap.FromStream(_OutputStream)) { AssertImageIsMonochrome(siteImage, _Red, worksheet.Int("NewWidth"), worksheet.Int("NewHeight")); } }
public void AircraftPictureManager_FindPicture_Uses_ICAO_Compliant_Registration() { var worksheet = new ExcelWorksheetData(TestContext); var registration = worksheet.EString("Registration"); var icaoCompliantRegistration = worksheet.EString("IcaoCompliantRegistration"); if (registration != icaoCompliantRegistration && !String.IsNullOrEmpty(icaoCompliantRegistration)) { var registrationFileName = String.Format("{0}.jpg", registration); var icaoCompliantFileName = String.Format("{0}.jpg", icaoCompliantRegistration); _DirectoryCache.Object.Folder = ""; _DirectoryCache.Setup(c => c.FileExists(registrationFileName)).Returns((string fn) => { Assert.Fail("FindPicture did not strip non-ICAO characters from the registration"); return(false); }); _DirectoryCache.Setup(c => c.FileExists(icaoCompliantFileName)).Returns((string fn) => { return(true); }); Assert.AreEqual(icaoCompliantFileName, _PictureManager.FindPicture(_DirectoryCache.Object, "ICAO", registration)); } }
public void ModeSTranslator_Translate_Decodes_Packets_Correctly() { for(var conversionMethod = 0;conversionMethod < 2;++conversionMethod) { var worksheet = new ExcelWorksheetData(TestContext); var expectedValue = new SpreadsheetFieldValue(worksheet, 7); var bits = worksheet.String("Packet"); var bytes = TestUtilities.ConvertBitStringToBytes(bits); var reply = conversionMethod == 0 ? _Translator.Translate(bytes.ToArray()) : _Translator.Translate(bytes.ToArray(), 0); foreach(var replyProperty in reply.GetType().GetProperties()) { switch(replyProperty.Name) { case "ACASMessage": Assert.IsTrue(TestUtilities.SequenceEqual(expectedValue.GetBytes("MV"), reply.ACASMessage)); break; case "Altitude": Assert.AreEqual(expectedValue.GetNInt("AC"), reply.Altitude); break; case "AltitudeIsMetric": Assert.AreEqual(expectedValue.GetNBool("AC:M"), reply.AltitudeIsMetric); break; case "ApplicationField": Assert.AreEqual(expectedValue.GetEnum<ApplicationField>("AF"), reply.ApplicationField); break; case "Capability": Assert.AreEqual(expectedValue.GetEnum<Capability>("CA"), reply.Capability); break; case "CommBMessage": Assert.IsTrue(TestUtilities.SequenceEqual(expectedValue.GetBytes("MB"), reply.CommBMessage)); break; case "CommDMessage": Assert.IsTrue(TestUtilities.SequenceEqual(expectedValue.GetBytes("MD"), reply.CommDMessage)); break; case "ControlField": Assert.AreEqual(expectedValue.GetEnum<ControlField>("CF"), reply.ControlField); break; case "CrossLinkCapability": Assert.AreEqual(expectedValue.GetNBool("CC"), reply.CrossLinkCapability); break; case "DownlinkFormat": Assert.AreEqual(worksheet.ParseEnum<DownlinkFormat>("DownlinkFormat"), reply.DownlinkFormat); break; case "DownlinkRequest": Assert.AreEqual(expectedValue.GetNByte("DR", true), reply.DownlinkRequest); break; case "DSegmentNumber": Assert.AreEqual(expectedValue.GetNByte("ND", true), reply.DSegmentNumber); break; case "ElmControl": Assert.AreEqual(expectedValue.GetEnum<ElmControl>("KE"), reply.ElmControl); break; case "ExtendedSquitterMessage": Assert.IsTrue(TestUtilities.SequenceEqual(expectedValue.GetBytes("ME"), reply.ExtendedSquitterMessage)); break; case "ExtendedSquitterSupplementaryMessage": Assert.IsTrue(TestUtilities.SequenceEqual(expectedValue.GetBytes("MEX"), reply.ExtendedSquitterSupplementaryMessage)); break; case "FlightStatus": Assert.AreEqual(expectedValue.GetEnum<FlightStatus>("FS"), reply.FlightStatus); break; case "FormattedIcao24": Assert.AreEqual(worksheet.String("Icao24"), reply.FormattedIcao24); break; case "Icao24": Assert.AreEqual(Convert.ToInt32(worksheet.String("Icao24"), 16), reply.Icao24); break; case "Identity": Assert.AreEqual(expectedValue.GetNShort("ID"), reply.Identity); break; case "NonIcao24Address": Assert.AreEqual(expectedValue.GetNInt("AAX", true), reply.NonIcao24Address); break; case "ParityInterrogatorIdentifier": Assert.AreEqual(expectedValue.GetNInt("PI", true), reply.ParityInterrogatorIdentifier); break; case "PossibleCallsign": Assert.AreEqual(expectedValue.GetString("PC"), reply.PossibleCallsign); break; case "ReplyInformation": Assert.AreEqual(expectedValue.GetNByte("RI", true), reply.ReplyInformation); break; case "SensitivityLevel": Assert.AreEqual(expectedValue.GetNByte("SL", true), reply.SensitivityLevel); break; case "UtilityMessage": Assert.AreEqual(expectedValue.GetNByte("UM", true), reply.UtilityMessage); break; case "VerticalStatus": Assert.AreEqual(expectedValue.GetEnum<VerticalStatus>("VS"), reply.VerticalStatus); break; default: throw new NotImplementedException(); } } } }
public void VectorVelocity_Calculates_Velocity_And_Bearing_Correctly() { var worksheet = new ExcelWorksheetData(TestContext); var velocity = new VectorVelocity() { IsWesterlyVelocity = worksheet.Bool("IsWesterlyVelocity"), IsSoutherlyVelocity = worksheet.Bool("IsSoutherlyVelocity"), EastWestVelocity = worksheet.NShort("EastWestVelocity"), EastWestExceeded = worksheet.Bool("EastWestExceeded"), NorthSouthVelocity = worksheet.NShort("NorthSouthVelocity"), NorthSouthExceeded = worksheet.Bool("NorthSouthExceeded"), }; if(worksheet.String("Speed") == null) Assert.IsNull(velocity.Speed); else Assert.AreEqual(worksheet.Double("Speed"), velocity.Speed.Value, 0.000001); if(worksheet.String("Bearing") == null) Assert.IsNull(velocity.Bearing); else Assert.AreEqual(worksheet.Double("Bearing"), velocity.Bearing.Value, 0.000001); }
public void RequestReceivedEventArgs_Constructor_Builds_Properties_From_Request_Correctly() { ExcelWorksheetData worksheet = new ExcelWorksheetData(TestContext); var request = new Mock<IRequest>() { DefaultValue = DefaultValue.Mock }.SetupAllProperties(); var response = new Mock<IResponse>() { DefaultValue = DefaultValue.Mock }.SetupAllProperties(); var headers = new NameValueCollection(); var endPoint = new IPEndPoint(IPAddress.Parse(worksheet.String("ResponseAddress")), 45678); request.Setup(r => r.RemoteEndPoint).Returns(endPoint); request.Setup(r => r.Url).Returns(new Uri(worksheet.EString("Url"))); request.Setup(r => r.RawUrl).Returns(worksheet.EString("RawUrl")); request.Setup(r => r.Headers).Returns(headers); var xForwardedFor = worksheet.EString("XForwardedFor"); if(xForwardedFor != null) headers.Add("X-Forwarded-For", xForwardedFor); var args = new RequestReceivedEventArgs(request.Object, response.Object, worksheet.EString("Root")); Assert.AreEqual(worksheet.EString("WebSite"), args.WebSite); Assert.AreEqual(worksheet.EString("PathAndFile"), args.PathAndFile); Assert.AreEqual(worksheet.EString("File"), args.File); Assert.AreEqual(worksheet.EString("ProxyAddress"), args.ProxyAddress); Assert.AreEqual(worksheet.EString("ClientAddress"), args.ClientAddress); Assert.AreEqual(worksheet.Bool("IsInternetRequest"), args.IsInternetRequest); Assert.AreEqual(worksheet.Int("PathCount"), args.PathParts.Count); Assert.AreEqual(worksheet.Int("QueryCount"), args.QueryString.Count); for(var i = 0;i < args.PathParts.Count;++i) { Assert.AreEqual(worksheet.EString(String.Format("Path{0}", i)), args.PathParts[i]); } for(var i = 0;i < args.QueryString.Count;++i) { var expectedName = worksheet.String(String.Format("QueryName{0}", i)); var expectedValue = worksheet.String(String.Format("QueryValue{0}", i)); Assert.AreEqual(expectedValue, args.QueryString[expectedName]); } }
public void GreatCircleMaths_Destination_Calculates_Correct_Destination() { var worksheet = new ExcelWorksheetData(TestContext); var startLatitude = worksheet.NDouble("StartLatitude"); var startLongitude = worksheet.NDouble("StartLongitude"); var bearing = worksheet.NDouble("Bearing"); var distance = worksheet.NDouble("Distance"); double? endLatitude, endLongitude; GreatCircleMaths.Destination(startLatitude, startLongitude, bearing, distance, out endLatitude, out endLongitude); var expectedLatitude = worksheet.NDouble("EndLatitude"); var expectedLongitude = worksheet.NDouble("EndLongitude"); if(expectedLatitude == null || expectedLongitude == null) { Assert.AreEqual(expectedLatitude, endLatitude); Assert.AreEqual(expectedLongitude, endLongitude); } else { Assert.AreEqual(expectedLatitude.Value, endLatitude.Value, 0.0001); Assert.AreEqual(expectedLongitude.Value, endLongitude.Value, 0.0001); } }
public void CompactPositionReporting_Encode_Produces_Correct_Results_For_CPR101_Tables() { // The values for this test are all taken directly from the transition latitude test tables in 1090-WP30-12 Proposed New Appendix CPR101. var worksheet = new ExcelWorksheetData(TestContext); var numberOfBits = worksheet.Byte("Bits"); var oddFormat = worksheet.Bool("OddFormat"); var latitude = worksheet.Double("Latitude"); var longitude = worksheet.Double("Longitude"); var globalCoordinate = new GlobalCoordinate(latitude, longitude); var expectedLatitude = Convert.ToInt32(worksheet.String("ExpectedLatitude"), 16); var expectedLongitude = Convert.ToInt32(worksheet.String("ExpectedLongitude"), 16); var dataRow = worksheet.Int("DataRow"); // helps set conditional breakpoints, VSTS doesn't always process rows in ascending order as they appear in the worksheet // In testing some of the input latitudes and longitudes couldn't produce the expected results from table 6-1 etc. of 1090-WP30-12 because of small // rounding errors in the handling of doubles. Switching to decimals didn't help and it would make the code slower because the FPU doesn't work with // decimals. So the "RELatitude" and "RELongitude" columns were added - if they are empty then the code is expected to produce the values in // the Expected columns, which corresponds with the test results from 1090-WP30-12, but if they contain values then these are the actual results after // the rounding error has had its wicked way. In most cases they are 1 out for latitude but that can move the resolved latitude into a different NL and produce // a large difference in longitude. There are very few of these anomalies, they represent errors of a few feet and as this isn't going into an aircraft I can't // say I'm too bothered about them. However I do want them to be obvious in the test data, hence the reason for adding new columns rather than just changing // the expected results. int? reLatitude = null; int? reLongitude = null; if(worksheet.String("RELatitude") != null) { reLatitude = Convert.ToInt32(worksheet.String("RELatitude"), 16); reLongitude = Convert.ToInt32(worksheet.String("RELongitude"), 16); } var coordinate = _Cpr.Encode(globalCoordinate, oddFormat, numberOfBits); Assert.AreEqual(reLatitude ?? expectedLatitude, coordinate.Latitude); Assert.AreEqual(reLongitude ?? expectedLongitude, coordinate.Longitude); Assert.AreEqual(numberOfBits, coordinate.NumberOfBits); Assert.AreEqual(oddFormat, coordinate.OddFormat); }
public void BaseStationDatabase_UpdateAircraft_Correctly_Updates_Record() { _Database.WriteSupportEnabled = true; var worksheet = new ExcelWorksheetData(TestContext); var id = (int)AddAircraft(new BaseStationAircraft() { ModeS = "ZZZZZZ" }); var update = _Database.GetAircraftById(id); LoadAircraftFromSpreadsheet(worksheet, 0, update); _Database.UpdateAircraft(update); var readBack = _Database.GetAircraftById(id); AssertAircraftAreEqual(update, readBack, id); }
public void UniversalPlugAndPlayManager_PutServerOntoInternet_Adds_Correct_Mapping_To_Router() { var worksheet = new ExcelWorksheetData(TestContext); _Configuration.WebServerSettings.EnableUPnp = worksheet.Bool("CnfEnabled"); _Configuration.WebServerSettings.UPnpPort = worksheet.Int("CnfUPnpPort"); _WebServer.Setup(s => s.NetworkIPAddress).Returns(worksheet.String("SvrAddress")); _WebServer.Setup(s => s.Port).Returns(worksheet.Int("SvrPort")); _Manager.Initialise(); if(worksheet.String("RtrDescription") != null) { AddPortMapping(worksheet.String("RtrDescription"), worksheet.Int("RtrExtPort"), worksheet.String("RtrIntClient"), worksheet.Int("RtrIntPort"), worksheet.String("RtrProtocol")); } _Manager.StateChanged += _StateChangedEvent.Handler; _Manager.PutServerOntoInternet(); _Provider.Verify(p => p.AddMapping(worksheet.Int("CnfUPnpPort"), "TCP", worksheet.Int("SvrPort"), worksheet.String("SvrAddress"), true, _Description), worksheet.Bool("ExpectAdd") ? Times.Once() : Times.Never()); Assert.AreEqual(worksheet.Bool("ExpectIsPresent"), _Manager.PortForwardingPresent); Assert.AreEqual(worksheet.Bool("ExpectStateChanged") ? 1 : 0, _StateChangedEvent.CallCount); if(_StateChangedEvent.CallCount > 0) { Assert.AreSame(_Manager, _StateChangedEvent.Sender); Assert.IsNotNull(_StateChangedEvent.Args); } }
public void BaseStationDatabase_GetAircraftByCode_Returns_Aircraft_Object_For_ICAO24_Code() { var worksheet = new ExcelWorksheetData(TestContext); var mockAircraft = LoadAircraftFromSpreadsheet(worksheet); var id = AddAircraft(mockAircraft); var aircraft = _Database.GetAircraftByCode(mockAircraft.ModeS); Assert.AreNotSame(aircraft, mockAircraft); AssertAircraftAreEqual(mockAircraft, aircraft, id); }
public void Aircraft_UpdateCoordinates_Resets_Coordinates_If_Aircraft_Looks_To_Be_Moving_Impossibly_Quickly() { // Some aircraft's transponders report the wrong position. Further, some radios misinterpret position updates at // extreme ranges. We can guess the position is wrong if the position and timing of two updates would require the // aircraft to be moving at incredibly high speeds. When this is detected we should reset the trails, otherwise the // user sees long lines drawn across the map, or a scribble effect if the transponder is just reporting nonsense. var worksheet = new ExcelWorksheetData(TestContext); var time = DateTime.UtcNow; var shortSeconds = 24 * 60 * 60; // seconds in a day _Aircraft.DataVersion = time.Ticks; _Aircraft.Latitude = worksheet.Float("Lat1"); _Aircraft.Longitude = worksheet.Float("Lng1"); _Aircraft.Track = 1; _Aircraft.UpdateCoordinates(time, shortSeconds); int milliseconds = worksheet.Int("Milliseconds"); time = time.AddMilliseconds(milliseconds); _Aircraft.DataVersion = time.Ticks; _Aircraft.Latitude = worksheet.Float("Lat2"); _Aircraft.Longitude = worksheet.Float("Lng2"); _Aircraft.Track = 2; _Aircraft.UpdateCoordinates(time, shortSeconds); if(!worksheet.Bool("ResetTrail")) { if(milliseconds >= 1000) { Assert.AreEqual(2, _Aircraft.FullCoordinates.Count); Assert.AreEqual(2, _Aircraft.ShortCoordinates.Count); } else { Assert.AreEqual(1, _Aircraft.FullCoordinates.Count); Assert.AreEqual(1, _Aircraft.ShortCoordinates.Count); Assert.AreEqual(1, _Aircraft.FullCoordinates[0].Heading); Assert.AreEqual(1, _Aircraft.ShortCoordinates[0].Heading); } } else { if(milliseconds < 1000) { Assert.AreEqual(0, _Aircraft.FullCoordinates.Count); Assert.AreEqual(0, _Aircraft.ShortCoordinates.Count); } else { Assert.AreEqual(1, _Aircraft.FullCoordinates.Count); Assert.AreEqual(1, _Aircraft.ShortCoordinates.Count); Assert.AreEqual(2, _Aircraft.FullCoordinates[0].Heading); Assert.AreEqual(2, _Aircraft.ShortCoordinates[0].Heading); } } }
public void Aircraft_UpdateCoordinates_Trims_Short_Coordinates_After_Time_Limit_Has_Passed() { var worksheet = new ExcelWorksheetData(TestContext); var seconds = worksheet.Int("Seconds"); var baseTime = DateTime.UtcNow; for(int i = 1;i <= 3;++i) { var secondsGapColumn = String.Format("SecondsGap{0}", i); var latitudeColumn = String.Format("Latitude{0}", i); var longitudeColumn = String.Format("Longitude{0}", i); var trackColumn = String.Format("Track{0}", i); if(worksheet.String(secondsGapColumn) != null) { var utcNow = baseTime.AddSeconds(worksheet.Int(secondsGapColumn)); _Aircraft.DataVersion = utcNow.Ticks; _Aircraft.Latitude = worksheet.NFloat(latitudeColumn); _Aircraft.Longitude = worksheet.NFloat(longitudeColumn); _Aircraft.Track = worksheet.NFloat(trackColumn); _Aircraft.UpdateCoordinates(utcNow, seconds); } } Assert.AreEqual(worksheet.Int("ExpectedCount"), _Aircraft.ShortCoordinates.Count); for(int i = 0;i < _Aircraft.ShortCoordinates.Count;++i) { var expectedTrackColumn = String.Format("ExpectedTrack{0}", i); Assert.AreEqual(worksheet.NFloat(expectedTrackColumn), _Aircraft.ShortCoordinates[i].Heading, i.ToString()); } }
public void Aircraft_UpdateCoordinates_Replaces_Last_Full_Coordinate_If_Track_Hardly_Changes() { // If an update changes the position but the aircraft remains on the same ground track as the previous position // then there's no need to keep the previous position, it can be replaced with the current one. var worksheet = new ExcelWorksheetData(TestContext); var time = DateTime.Now; var expected = new List<Coordinate>(); for(int i = 1;i <= 4;++i) { var latInColumn = String.Format("Lat{0}", i); var lngInColumn = String.Format("Lng{0}", i); var trkInColumn = String.Format("Trk{0}", i); var latOutColumn = String.Format("CLat{0}", i); var lngOutColumn = String.Format("CLng{0}", i); var trkOutColumn = String.Format("CTrk{0}", i); if(worksheet.String(latInColumn) != null) { time = time.AddHours(1); _Aircraft.DataVersion = time.Ticks; _Aircraft.Latitude = worksheet.Float(latInColumn); _Aircraft.Longitude = worksheet.Float(lngInColumn); _Aircraft.Track = worksheet.NFloat(trkInColumn); _Aircraft.UpdateCoordinates(time, 300 * 60 * 60); Assert.AreEqual(i, _Aircraft.ShortCoordinates.Count); } if(worksheet.String(latOutColumn) != null) { expected.Add(new Coordinate(0, 0, worksheet.Float(latOutColumn), worksheet.Float(lngOutColumn), worksheet.NFloat(trkOutColumn))); } } Assert.AreEqual(expected.Count, _Aircraft.FullCoordinates.Count); for(int i = 0;i < expected.Count;++i) { var expCoordinate = expected[i]; var fullCoordinate = _Aircraft.FullCoordinates[i]; Assert.AreEqual(expCoordinate, fullCoordinate, i.ToString()); Assert.AreEqual(expCoordinate.Heading, fullCoordinate.Heading, i.ToString()); } }
public void Aircraft_IcaoCompliantRegistration_Correctly_Transforms_Registration_To_Comply_With_ICAO_Rules() { var worksheet = new ExcelWorksheetData(TestContext); var aircraft = Factory.Singleton.Resolve<IAircraft>(); aircraft.Registration = worksheet.EString("Registration"); Assert.AreEqual(worksheet.EString("IcaoCompliantRegistration"), aircraft.IcaoCompliantRegistration); Assert.AreEqual(worksheet.EString("Registration"), aircraft.Registration); }
public void WebServer_Addresses_Are_Reported_Correctly() { var worksheet = new ExcelWorksheetData(TestContext); _WebServer.Root = worksheet.String("Root"); _WebServer.Port = worksheet.NInt("Port") ?? 80; if(worksheet.String("IPAddresses") == null) _Provider.Setup(p => p.GetHostAddresses()).Returns((IPAddress[])null); else { var ipAddresses = new List<IPAddress>(); foreach(var chunk in worksheet.EString("IPAddresses").Split(',')) { if(chunk.Length > 0) ipAddresses.Add(IPAddress.Parse(chunk)); } _Provider.Setup(p => p.GetHostAddresses()).Returns(ipAddresses.ToArray()); } _WebServer.ExternalIPAddress = worksheet.EString("ExternalIPAddress"); _WebServer.ExternalPort = worksheet.NInt("UPnPExternalPort") ?? 80; Assert.AreEqual(worksheet.String("LocalAddress"), _WebServer.LocalAddress); Assert.AreEqual(worksheet.String("NetworkAddress"), _WebServer.NetworkAddress); Assert.AreEqual(worksheet.String("NetworkIPAddress"), _WebServer.NetworkIPAddress); Assert.AreEqual(worksheet.String("ExternalAddress"), _WebServer.ExternalAddress); }
public void UniversalPlugAndPlayManager_TakeServerOffInternet_Removes_Mapping_From_Router() { var worksheet = new ExcelWorksheetData(TestContext); _Configuration.WebServerSettings.EnableUPnp = worksheet.Bool("CnfEnabled"); _Configuration.WebServerSettings.UPnpPort = worksheet.Int("CnfUPnpPort"); _Configuration.WebServerSettings.IsOnlyInternetServerOnLan = worksheet.Bool("CnfOnlyVRSOnNetwork"); _WebServer.Setup(s => s.NetworkIPAddress).Returns(worksheet.String("SvrAddress")); _WebServer.Setup(s => s.Port).Returns(worksheet.Int("SvrPort")); _Manager.Initialise(); if(worksheet.String("RtrDescription") != null) { AddPortMapping(worksheet.String("RtrDescription"), worksheet.Int("RtrExtPort"), worksheet.String("RtrIntClient"), worksheet.Int("RtrIntPort"), worksheet.String("RtrProtocol")); if(_PortMappings[0].Description == _Description && _PortMappings[0].ExternalPort == _Configuration.WebServerSettings.UPnpPort && _PortMappings[0].InternalClient == _WebServer.Object.NetworkIPAddress && _PortMappings[0].InternalPort == _WebServer.Object.Port && _PortMappings[0].Protocol == "TCP") _Manager.PutServerOntoInternet(); } _Manager.StateChanged += _StateChangedEvent.Handler; _Manager.TakeServerOffInternet(); _Provider.Verify(p => p.RemoveMapping(worksheet.Int("CnfUPnpPort"), "TCP"), worksheet.Bool("ExpectRemove") ? Times.Once() : Times.Never()); Assert.AreEqual(worksheet.Bool("ExpectIsPresent"), _Manager.PortForwardingPresent); Assert.AreEqual(worksheet.Bool("ExpectStateChanged") ? 1 : 0, _StateChangedEvent.CallCount); if(_StateChangedEvent.CallCount > 0) { Assert.AreSame(_Manager, _StateChangedEvent.Sender); Assert.IsNotNull(_StateChangedEvent.Args); } }
public void BaseStationDatabase_UpdateAircraftModeSCountry_Updates_ModeSCountry_For_Existing_Record() { _Database.WriteSupportEnabled = true; var worksheet = new ExcelWorksheetData(TestContext); var id = (int)AddAircraft(new BaseStationAircraft() { ModeS = "ZZZZZZ" }); var update = _Database.GetAircraftById(id); LoadAircraftFromSpreadsheet(worksheet, 0, update); _Database.UpdateAircraft(update); update.ModeSCountry = "Updated Mode-S Country"; _Database.UpdateAircraftModeSCountry(update.AircraftID, update.ModeSCountry); var readBack = _Database.GetAircraftById(id); AssertAircraftAreEqual(update, readBack, id); update.ModeSCountry = null; _Database.UpdateAircraftModeSCountry(update.AircraftID, update.ModeSCountry); readBack = _Database.GetAircraftById(id); AssertAircraftAreEqual(update, readBack, id); }
public void BaseStationDatabase_GetAircraftById_Returns_Aircraft_Object_For_Record_Identifier() { var worksheet = new ExcelWorksheetData(TestContext); var mockAircraft = LoadAircraftFromSpreadsheet(worksheet); var id = (int)AddAircraft(mockAircraft); var aircraft = _Database.GetAircraftById(id); Assert.AreNotSame(aircraft, mockAircraft); AssertAircraftAreEqual(mockAircraft, aircraft, id); }
public void UniversalPlugAndPlayManager_TakeServerOffInternet_Disconnects_And_Reconnects_WebServer() { var worksheet = new ExcelWorksheetData(TestContext); _Configuration.WebServerSettings.EnableUPnp = true; _Configuration.WebServerSettings.UPnpPort = 8080; _Configuration.WebServerSettings.IsOnlyInternetServerOnLan = true; _WebServer.Setup(s => s.NetworkIPAddress).Returns("192.168.0.1"); _WebServer.Setup(s => s.Port).Returns(80); var expectedStarts = 0; if(worksheet.Bool("StartOnline")) { _WebServer.Object.Online = true; ++expectedStarts; } _WebServer.SetupSet(s => s.Online = true).Callback(() => { Assert.IsFalse(_Manager.PortForwardingPresent); }); var expectedStops = 0; if(worksheet.Bool("ExpectServerToggle")) { ++expectedStarts; ++expectedStops; } _Manager.Initialise(); if(worksheet.Bool("StartPortForwarded")) { AddPortMapping(_Description, 8080, "192.168.0.1", 80, "TCP"); _Manager.PutServerOntoInternet(); } _Manager.StateChanged += _StateChangedEvent.Handler; _Manager.TakeServerOffInternet(); _WebServer.VerifySet(v => v.Online = true, Times.Exactly(expectedStarts)); _WebServer.VerifySet(v => v.Online = false, Times.Exactly(expectedStops)); }
public void BaseStationDatabase_InsertAircraft_Correctly_Inserts_Record() { _Database.WriteSupportEnabled = true; var worksheet = new ExcelWorksheetData(TestContext); var aircraft = LoadAircraftFromSpreadsheet(worksheet); _Database.InsertAircraft(aircraft); Assert.AreNotEqual(0, aircraft.AircraftID); var readBack = _Database.GetAircraftById(aircraft.AircraftID); AssertAircraftAreEqual(aircraft, readBack); }
public void UniversalPlugAndPlayManager_Trash_Mappings_Removed_During_Initialise() { var worksheet = new ExcelWorksheetData(TestContext); if(worksheet.String("RtrDescription") != null) { AddPortMapping(worksheet.String("RtrDescription"), worksheet.Int("RtrExtPort"), worksheet.String("RtrIntClient"), worksheet.Int("RtrIntPort"), worksheet.String("RtrProtocol")); } _Configuration.WebServerSettings.EnableUPnp = worksheet.Bool("CnfEnabled"); _Configuration.WebServerSettings.UPnpPort = worksheet.Int("CnfUPnpPort"); _Configuration.WebServerSettings.IsOnlyInternetServerOnLan = worksheet.Bool("CnfOnlyVRSOnNetwork"); _WebServer.Setup(s => s.NetworkIPAddress).Returns(worksheet.String("SvrAddress")); _WebServer.Setup(s => s.Port).Returns(worksheet.Int("SvrPort")); _Manager.Initialise(); _Provider.Verify(p => p.RemoveMapping(worksheet.Int("RtrExtPort"), worksheet.String("RtrProtocol")), worksheet.Bool("ExpectRemove") ? Times.Once() : Times.Never()); }