示例#1
0
        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);
        }
示例#2
0
文件: EddnTests.cs 项目: intelfx/EDDI
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }
示例#8
0
        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);
        }
示例#9
0
        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);
        }
示例#10
0
        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);
        }
示例#11
0
        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);
        }
示例#12
0
        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);
        }
示例#13
0
        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();
            }
        }
示例#14
0
        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);
        }
示例#15
0
 private EDDNResponder.EDDNResponder makeTestEDDNResponder()
 {
     EDDNResponder.EDDNResponder responder = new EDDNResponder.EDDNResponder(new MockStarService());
     return(responder);
 }
示例#16
0
        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);
        }