public void SerializerTest() { ValuatedStock stock = new ValuatedStock { Close = 1.0F, Open = 1.1F, High = 1.2F, Low = 1.3F, Volume = 2, Symbol = "GOOGL", Name = "GOOGLE" }; var request1 = new TransactionRequestMessage(2, stock); var serializedMessage = request1.Encode(); var deserializedMessage = MessageFactory.GetMessage(serializedMessage, false) as TransactionRequestMessage; Assert.AreEqual(request1.Quantity, deserializedMessage.Quantity); Assert.AreEqual(request1.StockValue.Close, deserializedMessage.StockValue.Close); Assert.AreEqual(request1.StockValue.Open, deserializedMessage.StockValue.Open); Assert.AreEqual(request1.StockValue.High, deserializedMessage.StockValue.High); Assert.AreEqual(request1.StockValue.Low, deserializedMessage.StockValue.Low); Assert.AreEqual(request1.StockValue.Volume, deserializedMessage.StockValue.Volume); Assert.AreEqual(request1.StockValue.Symbol, deserializedMessage.StockValue.Symbol); Assert.AreEqual(request1.StockValue.Name, deserializedMessage.StockValue.Name); }
public void SerializerTest() { var stock1 = new ValuatedStock(); var stock2 = new ValuatedStock(); ValuatedStock[] stocks = { stock1, stock2 }; string date1 = "1990-02-20"; MarketDay day1 = new MarketDay(date1, stocks); var recentHistory = new MarketSegment { day1 }; var stockStreamResponse = new StockHistoryResponseMessage { RecentHistory = recentHistory }; var serializedMessage = stockStreamResponse.Encode(); var deserializedMessage = MessageFactory.GetMessage(serializedMessage, false) as StockHistoryResponseMessage; Assert.AreEqual(stockStreamResponse.RecentHistory[0].TradedCompanies.Count, deserializedMessage.RecentHistory[0].TradedCompanies.Count); Assert.AreEqual(stockStreamResponse.RecentHistory[0].TradedCompanies[0].Close, deserializedMessage.RecentHistory[0].TradedCompanies[0].Close); Assert.AreEqual(stockStreamResponse.RecentHistory[0].Date, deserializedMessage.RecentHistory[0].Date); }
public void InitializerTest() { var stock = new ValuatedStock { Close = 1.0F, Open = 1.1F, High = 1.2F, Low = 1.3F, Volume = 2, Symbol = "GOOGL", Name = "GOOGLE" }; var transactionRequest = new TransactionRequestMessage { Quantity = 2, StockValue = stock }; Assert.AreEqual(transactionRequest.Quantity, 2); Assert.AreEqual(transactionRequest.StockValue.Close, 1.0F); Assert.AreEqual(transactionRequest.StockValue.Open, 1.1F); Assert.AreEqual(transactionRequest.StockValue.High, 1.2F); Assert.AreEqual(transactionRequest.StockValue.Low, 1.3F); Assert.AreEqual(transactionRequest.StockValue.Volume, 2); Assert.AreEqual(transactionRequest.StockValue.Symbol, "GOOGL"); Assert.AreEqual(transactionRequest.StockValue.Name, "GOOGLE"); }
public void InitializerTest() { var stock1 = new ValuatedStock(); var stock2 = new ValuatedStock(); ValuatedStock[] stocks = { stock1, stock2 }; string date1 = "1990-02-20"; string date2 = "1990-03-20"; MarketDay day1 = new MarketDay(date1, stocks); MarketDay day2 = new MarketDay(date2, stocks);//not important that has same valuated stocks var recentHistory = new MarketSegment { day1, day2 }; var stockStreamResponse = new StockHistoryResponseMessage { RecentHistory = recentHistory }; Assert.AreEqual(stockStreamResponse.RecentHistory[0].Date, date1); Assert.AreEqual(stockStreamResponse.RecentHistory[1].Date, date2); Assert.AreEqual(stockStreamResponse.RecentHistory.Count, 2); Assert.AreEqual(3, stockStreamResponse.RecentHistory[0].TradedCompanies.Count); Assert.AreEqual(3, stockStreamResponse.RecentHistory[1].TradedCompanies.Count); }
public void ValidMarketDaySignatureTest() { //Prepare var stock1 = new ValuatedStock() { Symbol = "STK1", Name = "Stock 1", Open = 1, High = 2, Low = 3, Close = 4, Volume = 5 }; var stock2 = new ValuatedStock() { Symbol = "STK2", Name = "Stock 2", Open = 6, High = 7, Low = 8, Close = 9, Volume = 10 }; ValuatedStock[] stocks = { stock1, stock2 }; var marketDay = new MarketDay("testDay", stocks); string signature = SigServe.GetSignature(marketDay); var isVerified = SigServe.VerifySignature(marketDay, signature); Assert.IsTrue(isVerified); }
public void SerializationTest() { //Prepare var stock1 = new ValuatedStock() { Symbol = "STK1", Name = "Stock 1", Open = 1, High = 2, Low = 3, Close = 4, Volume = 5 }; var stock2 = new ValuatedStock() { Symbol = "STK2", Name = "Stock 2", Open = 6, High = 7, Low = 8, Close = 9, Volume = 10 }; ValuatedStock[] stocks = { stock1, stock2 }; var marketDay = new MarketDay("testDay", stocks); //Execute var serialized = SigServe.Serialize(marketDay); var deserialziedMarketDay = SigServe.Deserialize <MarketDay>(serialized); //Assert Assert.IsTrue(deserialziedMarketDay.Equals(marketDay)); }
public void CopyConstructorTest() { ValuatedStock stock = new ValuatedStock { Close = 1.0F, Open = 1.1F, High = 1.2F, Low = 1.3F, Volume = 2, Symbol = "GOOGL", Name = "GOOGLE" }; var request1 = new TransactionRequestMessage(2, stock); var request2 = new TransactionRequestMessage(request1); Assert.AreEqual(request1.Quantity, request1.Quantity); Assert.AreEqual(request1.StockValue.Close, request1.StockValue.Close); Assert.AreEqual(request1.StockValue.Open, request1.StockValue.Open); Assert.AreEqual(request1.StockValue.High, request1.StockValue.High); Assert.AreEqual(request1.StockValue.Low, request1.StockValue.Low); Assert.AreEqual(request1.StockValue.Volume, request1.StockValue.Volume); Assert.AreEqual(request1.StockValue.Symbol, request1.StockValue.Symbol); Assert.AreEqual(request1.StockValue.Name, request1.StockValue.Name); }
public RespondTransactionConversation(Envelope e) : base(e.Contents.ConversationID) { var reqMessage = e.Contents as TransactionRequestMessage; PortfoliId = reqMessage.PortfolioId; VStock = reqMessage.StockValue; Quantity = reqMessage.Quantity; ResponseAddress = e.To; }
public void RequestSingleTimeoutThenSucceed() { int processId = 1; var testStock = new Stock("TST", "Test Stock"); var vStock = new ValuatedStock(("1984-02-22,11.0289,11.0822,10.7222,10.7222,197402").Split(','), testStock); var conv = new StockHistoryRequestConversation(processId); int requests = 0; //setup mock with response message var mock = new Mock <StockHistoryRequestState>(conv) { CallBase = true }; mock.Setup(st => st.Send()) .Callback(() => { //Pretend message is sent and response comes back, but only after second request... if (++requests > 1) { var responseMessage = new StockHistoryResponseMessage() { ConversationID = conv.Id, MessageID = "345-234-56" }; var responseEnv = new Envelope(responseMessage); ConversationManager.ProcessIncomingMessage(responseEnv); } }); conv.SetInitialState(mock.Object as StockHistoryRequestState); Assert.IsTrue(conv.CurrentState is StockHistoryRequestState); mock.Verify(state => state.Prepare(), Times.Never); mock.Verify(state => state.Send(), Times.Never); Assert.IsFalse(ConversationManager.ConversationExists(conv.Id)); ConversationManager.AddConversation(conv); Assert.IsTrue(conv.CurrentState is StockHistoryRequestState); mock.Verify(state => state.Prepare(), Times.Once); mock.Verify(state => state.Send(), Times.Once); mock.Verify(state => state.HandleTimeout(), Times.Never); Assert.IsTrue(ConversationManager.ConversationExists(conv.Id)); Thread.Sleep((int)(Config.GetInt(Config.DEFAULT_TIMEOUT) * 1.5)); Assert.IsFalse(conv.CurrentState is StockHistoryRequestState); Assert.IsTrue(conv.CurrentState is ConversationDoneState); mock.Verify(state => state.Prepare(), Times.Once); mock.Verify(state => state.Send(), Times.Exactly(2)); mock.Verify(state => state.HandleTimeout(), Times.Exactly(1)); Assert.IsTrue(ConversationManager.ConversationExists(conv.Id)); }
public void DefaultConstructorTest() { var ValuatedStock = new ValuatedStock(); Assert.AreEqual(ValuatedStock.Close, 0.0F); Assert.AreEqual(ValuatedStock.High, 0.0F); Assert.AreEqual(ValuatedStock.Low, 0.0F); Assert.AreEqual(ValuatedStock.Open, 0.0F); Assert.AreEqual(ValuatedStock.Volume, 0); Assert.IsNull(ValuatedStock.Name); Assert.IsNull(ValuatedStock.Symbol); }
public void RequestSingleTimeoutThenSucceed() { int portfolioId = 42; var testStock = new Stock("TST", "Test Stock"); var vStock = new ValuatedStock(("1984-02-22,11.0289,11.0822,10.7222,10.7222,197402").Split(','), testStock); var conv = new InitiateTransactionConversation(portfolioId); int requests = 0; //setup response message and mock var mock = new Mock <InitTransactionStartingState>(conv, vStock, 1) { CallBase = true }; mock.Setup(prep => prep.Prepare()).Verifiable(); //ensure DoPrepare is called. mock.Setup(st => st.OnHandleMessage(It.IsAny <Envelope>(), 0)).CallBase(); //Skip mock's HandleMessage override. mock.Setup(st => st.Send()) //Pretend message is sent and response comes back... .Callback(() => { if (++requests > 1) { var responseMessage = new PortfolioUpdateMessage() { ConversationID = conv.Id }; var responseEnv = new Envelope(responseMessage); ConversationManager.ProcessIncomingMessage(responseEnv); } }).CallBase().Verifiable(); //execute test conv.SetInitialState(mock.Object as InitTransactionStartingState); Assert.IsTrue(conv.CurrentState is InitTransactionStartingState); mock.Verify(state => state.Prepare(), Times.Never); mock.Verify(state => state.Send(), Times.Never); ConversationManager.AddConversation(conv); Assert.IsTrue(conv.CurrentState is InitTransactionStartingState); mock.Verify(state => state.Prepare(), Times.Once); mock.Verify(state => state.Send(), Times.Once); mock.Verify(state => state.HandleTimeout(), Times.Never); Thread.Sleep((int)(Config.GetInt(Config.DEFAULT_TIMEOUT) * 1.5)); Assert.IsFalse(conv.CurrentState is InitTransactionStartingState); Assert.IsTrue(conv.CurrentState is ConversationDoneState); mock.Verify(state => state.Prepare(), Times.Once); mock.Verify(state => state.Send(), Times.AtLeast(2)); mock.Verify(state => state.HandleTimeout(), Times.AtLeast(1)); }
public void LoadedConstructorTest() { string date = "1990-02-20"; var stock1 = new ValuatedStock(); var stock2 = new ValuatedStock(); ValuatedStock[] stocks = { stock1, stock2 }; var MarketDay = new MarketDay(date, stocks); Assert.AreEqual(3, MarketDay.TradedCompanies.Count); Assert.AreEqual(MarketDay.Date, date); }
public void LoadedConstructorTest() { var stock = new Stock("GOOGL", "GOOGLE"); string[] data = { "yolo", "1.0", "1.1", "1.2", "1.3", "2" }; var ValuatedStock = new ValuatedStock(data, stock); Assert.AreEqual(ValuatedStock.Open, 1.0F); Assert.AreEqual(ValuatedStock.High, 1.1F); Assert.AreEqual(ValuatedStock.Low, 1.2F); Assert.AreEqual(ValuatedStock.Close, 1.3F); Assert.AreEqual(ValuatedStock.Volume, 2); Assert.AreEqual(ValuatedStock.Name, "GOOGLE"); Assert.AreEqual(ValuatedStock.Symbol, "GOOGL"); }
public void LoadKeysTest() { //Clear keys from other tests SignatureService.PublicKey = null; SignatureService.PrivateKey = null; Assert.IsNull(SignatureService.PublicKey); Assert.IsNull(SignatureService.PrivateKey); //Load Keys SignatureService.LoadPrivateKey("Team1/StockServer"); SignatureService.LoadPublicKey("Team1/StockServer"); //Prepare a MarketDay var stock1 = new ValuatedStock() { Symbol = "STK1", Name = "Stock 1", Open = 1, High = 2, Low = 3, Close = 4, Volume = 5 }; var stock2 = new ValuatedStock() { Symbol = "STK2", Name = "Stock 2", Open = 6, High = 7, Low = 8, Close = 9, Volume = 10 }; ValuatedStock[] stocks = { stock1, stock2 }; var marketDay = new MarketDay("testDay", stocks); //Sign marketDay string signature = SigServe.GetSignature(marketDay); //Verify signature var isVerified = SigServe.VerifySignature(marketDay, signature); Assert.IsTrue(isVerified); }
public void LoadedConstructorTest() { var stock1 = new ValuatedStock(); var stock2 = new ValuatedStock(); ValuatedStock[] stocks = { stock1, stock2 }; var date = "1990-02-20"; var marketDay = new MarketDay(date, stocks); var stockPriceUpdate = new StockPriceUpdate(marketDay); var StocksList = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(stockPriceUpdate.SerializedStockList)); Assert.AreEqual(3, StocksList.TradedCompanies.Count); Assert.AreEqual(StocksList.Date, date); }
public void RequestSucceedAfterIncomingRetry() { string RequestConvId = "5-563"; string ClientIp = "192.168.1.31"; int ClientPort = 5682; int RequestQuanitity = 12; PortfolioManager.TryToCreate("TestRequestSucceedAfterRetry", "password", out Portfolio portfolio); var testStock = new Stock("TST", "Test Stock"); var vStock = new ValuatedStock(("1984-02-22,1,2,3,100,5").Split(','), testStock); var RequestMessage = new TransactionRequestMessage(RequestQuanitity, vStock) { ConversationID = RequestConvId, PortfolioId = portfolio.PortfolioID }; Envelope Request = new Envelope(RequestMessage, ClientIp, ClientPort); var localConv = ConversationManager.GetConversation(RequestConvId); Assert.IsNull(localConv); Assert.IsNull(mock); ConversationManager.ProcessIncomingMessage(Request); localConv = ConversationManager.GetConversation(RequestConvId); Assert.IsNotNull(localConv); Assert.IsTrue(localConv.CurrentState is ConversationDoneState); mock.Verify(state => state.Prepare(), Times.Once); mock.Verify(state => state.Send(), Times.Once); mock.Verify(state => state.HandleTimeout(), Times.Never); ConversationManager.ProcessIncomingMessage(Request); localConv = ConversationManager.GetConversation(RequestConvId); Assert.IsNotNull(localConv); Assert.IsTrue(localConv.CurrentState is ConversationDoneState); mock.Verify(state => state.Prepare(), Times.Once); mock.Verify(state => state.Send(), Times.Exactly(2)); mock.Verify(state => state.HandleTimeout(), Times.Never); PortfolioManager.TryToRemove(portfolio.PortfolioID); }
public void RequestTimeout() { int processId = 1; var testStock = new Stock("TST", "Test Stock"); var vStock = new ValuatedStock(("1984-02-22,11.0289,11.0822,10.7222,10.7222,197402").Split(','), testStock); var conv = new StockHistoryRequestConversation(processId); //setup mock with response message var mock = new Mock <StockHistoryRequestState>(conv) { CallBase = true }; mock.Setup(st => st.Send()) .Callback(() => { //Pretend server isn't there, do nothing... }); conv.SetInitialState(mock.Object as StockHistoryRequestState); Assert.IsTrue(conv.CurrentState is StockHistoryRequestState); mock.Verify(state => state.Prepare(), Times.Never); mock.Verify(state => state.Send(), Times.Never); Assert.IsFalse(ConversationManager.ConversationExists(conv.Id)); ConversationManager.AddConversation(conv); Assert.IsTrue(conv.CurrentState is StockHistoryRequestState); mock.Verify(state => state.Prepare(), Times.Once); mock.Verify(state => state.Send(), Times.Once); mock.Verify(state => state.HandleTimeout(), Times.Never); Assert.IsTrue(ConversationManager.ConversationExists(conv.Id)); Thread.Sleep((int)(Config.GetInt(Config.DEFAULT_TIMEOUT) * (Config.GetInt(Config.DEFAULT_RETRY_COUNT) + 1) * 1.2)); Assert.IsFalse(conv.CurrentState is StockHistoryRequestState); Assert.IsTrue(conv.CurrentState is ConversationDoneState); mock.Verify(state => state.HandleMessage(It.IsAny <Envelope>()), Times.Never); mock.Verify(state => state.Prepare(), Times.Once); mock.Verify(state => state.Send(), Times.Exactly(3)); mock.Verify(state => state.HandleTimeout(), Times.AtLeast(3)); Assert.IsTrue(ConversationManager.ConversationExists(conv.Id)); }
public void InitializerTest() { string date = "1990-02-20"; var stock1 = new ValuatedStock(); var stock2 = new ValuatedStock(); ValuatedStock[] stocks = { stock1, stock2 }; var MarketDay = new MarketDay { Date = date }; MarketDay.TradedCompanies = stocks.Cast <ValuatedStock>().ToList(); Assert.AreEqual(3, MarketDay.TradedCompanies.Count); Assert.AreEqual(MarketDay.Date, date); }
public void ValidSignatureTest() { var key = SignatureService.GenerateKeys(1024); SignatureService.PublicKey = (RsaKeyParameters)(key.Public); SignatureService.PrivateKey = (RsaKeyParameters)(key.Private); var sigServe = new SignatureService(); var stock1 = new ValuatedStock(); var stock2 = new ValuatedStock(); ValuatedStock[] stocks = { stock1, stock2 }; var date = "1990-02-29"; var marketDay = new MarketDay(date, stocks); var marketDaySig = sigServe.GetSignature(marketDay); var stockPriceUpdate = new StockPriceUpdate(marketDay) { StockListSignature = marketDaySig }; var isOriginalValid = sigServe.VerifySignature(marketDay, marketDaySig); Assert.IsTrue(isOriginalValid); var serializedMessage = stockPriceUpdate.Encode(); var deserializedMessage = MessageFactory.GetMessage(serializedMessage, false) as StockPriceUpdate; MarketDay deserializedDay = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(deserializedMessage.SerializedStockList)); var StocksList_original = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(stockPriceUpdate.SerializedStockList)); var StocksList_deserialized = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(deserializedMessage.SerializedStockList)); var isDeserializedValid = sigServe.VerifySignature(StocksList_deserialized, deserializedMessage.StockListSignature); Assert.IsTrue(isDeserializedValid); Assert.AreEqual(StocksList_original.TradedCompanies.Count, StocksList_deserialized.TradedCompanies.Count); Assert.AreEqual(StocksList_original.Date, StocksList_deserialized.Date); Assert.IsTrue(sigServe.VerifySignature(StocksList_deserialized, deserializedMessage.StockListSignature)); }
private static ValuatedStock MakeupValuatedStock(string symbol, string name, float previousDayClose) { var vStock = new ValuatedStock(); vStock.Name = name; vStock.Symbol = symbol; //Make trading look realistic relative to previous day var scaler = (int)(previousDayClose * 0.01); vStock.Open = previousDayClose + random.Next(-scaler / 2, scaler); vStock.Close = vStock.Open + random.Next(-scaler * 3, scaler * 3); vStock.Low = Math.Min(vStock.Open, vStock.Close) - random.Next(0, scaler * 3); vStock.High = Math.Max(vStock.Open, vStock.Close) + random.Next(0, scaler * 3); vStock.Volume = (int)Math.Abs(vStock.Open - vStock.Close) * 1000000; return(vStock); }
public void SerializerTest() { var stock1 = new ValuatedStock(); var stock2 = new ValuatedStock(); ValuatedStock[] stocks = { stock1, stock2 }; var date = "1990-02-20"; var marketDay = new MarketDay(date, stocks); var stockPriceUpdate = new StockPriceUpdate(marketDay); var serializedMessage = stockPriceUpdate.Encode(); var deserializedMessage = MessageFactory.GetMessage(serializedMessage, false) as StockPriceUpdate; var StocksList_original = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(stockPriceUpdate.SerializedStockList)); var StocksList_deserialized = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(deserializedMessage.SerializedStockList)); Assert.AreEqual(StocksList_original.TradedCompanies.Count, StocksList_deserialized.TradedCompanies.Count); Assert.AreEqual(StocksList_original.Date, StocksList_deserialized.Date); }
public void RequestTimeout() { int portfolioId = 42; var testStock = new Stock("TST", "Test Stock"); var vStock = new ValuatedStock(("1984-02-22,11.0289,11.0822,10.7222,10.7222,197402").Split(','), testStock); var conv = new InitiateTransactionConversation(portfolioId); //setup response message and mock var mock = new Mock <InitTransactionStartingState>(conv, vStock, 1) { CallBase = true }; mock.Setup(prep => prep.Prepare()).Verifiable(); //ensure DoPrepare is called. mock.Setup(st => st.OnHandleMessage(It.IsAny <Envelope>(), 0)).CallBase(); //Skip mock's HandleMessage override. mock.Setup(st => st.Send()).CallBase().Verifiable(); //execute test conv.SetInitialState(mock.Object as InitTransactionStartingState); Assert.IsTrue(conv.CurrentState is InitTransactionStartingState); mock.Verify(state => state.Prepare(), Times.Never); mock.Verify(state => state.Send(), Times.Never); ConversationManager.AddConversation(conv); Assert.IsTrue(conv.CurrentState is InitTransactionStartingState); mock.Verify(state => state.Prepare(), Times.Once); mock.Verify(state => state.Send(), Times.Once); mock.Verify(state => state.HandleTimeout(), Times.Never); Thread.Sleep((int)(Config.GetInt(Config.DEFAULT_TIMEOUT) * (Config.GetInt(Config.DEFAULT_RETRY_COUNT) + 1) * 1.1)); Assert.IsFalse(conv.CurrentState is InitTransactionStartingState); Assert.IsTrue(conv.CurrentState is ConversationDoneState); mock.Verify(state => state.HandleMessage(It.IsAny <Envelope>()), Times.Never); mock.Verify(state => state.Prepare(), Times.Once); mock.Verify(state => state.Send(), Times.AtLeast(3)); mock.Verify(state => state.HandleTimeout(), Times.AtLeast(3)); }
public void InitializerTest() { var ValuatedStock = new ValuatedStock { Symbol = "GOOGL", Name = "GOOGLE", Open = 1.0F, High = 1.1F, Low = 1.2F, Close = 1.3F, Volume = 2 }; Assert.AreEqual(ValuatedStock.Open, 1.0F); Assert.AreEqual(ValuatedStock.High, 1.1F); Assert.AreEqual(ValuatedStock.Low, 1.2F); Assert.AreEqual(ValuatedStock.Close, 1.3F); Assert.AreEqual(ValuatedStock.Volume, 2); Assert.AreEqual(ValuatedStock.Name, "GOOGLE"); Assert.AreEqual(ValuatedStock.Symbol, "GOOGL"); }
public void MarketDaySignatureInvalidSigTest() { //Prepare var stock1 = new ValuatedStock() { Symbol = "STK1", Name = "Stock 1", Open = 1, High = 2, Low = 3, Close = 4, Volume = 5 }; var stock2 = new ValuatedStock() { Symbol = "STK2", Name = "Stock 2", Open = 6, High = 7, Low = 8, Close = 9, Volume = 10 }; ValuatedStock[] stocks = { stock1, stock2 }; var marketDay = new MarketDay("testDay", stocks); string signature = SigServe.GetSignature(marketDay); for (int i = 0; i < 15; i++) { signature = signature.Replace(signature[i], 'j'); } var isVerified = SigServe.VerifySignature(marketDay, signature); Assert.IsFalse(isVerified); }
public void RequestSucceed() { int portfolioId = 42; var testStock = new Stock("TST", "Test Stock"); var vStock = new ValuatedStock(("1984-02-22,11.0289,11.0822,10.7222,10.7222,197402").Split(','), testStock); var conv = new InitiateTransactionConversation(portfolioId); //setup response message and mock var mock = new Mock <InitTransactionStartingState>(conv, vStock, 1) { CallBase = true }; mock.Setup(st => st.Send())//Pretend message is sent and response comes back... .Callback(() => { var responseMessage = new PortfolioUpdateMessage() { ConversationID = conv.Id, MessageID = "responseMessageID1234" }; var responseEnv = new Envelope(responseMessage); ConversationManager.ProcessIncomingMessage(responseEnv); }).CallBase().Verifiable(); //execute test conv.SetInitialState(mock.Object as InitTransactionStartingState); Assert.IsTrue(conv.CurrentState is InitTransactionStartingState); mock.Verify(state => state.Prepare(), Times.Never); mock.Verify(state => state.Send(), Times.Never); ConversationManager.AddConversation(conv); Assert.IsFalse(conv.CurrentState is InitTransactionStartingState); Assert.IsTrue(conv.CurrentState is ConversationDoneState); mock.Verify(state => state.Prepare(), Times.Once); mock.Verify(state => state.Send(), Times.Once); }
public void InvalidSignatureTest() { var key = SignatureService.GenerateKeys(1024); SignatureService.PublicKey = (RsaKeyParameters)(key.Public); SignatureService.PrivateKey = (RsaKeyParameters)(key.Private); var sigServe = new SignatureService(); var stock1 = new ValuatedStock(); var stock2 = new ValuatedStock(); ValuatedStock[] stocks = { stock1, stock2 }; var date = "1990-02-29"; var marketDay = new MarketDay(date, stocks); var marketDaySig = sigServe.GetSignature(marketDay); var stockPriceUpdate = new StockPriceUpdate(marketDay) { StockListSignature = marketDaySig }; var isOriginalValid = sigServe.VerifySignature(marketDay, marketDaySig); Assert.IsTrue(isOriginalValid); var serializedMessage = stockPriceUpdate.Encode(); var deserializedMessage = MessageFactory.GetMessage(serializedMessage, false) as StockPriceUpdate; //"currupt" signature deserializedMessage.StockListSignature = deserializedMessage.StockListSignature.Replace(deserializedMessage.StockListSignature.Substring(0, 5), "fffff"); MarketDay deserializedDay = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(deserializedMessage.SerializedStockList)); var isDeserializedValid = sigServe.VerifySignature(deserializedDay, deserializedMessage.StockListSignature); Assert.IsFalse(isDeserializedValid); }
public void LoadedConstructorTest() { ValuatedStock stock = new ValuatedStock { Close = 1.0F, Open = 1.1F, High = 1.2F, Low = 1.3F, Volume = 2, Symbol = "GOOGL", Name = "GOOGLE" }; var transactionRequest = new TransactionRequestMessage(2, stock); Assert.AreEqual(transactionRequest.Quantity, 2); Assert.AreEqual(transactionRequest.StockValue.Close, 1.0F); Assert.AreEqual(transactionRequest.StockValue.Open, 1.1F); Assert.AreEqual(transactionRequest.StockValue.High, 1.2F); Assert.AreEqual(transactionRequest.StockValue.Low, 1.3F); Assert.AreEqual(transactionRequest.StockValue.Volume, 2); Assert.AreEqual(transactionRequest.StockValue.Symbol, "GOOGL"); Assert.AreEqual(transactionRequest.StockValue.Name, "GOOGLE"); }
public InitTransactionStartingState(Conversation conv, ValuatedStock vStock, float quantity) : base(conv, null) { Stock = vStock; Quantity = quantity; }
public void EqualOverrideTest() { var stock1 = new ValuatedStock() { Symbol = "STK", Name = "Stock", Open = 6, High = 7, Low = 8, Close = 9, Volume = 10 }; var stock2 = new ValuatedStock() { Symbol = "STK", Name = "Stock", Open = 6, High = 7, Low = 8, Close = 9, Volume = 10 }; //Equals Assert.IsTrue(stock1.Equals(stock2)); //Bad stock symbol stock2 = new ValuatedStock() { Symbol = "STK2BADD", Name = "Stock 2", Open = 6, High = 7, Low = 8, Close = 9, Volume = 10 }; Assert.IsFalse(stock1.Equals(stock2)); //Bad stock name stock2 = new ValuatedStock() { Symbol = "STK2", Name = "Stock 2 BADD", Open = 6, High = 7, Low = 8, Close = 9, Volume = 10 }; Assert.IsFalse(stock1.Equals(stock2)); //Bad stock open stock2 = new ValuatedStock() { Symbol = "STK2", Name = "Stock 2", Open = 6000, High = 7, Low = 8, Close = 9, Volume = 10 }; Assert.IsFalse(stock1.Equals(stock2)); //Bad stock High stock2 = new ValuatedStock() { Symbol = "STK2", Name = "Stock 2", Open = 6, High = 7000, Low = 8, Close = 9, Volume = 10 }; Assert.IsFalse(stock1.Equals(stock2)); //Bad stock Low stock2 = new ValuatedStock() { Symbol = "STK2", Name = "Stock 2", Open = 6, High = 7, Low = 8000, Close = 9, Volume = 10 }; Assert.IsFalse(stock1.Equals(stock2)); //Bad stock Close stock2 = new ValuatedStock() { Symbol = "STK2", Name = "Stock 2", Open = 6, High = 7, Low = 8, Close = 9000, Volume = 10 }; Assert.IsFalse(stock1.Equals(stock2)); //Bad stock Volume stock2 = new ValuatedStock() { Symbol = "STK2", Name = "Stock 2", Open = 6, High = 7, Low = 8, Close = 9, Volume = 10000 }; Assert.IsFalse(stock1.Equals(stock2)); }
public void EqualsOverrideTest() { //Prepare day var stock1 = new ValuatedStock() { Symbol = "STK1", Name = "Stock 1", Open = 1, High = 2, Low = 3, Close = 4, Volume = 5 }; var stock2 = new ValuatedStock() { Symbol = "STK2", Name = "Stock 2", Open = 6, High = 7, Low = 8, Close = 9, Volume = 10 }; ValuatedStock[] stocks = { stock1, stock2 }; var marketDay = new MarketDay("testDay", stocks); //Prepare day duplicate var stock1Dup = new ValuatedStock() { Symbol = "STK1", Name = "Stock 1", Open = 1, High = 2, Low = 3, Close = 4, Volume = 5 }; var stock2Dup = new ValuatedStock() { Symbol = "STK2", Name = "Stock 2", Open = 6, High = 7, Low = 8, Close = 9, Volume = 10 }; ValuatedStock[] stocksDup = { stock1Dup, stock2Dup }; var marketDayDup = new MarketDay("testDay", stocksDup); //Equal Assert.IsTrue(marketDay.Equals(marketDayDup)); //Different date marketDayDup = new MarketDay("testDifferentDay", stocksDup); Assert.IsFalse(marketDay.Equals(marketDayDup)); //One missing stock stocksDup = new ValuatedStock[] { stock1Dup }; marketDayDup = new MarketDay("testDay", stocksDup); Assert.IsFalse(marketDay.Equals(marketDayDup)); //One Extra Stock var stock3 = new ValuatedStock() { Symbol = "STK2", Name = "Stock 2", Open = 60, High = 70, Low = 80, Close = 90, Volume = 100 }; stocksDup = new ValuatedStock[] { stock1Dup, stock2Dup, stock3 }; marketDayDup = new MarketDay("testDay", stocksDup); Assert.IsFalse(marketDay.Equals(marketDayDup)); }