public void SerializeRoundTrip() { var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All }; var createdAt = new DateTime(2020, 3, 19, 10, 0, 0); var updatedAt = new DateTime(2020, 3, 19, 10, 15, 0); var item = new BenzingaNews { Id = 1, Symbol = Symbols.SPY, Title = "title", CreatedAt = createdAt, UpdatedAt = updatedAt, }; var serialized = JsonConvert.SerializeObject(item, settings); var deserialized = JsonConvert.DeserializeObject <BenzingaNews>(serialized, settings); Assert.AreEqual(1, deserialized.Id); Assert.AreEqual(Symbols.SPY, deserialized.Symbol); Assert.AreEqual("title", deserialized.Title); Assert.AreEqual(createdAt, deserialized.CreatedAt); Assert.AreEqual(updatedAt, deserialized.UpdatedAt); Assert.AreEqual(updatedAt, deserialized.Time); Assert.AreEqual(updatedAt, deserialized.EndTime); }
public void SerializeWithConverterNullValuesIgnored() { var date = new DateTime(2020, 3, 19); var converter = new BenzingaNewsJsonConverter(); var instance = new BenzingaNews { Author = "", Categories = new List <string>(), Contents = "", CreatedAt = date, Id = default(int), Symbol = null, Symbols = new List <Symbol> { Symbol.Create("AAPL", SecurityType.Equity, QuantConnect.Market.USA), Symbol.Create("SPY", SecurityType.Equity, QuantConnect.Market.USA) }, Tags = new List <string> { "Politics" }, Teaser = "", Time = date, Title = "", UpdatedAt = date, }; var expectedSerialized = @"{""id"":0,""author"":"""",""created"":""2020-03-19T00:00:00Z"",""updated"":""2020-03-19T00:00:00Z"",""title"":"""",""teaser"":"""",""body"":"""",""channels"":[],""stocks"":[{""name"":""AAPL""},{""name"":""SPY""}],""tags"":[{""name"":""Politics""}],""EndTime"":""2020-03-19T00:00:00Z"",""DataType"":0,""IsFillForward"":false,""Time"":""2020-03-19T00:00:00Z"",""Value"":0.0,""Price"":0.0}"; var actualSerialized = JsonConvert.SerializeObject(instance, new JsonSerializerSettings { Converters = new[] { converter }, DateTimeZoneHandling = DateTimeZoneHandling.Utc, Formatting = Formatting.None }); Assert.AreEqual(expectedSerialized, actualSerialized); var instanceRoundTripActual = JsonConvert.DeserializeObject <BenzingaNews>(actualSerialized, converter); Assert.AreEqual(instance.Author, instanceRoundTripActual.Author); Assert.IsTrue(instance.Categories.SequenceEqual(instanceRoundTripActual.Categories)); Assert.AreEqual(instance.Contents, instanceRoundTripActual.Contents); Assert.AreEqual(instance.CreatedAt, instanceRoundTripActual.CreatedAt); Assert.AreEqual(instance.Id, instanceRoundTripActual.Id); Assert.AreEqual(instance.Symbol, instanceRoundTripActual.Symbol); Assert.IsTrue(instance.Symbols.SequenceEqual(instanceRoundTripActual.Symbols)); Assert.IsTrue(instance.Tags.SequenceEqual(instanceRoundTripActual.Tags)); Assert.AreEqual(instance.Teaser, instanceRoundTripActual.Teaser); Assert.AreEqual(instance.Time, instanceRoundTripActual.Time); Assert.AreEqual(instance.Title, instanceRoundTripActual.Title); Assert.AreEqual(instance.UpdatedAt, instanceRoundTripActual.UpdatedAt); }
public void BenzingaNewsEmptyTagsSymbolsRoundTrip() { var symbol = Symbol.CreateBase( typeof(BenzingaNews), Symbol.Create("AAPL", SecurityType.Equity, Market.USA), Market.USA); var news = new BenzingaNews { Id = 1000, Author = "Benzinga", DataType = MarketDataType.Base, CreatedAt = DateTime.UtcNow, UpdatedAt = DateTime.UtcNow, Title = "Round Trip To Planet Protobuf Successful", Teaser = "Round trip to planet Protobuf is successful, ushering us into a new era for mining", Contents = "Round trip to planet Protobuf is successful, ushering us into a new era for mining", Categories = new List <string> { "aerospace", "technology" }, Symbols = new List <Symbol>(), Tags = new List <string>(), Time = DateTime.UtcNow, Symbol = symbol }; var serializedNews = news.ProtobufSerialize(); using (var stream = new MemoryStream(serializedNews)) { var result = (BenzingaNews)Serializer.Deserialize <IEnumerable <BaseData> >(stream).First(); Assert.AreEqual(news.Id, result.Id); Assert.AreEqual(news.Author, result.Author); Assert.AreEqual(news.DataType, result.DataType); Assert.AreEqual(news.CreatedAt, result.CreatedAt); Assert.AreEqual(news.UpdatedAt, result.UpdatedAt); Assert.AreEqual(news.Title, result.Title); Assert.AreEqual(news.Teaser, result.Teaser); Assert.AreEqual(news.Contents, result.Contents); Assert.IsTrue(news.Categories.SequenceEqual(result.Categories)); Assert.IsTrue(news.Symbols.SequenceEqual(result.Symbols)); Assert.IsTrue(news.Tags.SequenceEqual(result.Tags)); Assert.AreEqual(news.Time, result.Time); Assert.AreEqual(news.EndTime, result.EndTime); } }
public void BenzingaNewsRoundTrip() { var symbol = Symbol.CreateBase( typeof(BenzingaNews), Symbol.Create("AAPL", SecurityType.Equity, Market.USA), Market.USA); var news = new BenzingaNews { Id = 1000, Author = "Benzinga", DataType = MarketDataType.Base, CreatedAt = DateTime.UtcNow, UpdatedAt = DateTime.UtcNow, Title = "Round Trip To Planet Protobuf Successful", Teaser = "Round trip to planet Protobuf is successful, ushering us into a new era for mining", Contents = "Round trip to planet Protobuf is successful, ushering us into a new era for mining", Categories = new List <string> { "aerospace", "technology" }, Symbols = new List <Symbol> { Symbol.Create("GOOG", SecurityType.Equity, Market.USA), Symbol.Create("CBS", SecurityType.Equity, Market.USA), Symbol.Create("GLD", SecurityType.Equity, Market.USA) }, Tags = new List <string> { "mining", "space", "aero-space", "technology" }, Time = DateTime.UtcNow, Symbol = symbol }; }
public void ReaderDeserializesInUtc() { var date = new DateTime(2020, 3, 19); var spy = Symbol.Create("SPY", SecurityType.Equity, QuantConnect.Market.USA); var converter = new BenzingaNewsJsonConverter(); var instance = new BenzingaNews { Author = "", Categories = new List <string>(), Contents = "", CreatedAt = date, Id = default(int), Symbol = spy, Symbols = new List <Symbol> { Symbol.Create("AAPL", SecurityType.Equity, QuantConnect.Market.USA), Symbol.Create("SPY", SecurityType.Equity, QuantConnect.Market.USA) }, Tags = new List <string> { "Politics" }, Teaser = "", Time = date, Title = "", UpdatedAt = date, }; var serialized = JsonConvert.SerializeObject(instance, new JsonSerializerSettings { Converters = new[] { converter }, Formatting = Formatting.None, DateTimeZoneHandling = DateTimeZoneHandling.Utc }); var config = new SubscriptionDataConfig( typeof(BenzingaNews), spy, Resolution.Minute, TimeZones.Utc, TimeZones.Utc, true, false, false); var news = new BenzingaNews(); var instanceRoundTripActual = (BenzingaNews)news.Reader(config, serialized, default(DateTime), false); Assert.AreEqual(instance.Author, instanceRoundTripActual.Author); Assert.IsTrue(instance.Categories.SequenceEqual(instanceRoundTripActual.Categories)); Assert.AreEqual(instance.Contents, instanceRoundTripActual.Contents); Assert.AreEqual(instance.CreatedAt, instanceRoundTripActual.CreatedAt); Assert.AreEqual(instance.Id, instanceRoundTripActual.Id); Assert.AreEqual(instance.Symbol, instanceRoundTripActual.Symbol); Assert.IsTrue(instance.Symbols.SequenceEqual(instanceRoundTripActual.Symbols)); Assert.IsTrue(instance.Tags.SequenceEqual(instanceRoundTripActual.Tags)); Assert.AreEqual(instance.Teaser, instanceRoundTripActual.Teaser); Assert.AreEqual(instance.Time, instanceRoundTripActual.Time); Assert.AreEqual(instance.Title, instanceRoundTripActual.Title); Assert.AreEqual(instance.UpdatedAt, instanceRoundTripActual.UpdatedAt); }