public void TestEDDNResponderGoodMatch() { EDDNResponder.EDDNResponder responder = makeTestEDDNResponder(); var privateObject = new PrivateObject(responder); privateObject.SetFieldOrProperty("systemName", "Sol"); privateObject.SetFieldOrProperty("systemX", 0.0M); privateObject.SetFieldOrProperty("systemY", 0.0M); privateObject.SetFieldOrProperty("systemZ", 0.0M); bool matched = responder.eventSystemNameMatches("Sol"); Assert.IsTrue(matched); }
public void TestEDDNResponderGoodMatch() { EDDNResponder.EDDNResponder responder = makeTestEDDNResponder(); var privateObject = new PrivateObject(responder); privateObject.SetFieldOrProperty("systemName", "Sol"); privateObject.SetFieldOrProperty("systemAddress", 10477373803); privateObject.SetFieldOrProperty("systemX", 0.0M); privateObject.SetFieldOrProperty("systemY", 0.0M); privateObject.SetFieldOrProperty("systemZ", 0.0M); bool matched = responder.eventConfirmCoordinates("Sol", 10477373803); Assert.IsTrue(matched); }
public void TestEDDNResponderGoodInitialBadFinal() { EDDNResponder.EDDNResponder responder = makeTestEDDNResponder(); var privateObject = new PrivateObject(responder); privateObject.SetFieldOrProperty("systemName", "Sol"); privateObject.SetFieldOrProperty("systemX", 0.0M); privateObject.SetFieldOrProperty("systemY", 0.0M); privateObject.SetFieldOrProperty("systemZ", 0.0M); bool matched = responder.eventSystemNameMatches("Not in this galaxy"); Assert.IsFalse(matched); Assert.IsNull(responder.systemX); Assert.IsNull(responder.systemY); Assert.IsNull(responder.systemZ); }
public void TestEDDNResponderBadInitialGoodFinal() { EDDNResponder.EDDNResponder responder = makeTestEDDNResponder(); var privateObject = new PrivateObject(responder); // Intentionally place our EDDN responder in a state with no coordinates available. privateObject.SetFieldOrProperty("systemName", "Not in this galaxy"); privateObject.SetFieldOrProperty("systemX", null); privateObject.SetFieldOrProperty("systemY", null); privateObject.SetFieldOrProperty("systemZ", null); bool matched = responder.eventSystemNameMatches("Artemis"); Assert.IsTrue(matched); Assert.AreEqual("Artemis", responder.systemName); Assert.AreEqual(14.28125M, (decimal)responder.systemX); Assert.AreEqual(-63.1875M, (decimal)responder.systemY); Assert.AreEqual(-24.875M, (decimal)responder.systemZ); }
public void TestEDDNResponderUnverifiableData() { EDDNResponder.EDDNResponder responder = makeTestEDDNResponder(); var privateObject = new PrivateObject(responder); privateObject.SetFieldOrProperty("systemName", "Sol"); privateObject.SetFieldOrProperty("systemAddress", 10477373803); privateObject.SetFieldOrProperty("systemX", 0.0M); privateObject.SetFieldOrProperty("systemY", 0.0M); privateObject.SetFieldOrProperty("systemZ", 0.0M); bool confirmed = (bool)privateObject.Invoke("ConfirmAddressAndCoordinates", new object[] { "Not in this galaxy" }); Assert.IsFalse(confirmed); Assert.IsNull(responder.systemName); Assert.IsNull(responder.systemAddress); Assert.IsNull(responder.systemX); Assert.IsNull(responder.systemY); Assert.IsNull(responder.systemZ); }
public void TestEDDNResponderGoodMatch() { EDDNResponder.EDDNResponder responder = makeTestEDDNResponder(); var privateObject = new PrivateObject(responder); privateObject.SetFieldOrProperty("systemName", "Sol"); privateObject.SetFieldOrProperty("systemAddress", 10477373803); privateObject.SetFieldOrProperty("systemX", 0.0M); privateObject.SetFieldOrProperty("systemY", 0.0M); privateObject.SetFieldOrProperty("systemZ", 0.0M); bool confirmed = (bool)privateObject.Invoke("ConfirmAddressAndCoordinates", new object[] { "Sol" }); Assert.IsTrue(confirmed); Assert.AreEqual("Sol", responder.systemName); Assert.AreEqual(10477373803, responder.systemAddress); Assert.AreEqual(0.0M, responder.systemX); Assert.AreEqual(0.0M, responder.systemY); Assert.AreEqual(0.0M, responder.systemZ); }
public void TestEDDNResponderBadName() { // Tests that procedurally generated body names match the procedurally generated system name EDDNResponder.EDDNResponder responder = makeTestEDDNResponder(); var privateObject = new PrivateObject(responder); privateObject.SetFieldOrProperty("systemName", "Pleiades Sector HR-W d1-79"); privateObject.SetFieldOrProperty("systemAddress", 2724879894859); privateObject.SetFieldOrProperty("systemX", -80.62500M); privateObject.SetFieldOrProperty("systemY", -146.65625M); privateObject.SetFieldOrProperty("systemZ", -343.25000M); bool confirmed = (bool)privateObject.Invoke("ConfirmScan", new object[] { "Hyades Sector DL-X b1-2" }); Assert.IsFalse(confirmed); Assert.IsNull(responder.systemName); Assert.IsNull(responder.systemAddress); Assert.IsNull(responder.systemX); Assert.IsNull(responder.systemY); Assert.IsNull(responder.systemZ); }
public void TestEDDNResponderBadSystemAddress() { EDDNResponder.EDDNResponder responder = makeTestEDDNResponder(); var privateObject = new PrivateObject(responder); // Intentionally place our EDDN responder in a state with incorrect SystemAddress (from Artemis). privateObject.SetFieldOrProperty("systemName", "Sol"); privateObject.SetFieldOrProperty("systemAddress", 3107509474002); privateObject.SetFieldOrProperty("systemX", 0.0M); privateObject.SetFieldOrProperty("systemY", 0.0M); privateObject.SetFieldOrProperty("systemZ", 0.0M); bool confirmed = (bool)privateObject.Invoke("ConfirmAddressAndCoordinates", new object[] { "Sol" }); Assert.IsFalse(confirmed); Assert.AreEqual("Sol", responder.systemName); Assert.IsNull(responder.systemAddress); Assert.AreEqual(0.0M, responder.systemX); Assert.AreEqual(0.0M, responder.systemY); Assert.AreEqual(0.0M, responder.systemZ); }
public void TestEDDNResponderBadStarPos() { EDDNResponder.EDDNResponder responder = makeTestEDDNResponder(); var privateObject = new PrivateObject(responder); // Intentionally place our EDDN responder in a state with incorrect coordinates (from Sol). // The 'Docked' event does include systemName and systemAddress, so we set those here. privateObject.SetFieldOrProperty("systemName", "Artemis"); privateObject.SetFieldOrProperty("systemAddress", 3107509474002); privateObject.SetFieldOrProperty("systemX", 0.0M); privateObject.SetFieldOrProperty("systemY", 0.0M); privateObject.SetFieldOrProperty("systemZ", 0.0M); bool confirmed = (bool)privateObject.Invoke("ConfirmAddressAndCoordinates", new object[] { "Artemis" }); Assert.IsFalse(confirmed); Assert.AreEqual("Artemis", responder.systemName); Assert.AreEqual(3107509474002, responder.systemAddress); Assert.IsNull(responder.systemX); Assert.IsNull(responder.systemY); Assert.IsNull(responder.systemZ); }
public void TestEDDNResponderBadInitialGoodFinal() { EDDNResponder.EDDNResponder responder = makeTestEDDNResponder(); var privateObject = new PrivateObject(responder); // Intentionally place our EDDN responder in a state with no coordinates available. // The 'Docked' event does include systemName and systemAddress, so we set those here. privateObject.SetFieldOrProperty("systemName", "Artemis"); privateObject.SetFieldOrProperty("systemAddress", 3107509474002); privateObject.SetFieldOrProperty("systemX", null); privateObject.SetFieldOrProperty("systemY", null); privateObject.SetFieldOrProperty("systemZ", null); bool matched = responder.eventGetCoordinates("Artemis", 3107509474002); Assert.IsTrue(matched); Assert.AreEqual("Artemis", responder.systemName); Assert.AreEqual(3107509474002, responder.systemAddress); Assert.AreEqual(14.28125M, (decimal)responder.systemX); Assert.AreEqual(-63.1875M, (decimal)responder.systemY); Assert.AreEqual(-24.875M, (decimal)responder.systemZ); }
public void TestUnhandledEvents() { string location = @"{ ""timestamp"":""2018-12-16T20:08:31Z"", ""event"":""Location"", ""Docked"":false, ""StarSystem"":""Pleiades Sector GW-W c1-4"", ""SystemAddress"":1183229809290, ""StarPos"":[-81.62500,-151.31250,-383.53125], ""SystemAllegiance"":"""", ""SystemEconomy"":""$economy_None;"", ""SystemEconomy_Localised"":""None"", ""SystemSecondEconomy"":""$economy_None;"", ""SystemSecondEconomy_Localised"":""None"", ""SystemGovernment"":""$government_None;"", ""SystemGovernment_Localised"":""None"", ""SystemSecurity"":""$GAlAXY_MAP_INFO_state_anarchy;"", ""SystemSecurity_Localised"":""Anarchy"", ""Population"":0, ""Body"":""Pleiades Sector GW-W c1-4"", ""BodyID"":0, ""BodyType"":""Star"" }"; string jump = @"{ ""timestamp"":""2018-12-16T20:10:15Z"", ""event"":""FSDJump"", ""StarSystem"":""Pleiades Sector HR-W d1-79"", ""SystemAddress"":2724879894859, ""StarPos"":[-80.62500,-146.65625,-343.25000], ""SystemAllegiance"":""Independent"", ""SystemEconomy"":""$economy_Extraction;"", ""SystemEconomy_Localised"":""Extraction"", ""SystemSecondEconomy"":""$economy_None;"", ""SystemSecondEconomy_Localised"":""None"", ""SystemGovernment"":""$government_Prison;"", ""SystemGovernment_Localised"":""Detention Centre"", ""SystemSecurity"":""$SYSTEM_SECURITY_high;"", ""SystemSecurity_Localised"":""High Security"", ""Population"":0, ""JumpDist"":40.562, ""FuelUsed"":2.827265, ""FuelLevel"":11.702736, ""Factions"":[ { ""Name"":""Independent Detention Foundation"", ""FactionState"":""None"", ""Government"":""Prison"", ""Influence"":0.000000, ""Allegiance"":""Independent"", ""Happiness"":""$Faction_HappinessBand2;"", ""Happiness_Localised"":""Happy"", ""MyReputation"":0.000000 }, { ""Name"":""Pilots Federation Local Branch"", ""FactionState"":""None"", ""Government"":""Democracy"", ""Influence"":0.000000, ""Allegiance"":""PilotsFederation"", ""Happiness"":"""", ""MyReputation"":100.000000 } ], ""SystemFaction"":""Independent Detention Foundation"" }"; string scan = @"{ ""timestamp"":""2018-12-16T20:10:21Z"", ""event"":""Scan"", ""ScanType"":""AutoScan"", ""BodyName"":""Pleiades Sector HR-W d1-79"", ""BodyID"":0, ""DistanceFromArrivalLS"":0.000000, ""StarType"":""F"", ""StellarMass"":1.437500, ""Radius"":855515008.000000, ""AbsoluteMagnitude"":3.808395, ""Age_MY"":1216, ""SurfaceTemperature"":6591.000000, ""Luminosity"":""Vab"", ""RotationPeriod"":261918.156250, ""AxialTilt"":0.000000 }"; string scan2 = @"{ ""timestamp"":""2018-12-16T20:28:02Z"", ""event"":""Scan"", ""ScanType"":""Detailed"", ""BodyName"":""Hyades Sector DL-X b1-2"", ""BodyID"":0, ""DistanceFromArrivalLS"":0.000000, ""StarType"":""M"", ""StellarMass"":0.367188, ""Radius"":370672928.000000, ""AbsoluteMagnitude"":9.054306, ""Age_MY"":586, ""SurfaceTemperature"":2993.000000, ""Luminosity"":""Va"", ""RotationPeriod"":167608.859375, ""AxialTilt"":0.000000, ""Rings"":[ { ""Name"":""Hyades Sector DL-X b1-2 A Belt"", ""RingClass"":""eRingClass_MetalRich"", ""MassMT"":5.4671e+13, ""InnerRad"":7.1727e+08, ""OuterRad"":1.728e+09 }, { ""Name"":""Hyades Sector DL-X b1-2 B Belt"", ""RingClass"":""eRingClass_Icy"", ""MassMT"":8.7822e+14, ""InnerRad"":6.3166e+10, ""OuterRad"":1.5917e+11 } ] }"; string jump2 = @"{ ""timestamp"":""2019-01-27T07:23:38Z"", ""event"":""FSDJump"", ""StarSystem"":""Omega Sector OO-G a11-0"", ""SystemAddress"":5213552532472, ""StarPos"":[-1433.53125,-94.15625,5326.34375], ""SystemAllegiance"":"""", ""SystemEconomy"":""$economy_None;"", ""SystemEconomy_Localised"":""None"", ""SystemSecondEconomy"":""$economy_None;"", ""SystemSecondEconomy_Localised"":""None"", ""SystemGovernment"":""$government_None;"", ""SystemGovernment_Localised"":""None"", ""SystemSecurity"":""$GAlAXY_MAP_INFO_state_anarchy;"", ""SystemSecurity_Localised"":""Anarchy"", ""Population"":0, ""JumpDist"":56.848, ""FuelUsed"":4.741170, ""FuelLevel"":21.947533 }"; string scan3 = @"{""timestamp"":""2019-01-27T07:07:46Z"",""event"":""Scan"",""ScanType"":""AutoScan"",""BodyName"":""Omega Sector DM-M b7-16 A B Belt Cluster 8"",""BodyID"":23,""Parents"":[{""Ring"":15},{""Star"":1},{""Null"":0}],""DistanceFromArrivalLS"":646.57074}"; EDDNResponder.EDDNResponder responder = makeTestEDDNResponder(); var privateObject = new PrivateObject(responder); object[] arguments; UnhandledEvent unhandledLocation = new UnhandledEvent(DateTime.UtcNow, "Location") { raw = location }; arguments = new object[] { unhandledLocation }; privateObject.Invoke("handleRawEvent", arguments); Assert.AreEqual("Pleiades Sector GW-W c1-4", responder.systemName); Assert.AreEqual(1183229809290, responder.systemAddress); Assert.AreEqual(-81.62500M, responder.systemX); Assert.AreEqual(-151.31250M, responder.systemY); Assert.AreEqual(-383.53125M, responder.systemZ); Assert.IsNull(responder.stationName); Assert.IsNull(responder.marketId); UnhandledEvent unhandledJump = new UnhandledEvent(DateTime.UtcNow, "FSDJump") { raw = jump }; arguments = new object[] { unhandledJump }; privateObject.Invoke("handleRawEvent", arguments); Assert.AreEqual("Pleiades Sector HR-W d1-79", responder.systemName); Assert.AreEqual(2724879894859, responder.systemAddress); Assert.AreEqual(-80.62500M, responder.systemX); Assert.AreEqual(-146.65625M, responder.systemY); Assert.AreEqual(-343.25000M, responder.systemZ); Assert.IsNull(responder.stationName); Assert.IsNull(responder.marketId); UnhandledEvent unhandledScan = new UnhandledEvent(DateTime.UtcNow, "Scan") { raw = scan }; arguments = new object[] { unhandledScan }; privateObject.Invoke("handleRawEvent", arguments); Assert.AreEqual("Pleiades Sector HR-W d1-79", responder.systemName); Assert.AreEqual(2724879894859, responder.systemAddress); Assert.AreEqual(-80.62500M, responder.systemX); Assert.AreEqual(-146.65625M, responder.systemY); Assert.AreEqual(-343.25000M, responder.systemZ); Assert.IsNull(responder.stationName); Assert.IsNull(responder.marketId); // Deliberately scan a procedurally generated body that doesn't match our last known location & verify heuristics catch it UnhandledEvent unhandledScan2 = new UnhandledEvent(DateTime.UtcNow, "Scan") { raw = scan2 }; arguments = new object[] { unhandledScan2 }; privateObject.Invoke("handleRawEvent", arguments); Assert.IsNull(responder.systemName); Assert.IsNull(responder.systemAddress); Assert.IsNull(responder.systemX); Assert.IsNull(responder.systemY); Assert.IsNull(responder.systemZ); Assert.IsNull(responder.stationName); Assert.IsNull(responder.marketId); // Reset our position by re-stating the `FSDJump` event arguments = new object[] { unhandledJump }; privateObject.Invoke("handleRawEvent", arguments); // Deliberately create a mismatch between the system and coordinates, // using the coordinates from our Location event and other data from our FSDJump event privateObject.SetFieldOrProperty("systemX", -81.62500M); privateObject.SetFieldOrProperty("systemY", -151.31250M); privateObject.SetFieldOrProperty("systemZ", -383.53125M); // Deliberately scan a body while our coordinates are in a bad state arguments = new object[] { unhandledScan }; privateObject.Invoke("handleRawEvent", arguments); Assert.IsNull(responder.systemX); Assert.IsNull(responder.systemY); Assert.IsNull(responder.systemZ); // Reset our position by re-stating the `FSDJump` event arguments = new object[] { unhandledJump }; privateObject.Invoke("handleRawEvent", arguments); // Deliberately create a mismatch between the system name and address, // using the address from our Location event and other data from our FSDJump event privateObject.SetFieldOrProperty("systemAddress", 1183229809290); // Deliberately scan a body while our system address is in a bad state arguments = new object[] { unhandledScan }; privateObject.Invoke("handleRawEvent", arguments); Assert.IsNull(responder.systemAddress); // Reset our position by stating another `FSDJump` event UnhandledEvent unhandledJump2 = new UnhandledEvent(DateTime.UtcNow, "FSDJump") { raw = jump2 }; arguments = new object[] { unhandledJump2 }; privateObject.Invoke("handleRawEvent", arguments); // Scan a belt cluster from a different star system UnhandledEvent unhandledScan3 = new UnhandledEvent(DateTime.UtcNow, "Scan") { raw = scan3 }; arguments = new object[] { unhandledScan3 }; privateObject.Invoke("handleRawEvent", arguments); Assert.IsNull(responder.systemName); Assert.IsNull(responder.systemAddress); Assert.IsNull(responder.systemX); Assert.IsNull(responder.systemY); Assert.IsNull(responder.systemZ); }
public void TestStripPersonalData() { // we fail if any key with the value "bad" survives the test IDictionary <string, object> data = new Dictionary <string, object>() { { "good key", "good" }, { "ActiveFine", "bad" }, { "CockpitBreach", "bad" }, { "BoostUsed", "bad" }, { "FuelLevel", "bad" }, { "FuelUsed", "bad" }, { "JumpDist", "bad" }, { "Wanted", "bad" }, { "Latitude", "bad" }, { "Longitude", "bad" }, { "Factions", new List <object>() { new Dictionary <string, object>() { { "good key", "good" }, { "MyReputation", "bad" }, { "SquadronFaction", "bad" }, { "HappiestSystem", "bad" }, { "HomeSystem", "bad" }, { "blah_Localised", "bad" }, } } } }; EDDNResponder.EDDNResponder responder = makeTestEDDNResponder(); var privateObject = new PrivateObject(responder); data = (IDictionary <string, object>)privateObject.Invoke("StripPersonalData", new object[] { data }); void testKeyValuePair(KeyValuePair <string, object> kvp) { if (kvp.Value as string == "bad") { Assert.Fail($"key '{kvp.Key}' should have been stripped."); } } void testDictionary(IDictionary <string, object> dict) { foreach (KeyValuePair <string, object> kvp in dict) { var value = kvp.Value; if (value is string) { testKeyValuePair(kvp); } if (value is IList <object> ) { IList <object> list = value as List <object>; foreach (object item in list) { testDictionary((IDictionary <string, object>)item); } } } } testDictionary(data); }
public void TestMyReputationDataStripping() { string line = @"{ ""timestamp"": ""2018-11-19T01: 06: 17Z"", ""event"": ""Location"", ""Docked"": false, ""StarSystem"": ""BD+48738"", ""SystemAddress"": 908352033466, ""StarPos"": [-93.53125, -24.46875, -114.71875], ""SystemAllegiance"": ""Independent"", ""SystemEconomy"": ""$economy_Extraction;"", ""SystemEconomy_Localised"": ""Extraction"", ""SystemSecondEconomy"": ""$economy_Industrial;"", ""SystemSecondEconomy_Localised"": ""Industrial"", ""SystemGovernment"": ""$government_Cooperative;"", ""SystemGovernment_Localised"": ""Cooperative"", ""SystemSecurity"": ""$SYSTEM_SECURITY_medium;"", ""SystemSecurity_Localised"": ""MediumSecurity"", ""Population"": 2530147, ""Body"": ""LinnaeusEnterprise"", ""BodyID"": 28, ""BodyType"": ""Station"", ""Factions"": [{ ""Name"": ""IndependentBD+48738Liberals"", ""FactionState"": ""None"", ""Government"": ""Democracy"", ""Influence"": 0.037000, ""Allegiance"": ""Federation"", ""Happiness"": ""$Faction_HappinessBand2;"", ""Happiness_Localised"": ""Happy"", ""MyReputation"": 0.000000 }, { ""Name"": ""PilotsFederationLocalBranch"", ""FactionState"": ""None"", ""Government"": ""Democracy"", ""Influence"": 0.000000, ""Allegiance"": ""PilotsFederation"", ""Happiness"": """", ""MyReputation"": 100.000000 }, { ""Name"": ""NewBD+48738Focus"", ""FactionState"": ""None"", ""Government"": ""Dictatorship"", ""Influence"": 0.046000, ""Allegiance"": ""Independent"", ""Happiness"": ""$Faction_HappinessBand2;"", ""Happiness_Localised"": ""Happy"", ""MyReputation"": 0.000000 }, { ""Name"": ""BD+48738CrimsonTravelCo"", ""FactionState"": ""None"", ""Government"": ""Corporate"", ""Influence"": 0.032000, ""Allegiance"": ""Independent"", ""Happiness"": ""$Faction_HappinessBand2;"", ""Happiness_Localised"": ""Happy"", ""MyReputation"": 0.000000 }, { ""Name"": ""BD+48738CrimsonPosse"", ""FactionState"": ""None"", ""Government"": ""Anarchy"", ""Influence"": 0.010000, ""Allegiance"": ""Independent"", ""Happiness"": ""$Faction_HappinessBand2;"", ""Happiness_Localised"": ""Happy"", ""MyReputation"": 0.000000 }, { ""Name"": ""Laniakea"", ""FactionState"": ""None"", ""Government"": ""Cooperative"", ""Influence"": 0.875000, ""Allegiance"": ""Independent"", ""Happiness"": ""$Faction_HappinessBand2;"", ""Happiness_Localised"": ""Happy"", ""MyReputation"": 0.000000, ""PendingStates"": [{ ""State"": ""Expansion"", ""Trend"": 0 }] }], ""SystemFaction"": { ""Name"": ""Laniakea"", ""FactionState"": ""None"" } }"; IDictionary <string, object> data = Utilities.Deserializtion.DeserializeData(line); EDDNResponder.EDDNResponder responder = makeTestEDDNResponder(); var privateObject = new PrivateObject(responder); data = (IDictionary <string, object>)privateObject.Invoke("StripPersonalData", new object[] { data }); data.TryGetValue("Factions", out object factionsVal); if (factionsVal != null) { var factions = (List <object>)factionsVal; foreach (object faction in factions) { Assert.IsFalse(((IDictionary <string, object>)faction).ContainsKey("MyReputation")); } } else { Assert.Fail(); } }
public void TestEDDNResponderDockedEvent() { string line = @"{ ""timestamp"": ""2018-07-30T04:50:32Z"", ""event"": ""FSDJump"", ""StarSystem"": ""Diaguandri"", ""SystemAddress"": 670417429889, ""StarPos"": [-41.06250, -62.15625, -103.25000], ""SystemAllegiance"": ""Independent"", ""SystemEconomy"": ""$economy_HighTech;"", ""SystemEconomy_Localised"": ""High Tech"", ""SystemSecondEconomy"": ""$economy_Refinery;"", ""SystemSecondEconomy_Localised"": ""Refinery"", ""SystemGovernment"": ""$government_Democracy;"", ""SystemGovernment_Localised"": ""Democracy"", ""SystemSecurity"": ""$SYSTEM_SECURITY_medium;"", ""SystemSecurity_Localised"": ""Medium Security"", ""Population"": 10303479, ""JumpDist"": 8.018, ""FuelUsed"": 0.917520, ""FuelLevel"": 29.021893, ""Factions"": [{ ""Name"": ""Diaguandri Interstellar"", ""FactionState"": ""Election"", ""Government"": ""Corporate"", ""Influence"": 0.072565, ""Allegiance"": ""Independent"", ""RecoveringStates"": [{ ""State"": ""Boom"", ""Trend"": 0 }] }, { ""Name"": ""People's MET 20 Liberals"", ""FactionState"": ""Boom"", ""Government"": ""Democracy"", ""Influence"": 0.092445, ""Allegiance"": ""Federation"" }, { ""Name"": ""Pilots Federation Local Branch"", ""FactionState"": ""None"", ""Government"": ""Democracy"", ""Influence"": 0.000000, ""Allegiance"": ""PilotsFederation"" }, { ""Name"": ""Natural Diaguandri Regulatory State"", ""FactionState"": ""CivilWar"", ""Government"": ""Dictatorship"", ""Influence"": 0.009940, ""Allegiance"": ""Independent"" }, { ""Name"": ""Cartel of Diaguandri"", ""FactionState"": ""CivilWar"", ""Government"": ""Anarchy"", ""Influence"": 0.009940, ""Allegiance"": ""Independent"", ""PendingStates"": [{ ""State"": ""Bust"", ""Trend"": 0 }] }, { ""Name"": ""Revolutionary Party of Diaguandri"", ""FactionState"": ""None"", ""Government"": ""Democracy"", ""Influence"": 0.050696, ""Allegiance"": ""Federation"", ""PendingStates"": [{ ""State"": ""Bust"", ""Trend"": 1 }] }, { ""Name"": ""The Brotherhood of the Dark Circle"", ""FactionState"": ""Election"", ""Government"": ""Corporate"", ""Influence"": 0.078529, ""Allegiance"": ""Independent"", ""PendingStates"": [{ ""State"": ""CivilUnrest"", ""Trend"": 0 }], ""RecoveringStates"": [{ ""State"": ""Boom"", ""Trend"": 0 }] }, { ""Name"": ""EXO"", ""FactionState"": ""Boom"", ""Government"": ""Democracy"", ""Influence"": 0.685885, ""Allegiance"": ""Independent"", ""PendingStates"": [{ ""State"": ""Expansion"", ""Trend"": 0 }] }], ""SystemFaction"": { ""Name"": ""EXO"", ""FactionState"": ""Boom"" } }"; string line2 = @"{ ""timestamp"": ""2018-07-30T06: 07: 47Z"", ""event"": ""Docked"", ""StationName"": ""Ray Gateway"", ""StationType"": ""Coriolis"", ""StarSystem"": ""Diaguandri"", ""SystemAddress"": 670417429889, ""MarketID"": 3223343616, ""StationFaction"": { ""Name"": ""EXO"", ""FactionState"": ""Boom"" }, ""StationGovernment"": ""$government_Democracy;"", ""StationGovernment_Localised"": ""Democracy"", ""StationServices"": [""Dock"", ""Autodock"", ""BlackMarket"", ""Commodities"", ""Contacts"", ""Exploration"", ""Missions"", ""Outfitting"", ""CrewLounge"", ""Rearm"", ""Refuel"", ""Repair"", ""Shipyard"", ""Tuning"", ""Workshop"", ""MissionsGenerated"", ""FlightController"", ""StationOperations"", ""Powerplay"", ""SearchAndRescue"", ""MaterialTrader"", ""TechBroker""], ""StationEconomy"": ""$economy_HighTech;"", ""StationEconomy_Localised"": ""HighTech"", ""StationEconomies"": [{ ""Name"": ""$economy_HighTech;"", ""Name_Localised"": ""HighTech"", ""Proportion"": 0.800000 }, { ""Name"": ""$economy_Refinery;"", ""Name_Localised"": ""Refinery"", ""Proportion"": 0.200000 }], ""DistFromStarLS"": 566.487976 }"; List <Event> events = JournalMonitor.ParseJournalEntry(line); Assert.IsTrue(events.Count == 1); JumpedEvent @jumpedEvent = (JumpedEvent)events[0]; events = JournalMonitor.ParseJournalEntry(line2); Assert.IsTrue(events.Count == 1); DockedEvent @dockedEvent = (DockedEvent)events[0]; EDDNResponder.EDDNResponder responder = makeTestEDDNResponder(); responder.Handle(@jumpedEvent); responder.Handle(@dockedEvent); // Test that data available from the event is set correctly Assert.AreEqual("Diaguandri", responder.systemName); Assert.AreEqual(670417429889, responder.systemAddress); Assert.AreEqual("Ray Gateway", responder.stationName); Assert.AreEqual(3223343616, responder.marketId); // Test metadata not in the event itself but retrieved from memory and confirmed by our local database Assert.AreEqual(-41.06250M, responder.systemX); Assert.AreEqual(-62.15625M, responder.systemY); Assert.AreEqual(-103.25000M, responder.systemZ); }
private EDDNResponder.EDDNResponder makeTestEDDNResponder() { EDDNResponder.EDDNResponder responder = new EDDNResponder.EDDNResponder(new MockStarService()); return(responder); }
public void TestEDDNResponderDockedEvent() { string line = @"{ ""timestamp"": ""2018-07-30T06: 07: 47Z"", ""event"": ""Docked"", ""StationName"": ""Ray Gateway"", ""StationType"": ""Coriolis"", ""StarSystem"": ""Diaguandri"", ""SystemAddress"": 670417429889, ""MarketID"": 3223343616, ""StationFaction"": ""EXO"", ""FactionState"": ""Boom"", ""StationGovernment"": ""$government_Democracy;"", ""StationGovernment_Localised"": ""Democracy"", ""StationServices"": [""Dock"", ""Autodock"", ""BlackMarket"", ""Commodities"", ""Contacts"", ""Exploration"", ""Missions"", ""Outfitting"", ""CrewLounge"", ""Rearm"", ""Refuel"", ""Repair"", ""Shipyard"", ""Tuning"", ""Workshop"", ""MissionsGenerated"", ""FlightController"", ""StationOperations"", ""Powerplay"", ""SearchAndRescue"", ""MaterialTrader"", ""TechBroker""], ""StationEconomy"": ""$economy_HighTech;"", ""StationEconomy_Localised"": ""HighTech"", ""StationEconomies"": [{ ""Name"": ""$economy_HighTech;"", ""Name_Localised"": ""HighTech"", ""Proportion"": 0.800000 }, { ""Name"": ""$economy_Refinery;"", ""Name_Localised"": ""Refinery"", ""Proportion"": 0.200000 }], ""DistFromStarLS"": 566.487976 }"; List <Event> events = JournalMonitor.ParseJournalEntry(line); Assert.IsTrue(events.Count == 1); DockedEvent @event = (DockedEvent)events[0]; EDDNResponder.EDDNResponder responder = makeTestEDDNResponder(); responder.Handle(@event); // Test that data available from the event is set correctly Assert.AreEqual("Diaguandri", responder.systemName); Assert.AreEqual(670417429889, responder.systemAddress); Assert.AreEqual("Ray Gateway", responder.stationName); Assert.AreEqual(3223343616, responder.marketId); // Test metadata not in the event itself but retrieved from our local database Assert.AreEqual(-41.06250M, responder.systemX); Assert.AreEqual(-62.15625M, responder.systemY); Assert.AreEqual(-103.25000M, responder.systemZ); }