PageRenderTime 49ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/V2.2/trunk/RI/Desktop/StockTraderRI.Modules.WatchList.Tests/Services/WatchListServiceFixture.cs

#
C# | 190 lines | 128 code | 43 blank | 19 comment | 0 complexity | acc8fe2967cd8261197ea49e4a89b513 MD5 | raw file
  1. //===================================================================================
  2. // Microsoft patterns & practices
  3. // Composite Application Guidance for Windows Presentation Foundation and Silverlight
  4. //===================================================================================
  5. // Copyright (c) Microsoft Corporation. All rights reserved.
  6. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY
  7. // OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
  8. // LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  9. // FITNESS FOR A PARTICULAR PURPOSE.
  10. //===================================================================================
  11. // The example companies, organizations, products, domain names,
  12. // e-mail addresses, logos, people, places, and events depicted
  13. // herein are fictitious. No association with any real company,
  14. // organization, product, domain name, email address, logo, person,
  15. // places, or events is intended or should be inferred.
  16. //===================================================================================
  17. using System.Collections.ObjectModel;
  18. using System.Globalization;
  19. using Microsoft.VisualStudio.TestTools.UnitTesting;
  20. using StockTraderRI.Infrastructure.Interfaces;
  21. using StockTraderRI.Modules.Watch.Services;
  22. using StockTraderRI.Modules.WatchList.Tests.Mocks;
  23. namespace StockTraderRI.Modules.WatchList.Tests.Services
  24. {
  25. /// <summary>
  26. /// Summary description for WatchListServiceFixture
  27. /// </summary>
  28. [TestClass]
  29. public class WatchListServiceFixture
  30. {
  31. [TestMethod]
  32. public void ServiceListensToAddWatchCommand()
  33. {
  34. WatchListService service = new WatchListService(new MockMarketFeedService());
  35. Assert.AreEqual(0, service.RetrieveWatchList().Count);
  36. service.AddWatchCommand.Execute("Stock999");
  37. Assert.AreEqual(1, service.RetrieveWatchList().Count);
  38. }
  39. [TestMethod]
  40. public void ServiceListensToAddWatchCommandAndReturnsCommandParamsInList()
  41. {
  42. WatchListService service = new WatchListService(new MockMarketFeedService());
  43. service.AddWatchCommand.Execute("STOCK00");
  44. service.AddWatchCommand.Execute("STOCK99");
  45. Assert.AreEqual(2, service.RetrieveWatchList().Count);
  46. Assert.AreEqual<string>("STOCK00", service.RetrieveWatchList()[0]);
  47. Assert.AreEqual<string>("STOCK99", service.RetrieveWatchList()[1]);
  48. }
  49. [TestMethod]
  50. public void GetWatchListShouldReturnObservableCollection()
  51. {
  52. WatchListService service = new WatchListService(new MockMarketFeedService());
  53. service.AddWatchCommand.Execute("Stock000");
  54. ObservableCollection<string> watchList = service.RetrieveWatchList();
  55. bool collectionChanged = false;
  56. watchList.CollectionChanged += delegate
  57. {
  58. collectionChanged = true;
  59. };
  60. service.AddWatchCommand.Execute("Stock111");
  61. Assert.AreEqual(true, collectionChanged);
  62. }
  63. [TestMethod]
  64. public void TickerSymbolGetsConvertedToUppercase()
  65. {
  66. WatchListService service = new WatchListService(new MockMarketFeedService());
  67. service.AddWatchCommand.Execute("StockInMixedCase");
  68. Assert.AreEqual<string>("StockInMixedCase".ToUpper(CultureInfo.InvariantCulture), service.RetrieveWatchList()[0]);
  69. }
  70. [TestMethod]
  71. public void NullOrEmptyStringIsNotAddedToList()
  72. {
  73. WatchListService service = new WatchListService(new MockMarketFeedService());
  74. service.AddWatchCommand.Execute(null);
  75. service.AddWatchCommand.Execute(string.Empty);
  76. Assert.AreEqual(0, service.RetrieveWatchList().Count);
  77. }
  78. [TestMethod]
  79. public void AddingSameSymbolTwiceOnlyAddsItOnceToTheList()
  80. {
  81. WatchListService service = new WatchListService(new MockMarketFeedService());
  82. service.AddWatchCommand.Execute("DUPE");
  83. service.AddWatchCommand.Execute("DUPE");
  84. Assert.AreEqual(1, service.RetrieveWatchList().Count);
  85. }
  86. [TestMethod]
  87. public void DoesNotAddWatchIfSymbolDoesNotExistInMarketFeed()
  88. {
  89. MockMarketFeedService marketFeedService = new MockMarketFeedService();
  90. marketFeedService.MockSymbolExists = false;
  91. WatchListService service = new WatchListService(marketFeedService);
  92. service.AddWatchCommand.Execute("INEXISTENT");
  93. Assert.AreEqual(0, service.RetrieveWatchList().Count);
  94. Assert.AreEqual<string>("INEXISTENT", marketFeedService.SymbolExistsArgumentTickerSymbol);
  95. }
  96. [TestMethod]
  97. public void SymbolWithLeadingBlankSpacesIsAddedToList()
  98. {
  99. WatchListService service = new WatchListService(new MockMarketFeedService());
  100. service.AddWatchCommand.Execute(" FUND0");
  101. Assert.AreEqual(1, service.RetrieveWatchList().Count);
  102. Assert.AreEqual("FUND0", service.RetrieveWatchList()[0]);
  103. }
  104. [TestMethod]
  105. public void SymbolWithTrailingBlankSpacesIsAddedToList()
  106. {
  107. WatchListService service = new WatchListService(new MockMarketFeedService());
  108. service.AddWatchCommand.Execute("FUND0 ");
  109. Assert.AreEqual(1, service.RetrieveWatchList().Count);
  110. Assert.AreEqual("FUND0", service.RetrieveWatchList()[0]);
  111. }
  112. [TestMethod]
  113. public void AddingSameSymbolOneWithLeadingBlankSpacesTwiceOnlyAddsItOnceToTheList()
  114. {
  115. WatchListService service = new WatchListService(new MockMarketFeedService());
  116. service.AddWatchCommand.Execute(" FUND0");
  117. service.AddWatchCommand.Execute("FUND0");
  118. Assert.AreEqual(1, service.RetrieveWatchList().Count);
  119. Assert.AreEqual("FUND0", service.RetrieveWatchList()[0]);
  120. }
  121. [TestMethod]
  122. public void AddingSameSymbolOneWithTrailingBlankSpacesTwiceOnlyAddsItOnceToTheList()
  123. {
  124. WatchListService service = new WatchListService(new MockMarketFeedService());
  125. service.AddWatchCommand.Execute("FUND0 ");
  126. service.AddWatchCommand.Execute("FUND0");
  127. Assert.AreEqual(1, service.RetrieveWatchList().Count);
  128. Assert.AreEqual("FUND0", service.RetrieveWatchList()[0]);
  129. }
  130. [TestMethod]
  131. public void ServiceExposesCommandInstance()
  132. {
  133. WatchListService service = new WatchListService(new MockMarketFeedService());
  134. Assert.AreEqual(0, service.RetrieveWatchList().Count);
  135. service.AddWatchCommand.Execute("testSymbol");
  136. Assert.AreEqual(1, service.RetrieveWatchList().Count);
  137. Assert.AreEqual("TESTSYMBOL", service.RetrieveWatchList()[0]);
  138. }
  139. }
  140. class TestableWatchListService : WatchListService
  141. {
  142. public TestableWatchListService(IMarketFeedService marketFeedService)
  143. : base(marketFeedService)
  144. {
  145. }
  146. }
  147. }