public void TestCommodityDrones() { CommodityDefinition trinket = CommodityDefinition.FromEDName("Drones"); Assert.AreEqual("Drones", trinket.edname); Assert.AreEqual("Limpet", trinket.invariantName); Assert.AreEqual("Non-marketable", trinket.Category.invariantName); }
public void TestCommodityMarketQuoteFromMarketJson() { var info = DeserializeJsonResource <MarketInfo>(Resources.market); var expectedMarketInfoItems = new List <MarketInfoItem>() { new MarketInfoItem(128668550, "$painite_name;", "$MARKET_category_minerals;", 0, 500096, 0, CommodityBracket.None, CommodityBracket.Medium, 0, 200), new MarketInfoItem(128673846, "$bromellite_name;", "$MARKET_category_minerals;", 0, 10009, 0, CommodityBracket.None, CommodityBracket.Medium, 0, 100), new MarketInfoItem(128673848, "$lowtemperaturediamond_name;", "$MARKET_category_minerals;", 0, 500553, 0, CommodityBracket.None, CommodityBracket.Medium, 0, 150), new MarketInfoItem(128924330, "$grandidierite_name;", "$MARKET_category_minerals;", 0, 424204, 0, CommodityBracket.None, CommodityBracket.Medium, 0, 100), new MarketInfoItem(128924331, "$alexandrite_name;", "$MARKET_category_minerals;", 0, 348192, 0, CommodityBracket.None, CommodityBracket.Medium, 0, 97), new MarketInfoItem(128924332, "$opal_name;", "$MARKET_category_minerals;", 0, 1014218, 0, CommodityBracket.None, CommodityBracket.Medium, 0, 300) }; Assert.AreEqual(3702012928, info.MarketID); Assert.AreEqual("X9K-WTW", info.StationName); Assert.AreEqual("Gateway", info.StarSystem); Assert.AreEqual(expectedMarketInfoItems.Count, info.Items.Count); foreach (var item in info.Items) { // Test that all items match expected definitions if (!expectedMarketInfoItems.Exists(i => i.DeepEquals(item))) { Assert.Fail(); } } // Test that the MarketInfoItem can be sucessfully converted to a definition based CommodityMarketQuote var quote = info.Items[0].ToCommodityMarketQuote(); Assert.AreEqual(128668550, quote.definition.EliteID); Assert.AreEqual("Painite", quote.definition.edname); Assert.AreEqual("Minerals", quote.definition.Category.invariantName); Assert.AreEqual(0, quote.buyprice); Assert.AreEqual(500096, quote.sellprice); Assert.AreEqual(CommodityDefinition.FromEDName("painite")?.avgprice, quote.avgprice); // Carriers always return an average price of zero. Verify this marches our commodity definition instead. Assert.AreEqual(CommodityBracket.None, quote.stockbracket); Assert.AreEqual(CommodityBracket.Medium, quote.demandbracket); Assert.AreEqual(0, quote.stock); Assert.AreEqual(200, quote.demand); Assert.AreEqual("Consumer", quote.StatusFlags.First()); }
public Station UpdateStation(DateTime profileTimeStamp, Station station) { if (station.updatedat > Dates.fromDateTimeToSeconds(profileTimeStamp)) { // The current station is already more up to date return(station); } if (station.marketId != marketId) { // The market IDs do not match, the stations are not the same return(station); } try { station.economyShares = economyShares.Select(e => e.ToEconomyShare()).ToList(); station.stationServices = stationServices.Select(s => StationService.FromEDName(s.Key)).ToList(); } catch (Exception e) { var data = new Dictionary <string, object>() { { "Exception", e }, { "Profile economy shares", economyShares }, { "Profile station services", stationServices }, { "Station", station } }; Logging.Error("Failed to update station economy and services from profile.", data); } if (commoditiesupdatedat != null && (station.commoditiesupdatedat ?? 0) < commoditiesupdatedat) { try { station.commodities = eddnCommodityMarketQuotes.Select(c => c.ToCommodityMarketQuote()).ToList(); station.prohibited = prohibitedCommodities.Select(p => CommodityDefinition.CommodityDefinitionFromEliteID(p.Key) ?? CommodityDefinition.FromEDName(p.Value)).ToList(); station.commoditiesupdatedat = commoditiesupdatedat; } catch (Exception e) { var data = new Dictionary <string, object>() { { "Exception", e }, { "Profile commodity quotes", eddnCommodityMarketQuotes }, { "Profile prohibited commodities", prohibitedCommodities }, { "Station", station } }; Logging.Error("Failed to update station market from profile.", data); } } if (outfittingupdatedat != null && (station.outfittingupdatedat ?? 0) < outfittingupdatedat) { try { station.outfitting = outfitting.Select(m => m.ToModule()).ToList(); station.outfittingupdatedat = outfittingupdatedat; } catch (Exception e) { var data = new Dictionary <string, object>() { { "Exception", e }, { "Profile outiftting", outfitting }, { "Station", station } }; Logging.Error("Failed to update station outfitting from profile.", data); } } if (shipyardupdatedat != null && (station.shipyardupdatedat ?? 0) < shipyardupdatedat) { try { station.shipyard = ships.Select(s => s.ToShip()).ToList(); station.shipyardupdatedat = shipyardupdatedat; } catch (Exception e) { var data = new Dictionary <string, object>() { { "Exception", e }, { "Profile ships", ships }, { "Station", station } }; Logging.Error("Failed to update station shipyard from profile.", data); } } station.updatedat = Dates.fromDateTimeToSeconds(profileTimeStamp); return(station); }
public void TestProfileUpdateStation() { // Set up our original station var originalStation = new Station() { name = "Libby Horizons", marketId = 3228854528, updatedat = 0 }; // Set up our profile station var profile = new Profile(); var marketTimestamp = DateTime.UtcNow; JObject marketJson = DeserializeJsonResource <JObject>(Resources.Libby_Horizons); profile.LastStation = CompanionAppService.ProfileStation(marketTimestamp, marketJson); var updatedStation = profile.LastStation.UpdateStation(DateTime.UtcNow, originalStation); Assert.IsTrue(updatedStation.economyShares.DeepEquals(new List <EconomyShare>() { new EconomyShare("Refinery", 0.88M), new EconomyShare("Industrial", 0.12M) })); Assert.IsTrue(updatedStation.stationServices.DeepEquals(new List <StationService>() { StationService.FromEDName("dock"), StationService.FromEDName("contacts"), StationService.FromEDName("exploration"), StationService.FromEDName("commodities"), StationService.FromEDName("refuel"), StationService.FromEDName("repair"), StationService.FromEDName("rearm"), StationService.FromEDName("outfitting"), StationService.FromEDName("shipyard"), StationService.FromEDName("crewlounge"), StationService.FromEDName("powerplay"), StationService.FromEDName("searchrescue"), StationService.FromEDName("materialtrader"), StationService.FromEDName("stationmenu"), StationService.FromEDName("shop"), StationService.FromEDName("engineer"), })); Assert.AreEqual(116, updatedStation.commodities.Count); Assert.IsTrue(new CommodityMarketQuote(CommodityDefinition.FromEDName("Tritium")) { buyprice = 41179, sellprice = 40693, demand = 1, demandbracket = CommodityBracket.None, stock = 10464, stockbracket = CommodityBracket.Medium, StatusFlags = new HashSet <string>() { "Producer" } }.DeepEquals(updatedStation.commodities.FirstOrDefault(c => c.EliteID == 128961249))); Assert.AreEqual(42558, CommodityDefinition.FromEDName("Tritium").avgprice); Assert.AreEqual(6, updatedStation.prohibited.Count); Assert.IsTrue(CommodityDefinition.FromEDName("Tobacco").DeepEquals(updatedStation.prohibited.FirstOrDefault(p => p.EliteID == 128049213))); Assert.AreEqual(Dates.fromDateTimeToSeconds(marketTimestamp), updatedStation.commoditiesupdatedat); }