PageRenderTime 64ms CodeModel.GetById 27ms RepoModel.GetById 1ms app.codeStats 0ms

/Navigation.Test/NavigationDataTest.cs

#
C# | 3983 lines | 3730 code | 253 blank | 0 comment | 6 complexity | 71f3370614f825e017b0908eee2400f4 MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1. using Microsoft.VisualStudio.TestTools.UnitTesting;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Collections.Specialized;
  6. using System.Configuration;
  7. using System.Web;
  8. using System.Web.UI;
  9. namespace Navigation.Test
  10. {
  11. [TestClass]
  12. public class NavigationDataTest
  13. {
  14. public NavigationDataTest()
  15. {
  16. }
  17. private TestContext testContextInstance;
  18. public TestContext TestContext
  19. {
  20. get
  21. {
  22. return testContextInstance;
  23. }
  24. set
  25. {
  26. testContextInstance = value;
  27. }
  28. }
  29. [TestInitialize]
  30. public void Initialize()
  31. {
  32. StateContext.Data.Clear();
  33. }
  34. private NavigationData _IndividualNavigationData;
  35. private NavigationData IndividualNavigationData
  36. {
  37. get
  38. {
  39. if (_IndividualNavigationData == null)
  40. {
  41. _IndividualNavigationData = new NavigationData();
  42. _IndividualNavigationData["string"] = "Hello";
  43. _IndividualNavigationData["bool"] = true;
  44. _IndividualNavigationData["int"] = (int)0;
  45. _IndividualNavigationData["short"] = (short)1;
  46. _IndividualNavigationData["long"] = (long)2;
  47. _IndividualNavigationData["float"] = (float)3;
  48. _IndividualNavigationData["double"] = (double)4;
  49. _IndividualNavigationData["decimal"] = (decimal)5;
  50. _IndividualNavigationData["DateTime"] = new DateTime(1990, 3, 1, 12, 35, 47);
  51. _IndividualNavigationData["TimeSpan"] = new TimeSpan(10, 5, 23);
  52. _IndividualNavigationData["byte"] = (byte)6;
  53. _IndividualNavigationData["char"] = '7';
  54. _IndividualNavigationData["Guid"] = Guid.Empty;
  55. _IndividualNavigationData["customData"] = new CustomData() { Name = "Bob", Age = 18 };
  56. _IndividualNavigationData["custom2Data"] = new Custom2Data() { Name = "Bob", Age = 18 };
  57. _IndividualNavigationData["dayOfWeek"] = DayOfWeek.Saturday;
  58. }
  59. return _IndividualNavigationData;
  60. }
  61. }
  62. private NavigationData _ListNavigationData;
  63. private NavigationData ListNavigationData
  64. {
  65. get
  66. {
  67. if (_ListNavigationData == null)
  68. {
  69. _ListNavigationData = new NavigationData();
  70. _ListNavigationData["List_string"] = new List<string> { "He-llo", "World" };
  71. _ListNavigationData["List_bool"] = new List<bool> { true, false };
  72. _ListNavigationData["List_short"] = new List<short> { 1, 2 };
  73. _ListNavigationData["List_long"] = new List<long> { 2, 3 };
  74. _ListNavigationData["List_float"] = new List<float> { 3, 4 };
  75. _ListNavigationData["List_double"] = new List<double> { 4, 5 };
  76. _ListNavigationData["List_decimal"] = new List<decimal> { 5, 6 };
  77. _ListNavigationData["List_DateTime"] = new List<DateTime>() { new DateTime(1990, 3, 1, 12, 35, 47), new DateTime(1971, 10, 5, 11, 1, 15) };
  78. _ListNavigationData["List_TimeSpan"] = new List<TimeSpan>() { new TimeSpan(10, 5, 23), new TimeSpan(8, 7, 6) };
  79. _ListNavigationData["List_byte"] = new List<byte>() { 6, 7 };
  80. _ListNavigationData["List_char"] = new List<char>() { '7', '8' };
  81. _ListNavigationData["List_Guid"] = new List<Guid>() { Guid.Empty, Guid.Empty };
  82. _ListNavigationData["List_customData"] = new List<CustomData>() { new CustomData() { Name = "Bob", Age = 18 }, new CustomData() { Name = "Jane", Age = 20 } };
  83. _ListNavigationData["List_custom2Data"] = new List<Custom2Data>() { new Custom2Data() { Name = "B--ob", Age = 18 }, new Custom2Data() { Name = "Jane", Age = 20 } };
  84. _ListNavigationData["List_dayOfWeek"] = new List<DayOfWeek>() { DayOfWeek.Saturday, DayOfWeek.Monday };
  85. }
  86. return _ListNavigationData;
  87. }
  88. }
  89. private NavigationData _ArrayListNavigationData;
  90. private NavigationData ArrayListNavigationData
  91. {
  92. get
  93. {
  94. if (_ArrayListNavigationData == null)
  95. {
  96. _ArrayListNavigationData = new NavigationData();
  97. _ArrayListNavigationData["ArrayList_string"] = new ArrayList() { null, "Wor-ld" };
  98. _ArrayListNavigationData["ArrayList_bool"] = new ArrayList() { true, false };
  99. _ArrayListNavigationData["ArrayList_short"] = new ArrayList() { 1, 2 };
  100. _ArrayListNavigationData["ArrayList_long"] = new ArrayList() { 2, 3 };
  101. _ArrayListNavigationData["ArrayList_float"] = new ArrayList() { 3, 4 };
  102. _ArrayListNavigationData["ArrayList_double"] = new ArrayList() { 4, 5 };
  103. _ArrayListNavigationData["ArrayList_decimal"] = new ArrayList() { 5, 6 };
  104. _ArrayListNavigationData["ArrayList_DateTime"] = new ArrayList() { new DateTime(1990, 3, 1, 12, 35, 47), new DateTime(1971, 10, 5, 11, 1, 15) };
  105. _ArrayListNavigationData["ArrayList_TimeSpan"] = new ArrayList() { new TimeSpan(10, 5, 23), new TimeSpan(8, 7, 6) };
  106. _ArrayListNavigationData["ArrayList_byte"] = new ArrayList() { 6, 7 };
  107. _ArrayListNavigationData["ArrayList_char"] = new ArrayList() { '7', '8' };
  108. _ArrayListNavigationData["ArrayList_Guid"] = new ArrayList() { Guid.Empty, Guid.Empty };
  109. _ArrayListNavigationData["ArrayList_customData"] = new ArrayList() { new CustomData() { Name = "Bo-b", Age = 18 }, new CustomData() { Name = "Jane", Age = 20 } };
  110. _ArrayListNavigationData["ArrayList_custom2Data"] = new ArrayList() { new Custom2Data() { Name = "Bob", Age = 18 }, new Custom2Data() { Name = "Jane", Age = 20 } };
  111. _ArrayListNavigationData["ArrayList_dayOfWeek"] = new ArrayList() { DayOfWeek.Saturday, DayOfWeek.Monday };
  112. }
  113. return _ArrayListNavigationData;
  114. }
  115. }
  116. [TestMethod]
  117. public void NavigateIndividualDataTest()
  118. {
  119. StateController.Navigate("d0", IndividualNavigationData);
  120. int i = 0;
  121. foreach (NavigationDataItem item in StateContext.Data)
  122. {
  123. Assert.AreEqual(IndividualNavigationData[item.Key], item.Value);
  124. i++;
  125. }
  126. Assert.AreEqual(StateContext.Data["dayOfWeek"], DayOfWeek.Saturday);
  127. Assert.AreEqual(16, i);
  128. }
  129. [TestMethod]
  130. public void NavigateIndividualDataRouteTest()
  131. {
  132. StateController.Navigate("d3", IndividualNavigationData);
  133. int i = 0;
  134. foreach (NavigationDataItem item in StateContext.Data)
  135. {
  136. Assert.AreEqual(IndividualNavigationData[item.Key], item.Value);
  137. i++;
  138. }
  139. Assert.AreEqual(StateContext.Data["dayOfWeek"], DayOfWeek.Saturday);
  140. Assert.AreEqual(16, i);
  141. }
  142. [TestMethod]
  143. public void NavigateIndividualDataWithoutTrailTest()
  144. {
  145. StateController.Navigate("d2");
  146. StateController.Navigate("t0");
  147. StateController.Navigate("t0", IndividualNavigationData);
  148. int i = 0;
  149. foreach (NavigationDataItem item in StateContext.Data)
  150. {
  151. Assert.AreEqual(IndividualNavigationData[item.Key], item.Value);
  152. i++;
  153. }
  154. Assert.AreEqual(StateContext.Data["DateTime"], new DateTime(1990, 3, 1, 12, 35, 47));
  155. Assert.AreEqual(StateContext.Data["TimeSpan"], new TimeSpan(10, 5, 23));
  156. Assert.AreEqual(16, i);
  157. }
  158. [TestMethod]
  159. public void NavigateIndividualDataWithoutTrailRouteTest()
  160. {
  161. StateController.Navigate("d5");
  162. StateController.Navigate("t0");
  163. StateController.Navigate("t0", IndividualNavigationData);
  164. int i = 0;
  165. foreach (NavigationDataItem item in StateContext.Data)
  166. {
  167. Assert.AreEqual(IndividualNavigationData[item.Key], item.Value);
  168. i++;
  169. }
  170. Assert.AreEqual(StateContext.Data["DateTime"], new DateTime(1990, 3, 1, 12, 35, 47));
  171. Assert.AreEqual(StateContext.Data["TimeSpan"], new TimeSpan(10, 5, 23));
  172. Assert.AreEqual(16, i);
  173. }
  174. [TestMethod]
  175. public void NavigateListDataTest()
  176. {
  177. StateController.Navigate("d0", ListNavigationData);
  178. StateController.Navigate("t0");
  179. StateController.NavigateBack(1);
  180. int i = 0;
  181. foreach (NavigationDataItem item in (IEnumerable)StateContext.Data)
  182. {
  183. Assert.AreEqual(((IList)ListNavigationData[item.Key])[0], ((IList)item.Value)[0]);
  184. Assert.AreEqual(((IList)ListNavigationData[item.Key])[1], ((IList)item.Value)[1]);
  185. i++;
  186. }
  187. Assert.AreEqual(((IList)StateContext.Data["List_float"])[0], 3f);
  188. Assert.AreEqual(((IList)StateContext.Data["List_double"])[1], 5d);
  189. Assert.AreEqual(15, i);
  190. }
  191. [TestMethod]
  192. public void NavigateListDataRouteTest()
  193. {
  194. StateController.Navigate("d3", ListNavigationData);
  195. StateController.Navigate("t0");
  196. StateController.NavigateBack(1);
  197. int i = 0;
  198. foreach (NavigationDataItem item in (IEnumerable)StateContext.Data)
  199. {
  200. Assert.AreEqual(((IList)ListNavigationData[item.Key])[0], ((IList)item.Value)[0]);
  201. Assert.AreEqual(((IList)ListNavigationData[item.Key])[1], ((IList)item.Value)[1]);
  202. i++;
  203. }
  204. Assert.AreEqual(((IList)StateContext.Data["List_float"])[0], 3f);
  205. Assert.AreEqual(((IList)StateContext.Data["List_double"])[1], 5d);
  206. Assert.AreEqual(15, i);
  207. }
  208. [TestMethod]
  209. public void NavigateArrayListDataTest()
  210. {
  211. StateController.Navigate("d0", ArrayListNavigationData);
  212. StateController.Navigate("t0");
  213. StateController.NavigateBack(1);
  214. int i = 0;
  215. foreach (NavigationDataItem item in StateContext.Data)
  216. {
  217. Assert.AreEqual(((IList)ArrayListNavigationData[item.Key])[0], ((IList)item.Value)[0]);
  218. Assert.AreEqual(((IList)ArrayListNavigationData[item.Key])[1], ((IList)item.Value)[1]);
  219. i++;
  220. }
  221. Assert.AreEqual(((IList)StateContext.Data["ArrayList_string"])[0], null);
  222. Assert.AreEqual(((IList)StateContext.Data["ArrayList_string"]).Count, 2);
  223. Assert.AreEqual(((IList)StateContext.Data["ArrayList_bool"])[1], false);
  224. Assert.AreEqual(((IList)StateContext.Data["ArrayList_Guid"])[0], Guid.Empty);
  225. Assert.AreEqual(15, i);
  226. }
  227. [TestMethod]
  228. public void NavigateArrayListDataRouteTest()
  229. {
  230. StateController.Navigate("d3", ArrayListNavigationData);
  231. StateController.Navigate("t0");
  232. StateController.NavigateBack(1);
  233. int i = 0;
  234. foreach (NavigationDataItem item in StateContext.Data)
  235. {
  236. Assert.AreEqual(((IList)ArrayListNavigationData[item.Key])[0], ((IList)item.Value)[0]);
  237. Assert.AreEqual(((IList)ArrayListNavigationData[item.Key])[1], ((IList)item.Value)[1]);
  238. i++;
  239. }
  240. Assert.AreEqual(((IList)StateContext.Data["ArrayList_string"])[0], null);
  241. Assert.AreEqual(((IList)StateContext.Data["ArrayList_string"]).Count, 2);
  242. Assert.AreEqual(((IList)StateContext.Data["ArrayList_bool"])[1], false);
  243. Assert.AreEqual(((IList)StateContext.Data["ArrayList_Guid"])[0], Guid.Empty);
  244. Assert.AreEqual(15, i);
  245. }
  246. [TestMethod]
  247. [ExpectedException(typeof(ArgumentException))]
  248. public void InvalidIndividualDataTest()
  249. {
  250. NavigationData data = new NavigationData();
  251. data["item"] = DateTimeOffset.MinValue;
  252. StateController.Navigate("d0", data);
  253. }
  254. [TestMethod]
  255. [ExpectedException(typeof(ArgumentException))]
  256. public void InvalidIndividualDataRouteTest()
  257. {
  258. NavigationData data = new NavigationData();
  259. data["item"] = DateTimeOffset.MinValue;
  260. StateController.Navigate("d3", data);
  261. }
  262. [TestMethod]
  263. [ExpectedException(typeof(ArgumentException))]
  264. public void InvalidListDataTest()
  265. {
  266. StateController.Navigate("d0");
  267. StateContext.Data["item"] = new List<DateTimeKind>() { DateTimeKind.Local };
  268. StateController.Navigate("t0");
  269. }
  270. [TestMethod]
  271. [ExpectedException(typeof(ArgumentException))]
  272. public void InvalidListDataRouteTest()
  273. {
  274. StateController.Navigate("d3");
  275. StateContext.Data["item"] = new List<DateTimeKind>() { DateTimeKind.Local };
  276. StateController.Navigate("t0");
  277. }
  278. [TestMethod]
  279. [ExpectedException(typeof(ArgumentException))]
  280. public void InvalidListTest()
  281. {
  282. NavigationData data = new NavigationData();
  283. data["item"] = new HashSet<string>() { "1" };
  284. StateController.Navigate("d0", data);
  285. }
  286. [TestMethod]
  287. [ExpectedException(typeof(ArgumentException))]
  288. public void InvalidListRouteTest()
  289. {
  290. NavigationData data = new NavigationData();
  291. data["item"] = new HashSet<string>() { "1" };
  292. StateController.Navigate("d3", data);
  293. }
  294. [TestMethod]
  295. [ExpectedException(typeof(ArgumentException))]
  296. public void InvalidArrayListDataTest()
  297. {
  298. StateController.Navigate("d0");
  299. StateContext.Data["item"] = new ArrayList() { DateTimeKind.Local };
  300. StateController.Navigate("t0");
  301. }
  302. [TestMethod]
  303. [ExpectedException(typeof(ArgumentException))]
  304. public void InvalidArrayListDataRouteTest()
  305. {
  306. StateController.Navigate("d3");
  307. StateContext.Data["item"] = new ArrayList() { DateTimeKind.Local };
  308. StateController.Navigate("t0");
  309. }
  310. [TestMethod]
  311. [ExpectedException(typeof(ArgumentException))]
  312. public void InvalidDataGetNavigationLinkTest()
  313. {
  314. NavigationData data = new NavigationData();
  315. data["item"] = DateTimeOffset.MinValue;
  316. string link = StateController.GetNavigationLink("d0", data);
  317. }
  318. [TestMethod]
  319. [ExpectedException(typeof(ArgumentException))]
  320. public void InvalidDataGetNavigationLinkRouteTest()
  321. {
  322. NavigationData data = new NavigationData();
  323. data["item"] = DateTimeOffset.MinValue;
  324. string link = StateController.GetNavigationLink("d3", data);
  325. }
  326. [TestMethod]
  327. [ExpectedException(typeof(ArgumentException))]
  328. public void InvalidDataRefreshTest()
  329. {
  330. StateController.Navigate("d0");
  331. StateContext.Data["item"] = DateTimeOffset.MinValue;
  332. StateController.Refresh(new NavigationData(true));
  333. }
  334. [TestMethod]
  335. [ExpectedException(typeof(ArgumentException))]
  336. public void InvalidDataRefreshRouteTest()
  337. {
  338. StateController.Navigate("d3");
  339. StateContext.Data["item"] = DateTimeOffset.MinValue;
  340. StateController.Refresh(new NavigationData(true));
  341. }
  342. [TestMethod]
  343. [ExpectedException(typeof(ArgumentException))]
  344. public void InvalidRefreshDataTest()
  345. {
  346. StateController.Navigate("d0");
  347. StateController.Refresh(new NavigationData() { { "item", DateTimeOffset.MinValue } });
  348. }
  349. [TestMethod]
  350. [ExpectedException(typeof(ArgumentException))]
  351. public void InvalidRefreshDataRouteTest()
  352. {
  353. StateController.Navigate("d3");
  354. StateController.Refresh(new NavigationData() { { "item", DateTimeOffset.MinValue } });
  355. }
  356. [TestMethod]
  357. [ExpectedException(typeof(ArgumentException))]
  358. public void InvalidDataGetRefreshLinkTest()
  359. {
  360. StateController.Navigate("d0");
  361. StateContext.Data["item"] = DateTimeOffset.MinValue;
  362. string link = StateController.GetRefreshLink(new NavigationData(true));
  363. }
  364. [TestMethod]
  365. [ExpectedException(typeof(ArgumentException))]
  366. public void InvalidDataGetRefreshLinkRouteTest()
  367. {
  368. StateController.Navigate("d3");
  369. StateContext.Data["item"] = DateTimeOffset.MinValue;
  370. string link = StateController.GetRefreshLink(new NavigationData(true));
  371. }
  372. [TestMethod]
  373. [ExpectedException(typeof(ArgumentException))]
  374. public void InvalidGetRefreshLinkDataTest()
  375. {
  376. StateController.Navigate("d0");
  377. string link = StateController.GetRefreshLink(new NavigationData() { { "item", DateTimeOffset.MinValue } });
  378. }
  379. [TestMethod]
  380. [ExpectedException(typeof(ArgumentException))]
  381. public void InvalidGetRefreshLinkDataRouteTest()
  382. {
  383. StateController.Navigate("d3");
  384. string link = StateController.GetRefreshLink(new NavigationData() { { "item", DateTimeOffset.MinValue } });
  385. }
  386. [TestMethod]
  387. public void InvalidTypesArrayListDataTest()
  388. {
  389. NavigationData data = new NavigationData();
  390. data["item0"] = new ArrayList() { "0", 1 };
  391. data["item1"] = new ArrayList() { 0, "1" };
  392. StateController.Navigate("d0", data);
  393. Assert.AreEqual(((ArrayList)StateContext.Data["item0"])[0], "0");
  394. Assert.AreEqual(((ArrayList)StateContext.Data["item0"])[1], "1");
  395. Assert.AreEqual(((ArrayList)StateContext.Data["item1"])[0], 0);
  396. Assert.AreEqual(((ArrayList)StateContext.Data["item1"])[1], 1);
  397. }
  398. [TestMethod]
  399. public void InvalidTypesArrayListDataRouteTest()
  400. {
  401. NavigationData data = new NavigationData();
  402. data["item0"] = new ArrayList() { "0", 1 };
  403. data["item1"] = new ArrayList() { 0, "1" };
  404. StateController.Navigate("d3", data);
  405. Assert.AreEqual(((ArrayList)StateContext.Data["item0"])[0], "0");
  406. Assert.AreEqual(((ArrayList)StateContext.Data["item0"])[1], "1");
  407. Assert.AreEqual(((ArrayList)StateContext.Data["item1"])[0], 0);
  408. Assert.AreEqual(((ArrayList)StateContext.Data["item1"])[1], 1);
  409. }
  410. [TestMethod]
  411. public void NavigateInvalidContextDataWithoutTrailTest()
  412. {
  413. StateController.Navigate("d2");
  414. StateController.Navigate("t0");
  415. NavigationData data = new NavigationData();
  416. data["s"] = "Hello";
  417. StateContext.Data["item"] = DateTimeOffset.MinValue;
  418. StateController.Navigate("t0", data);
  419. Assert.AreEqual("Hello", StateContext.Data["s"]);
  420. }
  421. [TestMethod]
  422. public void NavigateInvalidContextDataWithoutTrailRouteTest()
  423. {
  424. StateController.Navigate("d5");
  425. StateController.Navigate("t0");
  426. NavigationData data = new NavigationData();
  427. data["s"] = "Hello";
  428. StateContext.Data["item"] = DateTimeOffset.MinValue;
  429. StateController.Navigate("t0", data);
  430. Assert.AreEqual("Hello", StateContext.Data["s"]);
  431. }
  432. [TestMethod]
  433. public void RefreshInvalidContextDataTest()
  434. {
  435. StateController.Navigate("d0");
  436. NavigationData data = new NavigationData();
  437. data["s"] = "Hello";
  438. StateContext.Data["item"] = DateTimeOffset.MinValue;
  439. StateController.Refresh(data);
  440. Assert.AreEqual("Hello", StateContext.Data["s"]);
  441. }
  442. [TestMethod]
  443. public void RefreshInvalidContextDataRouteTest()
  444. {
  445. StateController.Navigate("d3");
  446. NavigationData data = new NavigationData();
  447. data["s"] = "Hello";
  448. StateContext.Data["item"] = DateTimeOffset.MinValue;
  449. StateController.Refresh(data);
  450. Assert.AreEqual("Hello", StateContext.Data["s"]);
  451. }
  452. [TestMethod]
  453. [ExpectedException(typeof(ArgumentException))]
  454. public void NavigateInvalidDataWithoutTrailTest()
  455. {
  456. NavigationData data = new NavigationData();
  457. data["item"] = DateTimeOffset.MinValue;
  458. StateController.Navigate("d2", data);
  459. }
  460. [TestMethod]
  461. [ExpectedException(typeof(ArgumentException))]
  462. public void NavigateInvalidDataWithoutTrailRouteTest()
  463. {
  464. NavigationData data = new NavigationData();
  465. data["item"] = DateTimeOffset.MinValue;
  466. StateController.Navigate("d5", data);
  467. }
  468. [TestMethod]
  469. public void ReservedUrlCharacterDataTest()
  470. {
  471. NavigationData data = new NavigationData();
  472. data["*=\"/()'-_+~@:?><.;[],{}!£$%^#&"] = "!#=\"/£$%^&*()'-_+~@:?><.;[],{}";
  473. StateController.Navigate("d0", data);
  474. StateController.Navigate("t0");
  475. StateController.NavigateBack(1);
  476. Assert.AreEqual("!#=\"/£$%^&*()'-_+~@:?><.;[],{}", StateContext.Data["*=\"/()'-_+~@:?><.;[],{}!£$%^#&"]);
  477. }
  478. [TestMethod]
  479. public void ReservedUrlCharacterDataRouteTest()
  480. {
  481. NavigationData data = new NavigationData();
  482. data["*=\"/()'-_+~@:?><.;[],{}!£$%^#&"] = "!#=\"/£$%^&*()'-_+~@:?><.;[],{}";
  483. StateController.Navigate("d3", data);
  484. StateController.Navigate("t0");
  485. StateController.NavigateBack(1);
  486. Assert.AreEqual("!#=\"/£$%^&*()'-_+~@:?><.;[],{}", StateContext.Data["*=\"/()'-_+~@:?><.;[],{}!£$%^#&"]);
  487. }
  488. [TestMethod]
  489. public void ReservedUrlCharacterRouteDataTest()
  490. {
  491. NavigationData data = new NavigationData();
  492. data["*=\"/()'-_+~@:?><.;[],{}!£$%^#&"] = "!#=\"/£$%^&*()'-_+~@:?><.;[],{}";
  493. data["string"] = "!#=\"£$%^&*()'-_+~@:?><.;[],{}";
  494. data["_bool"] = "!#=\"/£$%^&*()'-_+~@:?><.;[],{}";
  495. data["short"] = "!#=\"£$%^&*()'-_+~@:?><.;[],{}";
  496. StateController.Navigate("d3");
  497. StateController.Navigate("t0", data);
  498. Assert.AreEqual("!#=\"/£$%^&*()'-_+~@:?><.;[],{}", StateContext.Data["*=\"/()'-_+~@:?><.;[],{}!£$%^#&"]);
  499. Assert.AreEqual("!#=\"£$%^&*()'-_+~@:?><.;[],{}", StateContext.Data["string"]);
  500. Assert.AreEqual("!#=\"/£$%^&*()'-_+~@:?><.;[],{}", StateContext.Data["_bool"]);
  501. Assert.AreEqual("!#=\"£$%^&*()'-_+~@:?><.;[],{}", StateContext.Data["short"]);
  502. }
  503. #if NET40Plus
  504. [TestMethod]
  505. [ExpectedException(typeof(UrlException))]
  506. public void InvalidRouteParameterTest()
  507. {
  508. NavigationData data = new NavigationData();
  509. data["string"] = "/";
  510. StateController.Navigate("d3");
  511. StateController.Navigate("t0", data);
  512. }
  513. #endif
  514. [TestMethod]
  515. public void SeparatorUrlCharacterDataTest()
  516. {
  517. NavigationData data = new NavigationData();
  518. data["_0_1_2_3_4_5_"] = "__00__11__22__33__44__55__";
  519. StateController.Navigate("d0", data);
  520. StateController.Navigate("t0");
  521. StateController.NavigateBack(1);
  522. Assert.AreEqual("__00__11__22__33__44__55__", StateContext.Data["_0_1_2_3_4_5_"]);
  523. }
  524. [TestMethod]
  525. public void SeparatorUrlCharacterDataRouteTest()
  526. {
  527. NavigationData data = new NavigationData();
  528. data["_0_1_2_3_4_5_"] = "__00__11__22__33__44__55__";
  529. StateController.Navigate("d3", data);
  530. StateController.Navigate("t0");
  531. StateController.NavigateBack(1);
  532. Assert.AreEqual("__00__11__22__33__44__55__", StateContext.Data["_0_1_2_3_4_5_"]);
  533. }
  534. [TestMethod]
  535. public void EmptyStringDataNavigateTest()
  536. {
  537. NavigationData data = new NavigationData();
  538. data["s"] = "";
  539. data["t"] = "1";
  540. StateController.Navigate("d0", data);
  541. Assert.IsNull(StateContext.Data["s"]);
  542. Assert.AreEqual("1", StateContext.Data["t"]);
  543. }
  544. [TestMethod]
  545. public void EmptyStringDataNavigateRouteTest()
  546. {
  547. NavigationData data = new NavigationData();
  548. data["s"] = "";
  549. data["t"] = "1";
  550. StateController.Navigate("d3", data);
  551. Assert.IsNull(StateContext.Data["s"]);
  552. Assert.AreEqual("1", StateContext.Data["t"]);
  553. }
  554. [TestMethod]
  555. public void EmptyStringDataTest()
  556. {
  557. StateController.Navigate("d0");
  558. StateController.Navigate("t0");
  559. StateContext.Data["s"] = "";
  560. StateContext.Data["t"] = "1";
  561. Assert.AreEqual("", StateContext.Data["s"]);
  562. Assert.AreEqual("1", StateContext.Data["t"]);
  563. }
  564. [TestMethod]
  565. public void EmptyStringDataRouteTest()
  566. {
  567. StateController.Navigate("d3");
  568. StateController.Navigate("t0");
  569. StateContext.Data["s"] = "";
  570. StateContext.Data["t"] = "1";
  571. Assert.AreEqual("", StateContext.Data["s"]);
  572. Assert.AreEqual("1", StateContext.Data["t"]);
  573. }
  574. [TestMethod]
  575. public void EmptyStringStateDataNavigateBackTest()
  576. {
  577. StateController.Navigate("d0");
  578. StateContext.Data["s"] = "";
  579. StateContext.Data["t"] = "1";
  580. StateController.Navigate("t0");
  581. StateController.NavigateBack(1);
  582. Assert.IsNull(StateContext.Data["s"]);
  583. Assert.AreEqual("1", StateContext.Data["t"]);
  584. }
  585. [TestMethod]
  586. public void EmptyStringStateDataNavigateBackRouteTest()
  587. {
  588. StateController.Navigate("d3");
  589. StateContext.Data["s"] = "";
  590. StateContext.Data["t"] = "1";
  591. StateController.Navigate("t0");
  592. StateController.NavigateBack(1);
  593. Assert.IsNull(StateContext.Data["s"]);
  594. Assert.AreEqual("1", StateContext.Data["t"]);
  595. }
  596. [TestMethod]
  597. public void NavigateDataNavigateBackTest()
  598. {
  599. NavigationData data = new NavigationData();
  600. data["s"] = "Hello";
  601. data["t"] = string.Empty;
  602. StateController.Navigate("d0", data);
  603. StateController.Navigate("t0");
  604. Assert.AreEqual("Hello", StateController.Crumbs[0].Data["s"]);
  605. Assert.IsNull(StateController.Crumbs[0].Data["t"]);
  606. StateController.NavigateBack(1);
  607. Assert.AreEqual("Hello", StateContext.Data["s"]);
  608. Assert.IsNull(StateContext.Data["t"]);
  609. }
  610. [TestMethod]
  611. public void NavigateDataNavigateBackRouteTest()
  612. {
  613. NavigationData data = new NavigationData();
  614. data["s"] = "Hello";
  615. data["t"] = string.Empty;
  616. StateController.Navigate("d3", data);
  617. StateController.Navigate("t0");
  618. Assert.AreEqual("Hello", StateController.Crumbs[0].Data["s"]);
  619. Assert.IsNull(StateController.Crumbs[0].Data["t"]);
  620. StateController.NavigateBack(1);
  621. Assert.AreEqual("Hello", StateContext.Data["s"]);
  622. Assert.IsNull(StateContext.Data["t"]);
  623. }
  624. [TestMethod]
  625. public void ChangeDataNavigateBackTest()
  626. {
  627. NavigationData data = new NavigationData();
  628. data["s"] = "Hello";
  629. StateController.Navigate("d0", data);
  630. StateContext.Data["s"] = "World";
  631. StateContext.Data["i"] = 2;
  632. StateController.Navigate("t0");
  633. Assert.AreEqual("World", StateController.Crumbs[0].Data["s"]);
  634. Assert.AreEqual(2, StateController.Crumbs[0].Data["i"]);
  635. StateController.NavigateBack(1);
  636. Assert.AreEqual("World", StateContext.Data["s"]);
  637. Assert.AreEqual(2, StateContext.Data["i"]);
  638. }
  639. [TestMethod]
  640. public void ChangeDataNavigateBackRouteTest()
  641. {
  642. NavigationData data = new NavigationData();
  643. data["s"] = "Hello";
  644. StateController.Navigate("d3", data);
  645. StateContext.Data["s"] = "World";
  646. StateContext.Data["i"] = 2;
  647. StateController.Navigate("t0");
  648. Assert.AreEqual("World", StateController.Crumbs[0].Data["s"]);
  649. Assert.AreEqual(2, StateController.Crumbs[0].Data["i"]);
  650. StateController.NavigateBack(1);
  651. Assert.AreEqual("World", StateContext.Data["s"]);
  652. Assert.AreEqual(2, StateContext.Data["i"]);
  653. }
  654. [TestMethod]
  655. public void BlankDataNavigateBackTest()
  656. {
  657. NavigationData data = new NavigationData();
  658. data["s"] = "Hello";
  659. StateController.Navigate("d0", data);
  660. StateContext.Data["s"] = null;
  661. StateContext.Data["i"] = 2;
  662. StateController.Navigate("t0");
  663. Assert.IsNull(StateController.Crumbs[0].Data["s"]);
  664. Assert.AreEqual(2, StateController.Crumbs[0]["i"]);
  665. StateController.NavigateBack(1);
  666. Assert.AreEqual(null, StateContext.Data["s"]);
  667. Assert.AreEqual(2, StateContext.Data["i"]);
  668. }
  669. [TestMethod]
  670. public void BlankDataNavigateBackRouteTest()
  671. {
  672. NavigationData data = new NavigationData();
  673. data["s"] = "Hello";
  674. StateController.Navigate("d3", data);
  675. StateContext.Data["s"] = null;
  676. StateContext.Data["i"] = 2;
  677. StateController.Navigate("t0");
  678. Assert.IsNull(StateController.Crumbs[0].Data["s"]);
  679. Assert.AreEqual(2, StateController.Crumbs[0]["i"]);
  680. StateController.NavigateBack(1);
  681. Assert.AreEqual(null, StateContext.Data["s"]);
  682. Assert.AreEqual(2, StateContext.Data["i"]);
  683. }
  684. [TestMethod]
  685. public void ClearDataNavigateBackTest()
  686. {
  687. NavigationData data = new NavigationData();
  688. data["s"] = "Hello";
  689. StateController.Navigate("d0", data);
  690. StateContext.Data.Clear();
  691. StateController.Navigate("t0");
  692. Assert.IsNull(StateController.Crumbs[0]["s"]);
  693. Assert.IsNull(StateController.Crumbs[0].Data["i"]);
  694. StateController.NavigateBack(1);
  695. Assert.AreEqual(null, StateContext.Data["s"]);
  696. Assert.AreEqual(null, StateContext.Data["i"]);
  697. }
  698. [TestMethod]
  699. public void ClearDataNavigateBackRouteTest()
  700. {
  701. NavigationData data = new NavigationData();
  702. data["s"] = "Hello";
  703. StateController.Navigate("d3", data);
  704. StateContext.Data.Clear();
  705. StateController.Navigate("t0");
  706. Assert.IsNull(StateController.Crumbs[0]["s"]);
  707. Assert.IsNull(StateController.Crumbs[0].Data["i"]);
  708. StateController.NavigateBack(1);
  709. Assert.AreEqual(null, StateContext.Data["s"]);
  710. Assert.AreEqual(null, StateContext.Data["i"]);
  711. }
  712. [TestMethod]
  713. public void RemoveDataNavigateBackTest()
  714. {
  715. NavigationData data = new NavigationData();
  716. data["s"] = "Hello";
  717. StateController.Navigate("d0", data);
  718. StateContext.Data.Remove("s");
  719. StateContext.Data["i"] = 2;
  720. StateController.Navigate("t0");
  721. Assert.IsNull(StateController.Crumbs[0].Data["s"]);
  722. Assert.AreEqual(2, StateController.Crumbs[0]["i"]);
  723. StateController.NavigateBack(1);
  724. Assert.IsNull(StateContext.Data["s"]);
  725. Assert.AreEqual(2, StateContext.Data["i"]);
  726. }
  727. [TestMethod]
  728. public void RemoveDataNavigateBackRouteTest()
  729. {
  730. NavigationData data = new NavigationData();
  731. data["s"] = "Hello";
  732. StateController.Navigate("d3", data);
  733. StateContext.Data.Remove("s");
  734. StateContext.Data["i"] = 2;
  735. StateController.Navigate("t0");
  736. Assert.IsNull(StateController.Crumbs[0].Data["s"]);
  737. Assert.AreEqual(2, StateController.Crumbs[0]["i"]);
  738. StateController.NavigateBack(1);
  739. Assert.IsNull(StateContext.Data["s"]);
  740. Assert.AreEqual(2, StateContext.Data["i"]);
  741. }
  742. [TestMethod]
  743. public void NavigateDataRefreshTest()
  744. {
  745. StateController.Navigate("d0");
  746. NavigationData data = new NavigationData();
  747. data["s"] = "Hello";
  748. StateController.Navigate("t0", data);
  749. StateController.Refresh(new NavigationData(true));
  750. Assert.AreEqual("Hello", StateContext.Data["s"]);
  751. }
  752. [TestMethod]
  753. public void NavigateDataRefreshRouteTest()
  754. {
  755. StateController.Navigate("d3");
  756. NavigationData data = new NavigationData();
  757. data["s"] = "Hello";
  758. StateController.Navigate("t0", data);
  759. StateController.Refresh(new NavigationData(true));
  760. Assert.AreEqual("Hello", StateContext.Data["s"]);
  761. }
  762. [TestMethod]
  763. public void NavigateRefreshDataTest()
  764. {
  765. StateController.Navigate("d0");
  766. NavigationData data = new NavigationData();
  767. data["s"] = "Hello";
  768. StateController.Navigate("t0");
  769. StateController.Refresh(data);
  770. Assert.AreEqual("Hello", StateContext.Data["s"]);
  771. }
  772. [TestMethod]
  773. public void NavigateRefreshDataRouteTest()
  774. {
  775. StateController.Navigate("d3");
  776. NavigationData data = new NavigationData();
  777. data["s"] = "Hello";
  778. StateController.Navigate("t0");
  779. StateController.Refresh(data);
  780. Assert.AreEqual("Hello", StateContext.Data["s"]);
  781. }
  782. [TestMethod]
  783. public void NavigateDataRefreshDataOverrideTest()
  784. {
  785. StateController.Navigate("d0");
  786. NavigationData data = new NavigationData();
  787. data["s"] = "Hello";
  788. StateController.Navigate("t0", data);
  789. data = new NavigationData();
  790. data["s"] = "World";
  791. StateController.Refresh(data);
  792. Assert.AreEqual("World", StateContext.Data["s"]);
  793. }
  794. [TestMethod]
  795. public void NavigateDataRefreshDataOverrideRouteTest()
  796. {
  797. StateController.Navigate("d3");
  798. NavigationData data = new NavigationData();
  799. data["s"] = "Hello";
  800. StateController.Navigate("t0", data);
  801. data = new NavigationData();
  802. data["s"] = "World";
  803. StateController.Refresh(data);
  804. Assert.AreEqual("World", StateContext.Data["s"]);
  805. }
  806. [TestMethod]
  807. public void NavigateDataRefreshDataBlankTest()
  808. {
  809. StateController.Navigate("d0");
  810. NavigationData data = new NavigationData();
  811. data["s"] = "Hello";
  812. StateController.Navigate("t0", data);
  813. StateController.Refresh();
  814. Assert.IsNull(StateContext.Data["s"]);
  815. }
  816. [TestMethod]
  817. public void NavigateDataRefreshDataBlankRouteTest()
  818. {
  819. StateController.Navigate("d3");
  820. NavigationData data = new NavigationData();
  821. data["s"] = "Hello";
  822. StateController.Navigate("t0", data);
  823. StateController.Refresh();
  824. Assert.IsNull(StateContext.Data["s"]);
  825. }
  826. [TestMethod]
  827. public void NavigateDataRefreshDataClearTest()
  828. {
  829. StateController.Navigate("d0");
  830. NavigationData data = new NavigationData();
  831. data["s"] = "Hello";
  832. StateController.Navigate("t0", data);
  833. StateContext.Data.Clear();
  834. StateController.Refresh(new NavigationData(true));
  835. Assert.IsNull(StateContext.Data["s"]);
  836. }
  837. [TestMethod]
  838. public void NavigateDataRefreshDataClearRouteTest()
  839. {
  840. StateController.Navigate("d3");
  841. NavigationData data = new NavigationData();
  842. data["s"] = "Hello";
  843. StateController.Navigate("t0", data);
  844. StateContext.Data.Clear();
  845. StateController.Refresh(new NavigationData(true));
  846. Assert.IsNull(StateContext.Data["s"]);
  847. }
  848. [TestMethod]
  849. public void ChangeDataRefreshTest()
  850. {
  851. StateController.Navigate("d0");
  852. NavigationData data = new NavigationData();
  853. data["s"] = "Hello";
  854. StateController.Navigate("t0", data);
  855. StateContext.Data["s"] = "World";
  856. StateContext.Data["d"] = new DateTime(2000, 1, 3);
  857. StateController.Refresh(new NavigationData(true));
  858. Assert.AreEqual("World", StateContext.Data["s"]);
  859. Assert.AreEqual(new DateTime(2000, 1, 3), StateContext.Data["d"]);
  860. }
  861. [TestMethod]
  862. public void ChangeDataRefreshRouteTest()
  863. {
  864. StateController.Navigate("d3");
  865. NavigationData data = new NavigationData();
  866. data["s"] = "Hello";
  867. StateController.Navigate("t0", data);
  868. StateContext.Data["s"] = "World";
  869. StateContext.Data["d"] = new DateTime(2000, 1, 3);
  870. StateController.Refresh(new NavigationData(true));
  871. Assert.AreEqual("World", StateContext.Data["s"]);
  872. Assert.AreEqual(new DateTime(2000, 1, 3), StateContext.Data["d"]);
  873. }
  874. [TestMethod]
  875. public void ChangeRefreshDataTest()
  876. {
  877. StateController.Navigate("d0");
  878. NavigationData data = new NavigationData();
  879. data["s"] = "Hello";
  880. data["i"] = 3;
  881. StateController.Navigate("t0", data);
  882. data = new NavigationData();
  883. data["s"] = "World";
  884. data["d"] = new DateTime(2000, 1, 3);
  885. StateController.Refresh(data);
  886. Assert.AreEqual("World", StateContext.Data["s"]);
  887. Assert.AreEqual(new DateTime(2000, 1, 3), StateContext.Data["d"]);
  888. Assert.IsNull(StateContext.Data["i"]);
  889. }
  890. [TestMethod]
  891. public void ChangeRefreshDataRouteTest()
  892. {
  893. StateController.Navigate("d3");
  894. NavigationData data = new NavigationData();
  895. data["s"] = "Hello";
  896. data["i"] = 3;
  897. StateController.Navigate("t0", data);
  898. data = new NavigationData();
  899. data["s"] = "World";
  900. data["d"] = new DateTime(2000, 1, 3);
  901. StateController.Refresh(data);
  902. Assert.AreEqual("World", StateContext.Data["s"]);
  903. Assert.AreEqual(new DateTime(2000, 1, 3), StateContext.Data["d"]);
  904. Assert.IsNull(StateContext.Data["i"]);
  905. }
  906. #if NET40Plus
  907. [TestMethod]
  908. public void ChangeDynamicDataRefreshDataOverrideTest()
  909. {
  910. StateController.Navigate("d0");
  911. NavigationData data = new NavigationData();
  912. data.Bag.s = "Hello";
  913. StateController.Navigate("t0", data);
  914. StateContext.Bag.s = "World";
  915. StateContext.Bag.d = new DateTime(2000, 1, 3);
  916. StateContext.Bag.i = 3;
  917. data = new NavigationData(true);
  918. data.Bag.s = "Hello World";
  919. data.Bag.i = null;
  920. data.Bag.n = 2;
  921. StateController.Refresh(data);
  922. Assert.AreEqual("Hello World", StateContext.Bag.s);
  923. Assert.AreEqual(new DateTime(2000, 1, 3), StateContext.Bag.d);
  924. Assert.IsNull(StateContext.Data.Bag.i);
  925. Assert.AreEqual(2, StateContext.Data.Bag.n);
  926. Assert.AreEqual(2, StateContext.Data["n"]);
  927. }
  928. [TestMethod]
  929. public void ChangeDynamicDataRefreshDataOverrideRouteTest()
  930. {
  931. StateController.Navigate("d3");
  932. NavigationData data = new NavigationData();
  933. data.Bag.s = "Hello";
  934. StateController.Navigate("t0", data);
  935. StateContext.Bag.s = "World";
  936. StateContext.Bag.d = new DateTime(2000, 1, 3);
  937. StateContext.Bag.i = 3;
  938. data = new NavigationData(true);
  939. data.Bag.s = "Hello World";
  940. data.Bag.i = null;
  941. data.Bag.n = 2;
  942. StateController.Refresh(data);
  943. Assert.AreEqual("Hello World", StateContext.Bag.s);
  944. Assert.AreEqual(new DateTime(2000, 1, 3), StateContext.Bag.d);
  945. Assert.IsNull(StateContext.Data.Bag.i);
  946. Assert.AreEqual(2, StateContext.Data.Bag.n);
  947. Assert.AreEqual(2, StateContext.Data["n"]);
  948. }
  949. #endif
  950. [TestMethod]
  951. public void NavigateWizardDataTest()
  952. {
  953. StateController.Navigate("d0");
  954. NavigationData data = new NavigationData(){
  955. {"s","Hello"},
  956. {"n",5d}
  957. };
  958. StateController.Navigate("t0", data);
  959. StateController.Navigate("t1", new NavigationData(true));
  960. Assert.AreEqual("Hello", StateController.Crumbs[1]["s"]);
  961. Assert.AreEqual(5d, StateController.Crumbs[1]["n"]);
  962. Assert.AreEqual("Hello", StateContext.Data["s"]);
  963. Assert.AreEqual(5d, StateContext.Data["n"]);
  964. }
  965. [TestMethod]
  966. public void NavigateWizardDataRouteTest()
  967. {
  968. StateController.Navigate("d3");
  969. NavigationData data = new NavigationData(){
  970. {"s","Hello"},
  971. {"n",5d}
  972. };
  973. StateController.Navigate("t0", data);
  974. StateController.Navigate("t1", new NavigationData(true));
  975. Assert.AreEqual("Hello", StateController.Crumbs[1]["s"]);
  976. Assert.AreEqual(5d, StateController.Crumbs[1]["n"]);
  977. Assert.AreEqual("Hello", StateContext.Data["s"]);
  978. Assert.AreEqual(5d, StateContext.Data["n"]);
  979. }
  980. [TestMethod]
  981. public void NavigateDataNavigateTransitionTransitionTest()
  982. {
  983. NavigationData data = new NavigationData();
  984. data["s"] = 1;
  985. StateController.Navigate("d0", data);
  986. Assert.AreEqual(1, StateContext.Data["s"]);
  987. Assert.IsNull(StateContext.Data["t"]);
  988. data["s"] = 2;
  989. data["t"] = "2";
  990. StateController.Navigate("t1", data);
  991. Assert.AreEqual(1, StateController.Crumbs[0]["s"]);
  992. Assert.IsNull(StateController.Crumbs[0]["t"]);
  993. Assert.AreEqual(2, StateContext.Data["s"]);
  994. Assert.AreEqual("2", StateContext.Data["t"]);
  995. data["s"] = 3;
  996. data["t"] = "3";
  997. StateController.Navigate("t1", data);
  998. Assert.AreEqual(1, StateController.Crumbs[0].Data["s"]);
  999. Assert.IsNull(StateController.Crumbs[0].Data["t"]);
  1000. Assert.AreEqual(2, StateController.Crumbs[1].Data["s"]);
  1001. Assert.AreEqual("2", StateController.Crumbs[1].Data["t"]);
  1002. Assert.AreEqual(3, StateContext.Data["s"]);
  1003. Assert.AreEqual("3", StateContext.Data["t"]);
  1004. }
  1005. [TestMethod]
  1006. public void NavigateDataNavigateTransitionTransitionRouteTest()
  1007. {
  1008. NavigationData data = new NavigationData();
  1009. data["s"] = 1;
  1010. StateController.Navigate("d3", data);
  1011. Assert.AreEqual(1, StateContext.Data["s"]);
  1012. Assert.IsNull(StateContext.Data["t"]);
  1013. data["s"] = 2;
  1014. data["t"] = "2";
  1015. StateController.Navigate("t1", data);
  1016. Assert.AreEqual(1, StateController.Crumbs[0]["s"]);
  1017. Assert.IsNull(StateController.Crumbs[0]["t"]);
  1018. Assert.AreEqual(2, StateContext.Data["s"]);
  1019. Assert.AreEqual("2", StateContext.Data["t"]);
  1020. data["s"] = 3;
  1021. data["t"] = "3";
  1022. StateController.Navigate("t1", data);
  1023. Assert.AreEqual(1, StateController.Crumbs[0].Data["s"]);
  1024. Assert.IsNull(StateController.Crumbs[0].Data["t"]);
  1025. Assert.AreEqual(2, StateController.Crumbs[1].Data["s"]);
  1026. Assert.AreEqual("2", StateController.Crumbs[1].Data["t"]);
  1027. Assert.AreEqual(3, StateContext.Data["s"]);
  1028. Assert.AreEqual("3", StateContext.Data["t"]);
  1029. }
  1030. #if NET40Plus
  1031. [TestMethod]
  1032. public void NavigateDynamicDataNavigateTransitionTransitionTest()
  1033. {
  1034. NavigationData data = new NavigationData();
  1035. data.Bag.s = 1;
  1036. StateController.Navigate("d0", data);
  1037. Assert.AreEqual(1, StateContext.Bag.s);
  1038. data.Bag.s = "2";
  1039. StateController.Navigate("t1", data);
  1040. Assert.AreEqual(1, StateController.Crumbs[0].Bag.s);
  1041. Assert.AreEqual("2", StateContext.Bag.s);
  1042. data.Bag.s = '3';
  1043. StateController.Navigate("t1", data);
  1044. Assert.AreEqual(1, StateController.Crumbs[0].Data.Bag.s);
  1045. Assert.AreEqual(1, StateController.Crumbs[0].Data["s"]);
  1046. Assert.AreEqual("2", StateController.Crumbs[1].Bag.s);
  1047. Assert.AreEqual('3', StateContext.Data.Bag.s);
  1048. }
  1049. [TestMethod]
  1050. public void NavigateDynamicDataNavigateTransitionTransitionRouteTest()
  1051. {
  1052. NavigationData data = new NavigationData();
  1053. data.Bag.s = 1;
  1054. StateController.Navigate("d3", data);
  1055. Assert.AreEqual(1, StateContext.Bag.s);
  1056. data.Bag.s = "2";
  1057. StateController.Navigate("t1", data);
  1058. Assert.AreEqual(1, StateController.Crumbs[0].Bag.s);
  1059. Assert.AreEqual("2", StateContext.Bag.s);
  1060. data.Bag.s = '3';
  1061. StateController.Navigate("t1", data);
  1062. Assert.AreEqual(1, StateController.Crumbs[0].Data.Bag.s);
  1063. Assert.AreEqual(1, StateController.Crumbs[0].Data["s"]);
  1064. Assert.AreEqual("2", StateController.Crumbs[1].Bag.s);
  1065. Assert.AreEqual('3', StateContext.Data.Bag.s);
  1066. }
  1067. #endif
  1068. [TestMethod]
  1069. public void ChangeDataNavigateTransitionTransitionTest()
  1070. {
  1071. NavigationData data = new NavigationData();
  1072. data["s"] = 1;
  1073. StateController.Navigate("d0", data);
  1074. Assert.AreEqual(1, StateContext.Data["s"]);
  1075. StateContext.Data["s"] = 11;
  1076. Assert.IsNull(StateContext.Data["t"]);
  1077. data["s"] = 2;
  1078. data["t"] = "2";
  1079. StateController.Navigate("t1", data);
  1080. Assert.AreEqual(11, StateController.Crumbs[0]["s"]);
  1081. Assert.IsNull(StateController.Crumbs[0]["t"]);
  1082. Assert.AreEqual(2, StateContext.Data["s"]);
  1083. Assert.AreEqual("2", StateContext.Data["t"]);
  1084. StateContext.Data["t"] = "22";
  1085. data["s"] = 3;
  1086. data["t"] = "3";
  1087. StateController.Navigate("t1", data);
  1088. Assert.AreEqual(11, StateController.Crumbs[0].Data["s"]);
  1089. Assert.IsNull(StateController.Crumbs[0]["t"]);
  1090. Assert.AreEqual(2, StateController.Crumbs[1].Data["s"]);
  1091. Assert.AreEqual("22", StateController.Crumbs[1].Data["t"]);
  1092. Assert.AreEqual(3, StateContext.Data["s"]);
  1093. Assert.AreEqual("3", StateContext.Data["t"]);
  1094. }
  1095. [TestMethod]
  1096. public void ChangeDataNavigateTransitionTransitionRouteTest()
  1097. {
  1098. NavigationData data = new NavigationData();
  1099. data["s"] = 1;
  1100. StateController.Navigate("d3", data);
  1101. Assert.AreEqual(1, StateContext.Data["s"]);
  1102. StateContext.Data["s"] = 11;
  1103. Assert.IsNull(StateContext.Data["t"]);
  1104. data["s"] = 2;
  1105. data["t"] = "2";
  1106. StateController.Navigate("t1", data);
  1107. Assert.AreEqual(11, StateController.Crumbs[0]["s"]);
  1108. Assert.IsNull(StateController.Crumbs[0]["t"]);
  1109. Assert.AreEqual(2, StateContext.Data["s"]);
  1110. Assert.AreEqual("2", StateContext.Data["t"]);
  1111. StateContext.Data["t"] = "22";
  1112. data["s"] = 3;
  1113. data["t"] = "3";
  1114. StateController.Navigate("t1", data);
  1115. Assert.AreEqual(11, StateController.Crumbs[0].Data["s"]);
  1116. Assert.IsNull(StateController.Crumbs[0]["t"]);
  1117. Assert.AreEqual(2, StateController.Crumbs[1].Data["s"]);
  1118. Assert.AreEqual("22", StateController.Crumbs[1].Data["t"]);
  1119. Assert.AreEqual(3, StateContext.Data["s"]);
  1120. Assert.AreEqual("3", StateContext.Data["t"]);
  1121. }
  1122. [TestMethod]
  1123. public void ChangeCrumbDataNavigateBackTest()
  1124. {
  1125. NavigationData data = new NavigationData();
  1126. data["s"] = "Hello";
  1127. StateController.Navigate("d0", data);
  1128. StateController.Navigate("t0");
  1129. Crumb crumb = StateController.Crumbs[0];
  1130. crumb.Data["s"] = "Changed";
  1131. Assert.AreEqual("Changed", crumb.Data["s"]);
  1132. Assert.AreEqual("Hello", StateController.Crumbs[0].Data["s"]);
  1133. StateController.NavigateBack(1);
  1134. Assert.AreEqual("Hello", StateContext.Data["s"]);
  1135. }
  1136. [TestMethod]
  1137. public void ChangeCrumbDataNavigateBackRouteTest()
  1138. {
  1139. NavigationData data = new NavigationData();
  1140. data["s"] = "Hello";
  1141. StateController.Navigate("d3", data);
  1142. StateController.Navigate("t0");
  1143. Crumb crumb = StateController.Crumbs[0];
  1144. crumb.Data["s"] = "Changed";
  1145. Assert.AreEqual("Changed", crumb.Data["s"]);
  1146. Assert.AreEqual("Hello", StateController.Crumbs[0].Data["s"]);
  1147. StateController.NavigateBack(1);
  1148. Assert.AreEqual("Hello", StateContext.Data["s"]);
  1149. }
  1150. #if NET35Plus
  1151. [TestMethod]
  1152. [ExpectedException(typeof(UrlException))]
  1153. public void NavigateHistoryInvalidDataTest()
  1154. {
  1155. StateController.Navigate("d0");
  1156. NameValueCollection coll = new NameValueCollection(){
  1157. {"name","22_1"},
  1158. {"cs","VLijzPeq"}
  1159. };
  1160. StateController.NavigateHistory(coll);
  1161. }
  1162. [TestMethod]
  1163. public void NavigateHistoryIndividualDataTest()
  1164. {
  1165. StateController.Navigate("d2");
  1166. StateController.Navigate("t0");
  1167. string url = StateController.GetNavigationLink("t0", IndividualNavigationData);
  1168. NameValueCollection coll = HttpUtility.ParseQueryString(url.Substring(url.IndexOf("?", StringComparison.Ordinal)));
  1169. StateController.NavigateHistory(coll);
  1170. int i = 0;
  1171. foreach (NavigationDataItem item in StateContext.Data)
  1172. {
  1173. Assert.AreEqual(IndividualNavigationData[item.Key], item.Value);
  1174. i++;
  1175. }
  1176. Assert.AreEqual(16, i);
  1177. }
  1178. [TestMethod]
  1179. public void NavigateHistoryListDataTest()
  1180. {
  1181. StateController.Navigate("d2");
  1182. StateController.Navigate("t0");
  1183. string url = StateController.GetNavigationLink("t0", ListNavigationData);
  1184. NameValueCollection coll = HttpUtility.ParseQueryString(url.Substring(url.IndexOf("?", StringComparison.Ordinal)));
  1185. StateController.NavigateHistory(coll);
  1186. int i = 0;
  1187. foreach (NavigationDataItem item in (IEnumerable)StateContext.Data)
  1188. {
  1189. Assert.AreEqual(((IList)ListNavigationData[item.Key])[0], ((IList)item.Value)[0]);
  1190. Assert.AreEqual(((IList)ListNavigationData[item.Key])[1], ((IList)item.Value)[1]);
  1191. i++;
  1192. }
  1193. Assert.AreEqual(15, i);
  1194. }
  1195. [TestMethod]
  1196. public void NavigateHistoryArrayListDataTest()
  1197. {
  1198. StateController.Navigate("d2");
  1199. StateController.Navigate("t0");
  1200. string url = StateController.GetNavigationLink("t0", ArrayListNavigationData);
  1201. NameValueCollection coll = HttpUtility.ParseQueryString(url.Substring(url.IndexOf("?", StringComparison.Ordinal)));
  1202. StateController.NavigateHistory(coll);
  1203. int i = 0;
  1204. foreach (NavigationDataItem item in StateContext.Data)
  1205. {
  1206. Assert.AreEqual(((IList)ArrayListNavigationData[item.Key])[0], ((IList)item.Value)[0]);
  1207. Assert.AreEqual(((IList)ArrayListNavigationData[item.Key])[1], ((IList)item.Value)[1]);
  1208. i++;
  1209. }
  1210. Assert.AreEqual(15, i);
  1211. }
  1212. #endif
  1213. [TestMethod]
  1214. public void NavigateDefaultsTest()
  1215. {
  1216. StateController.Navigate("d0");
  1217. StateController.Navigate("t0");
  1218. Assert.AreEqual("Hello", StateContext.Data["string"]);
  1219. Assert.AreEqual(true, StateContext.Data["_bool"]);
  1220. Assert.AreEqual(0, StateContext.Data["_int"]);
  1221. Assert.AreEqual((short)1, StateContext.Data["short"]);
  1222. Assert.AreEqual(2L, StateContext.Data["long"]);
  1223. Assert.AreEqual(3F, StateContext.Data["float"]);
  1224. }
  1225. [TestMethod]
  1226. public void NavigateDefaultsRouteTest()
  1227. {
  1228. StateController.Navigate("d3");
  1229. StateController.Navigate("t0");
  1230. Assert.AreEqual("Hello", StateContext.Data["string"]);
  1231. Assert.AreEqual(true, StateContext.Data["_bool"]);
  1232. Assert.AreEqual(0, StateContext.Data["_int"]);
  1233. Assert.AreEqual((short)1, StateContext.Data["short"]);
  1234. Assert.AreEqual(2L, StateContext.Data["long"]);
  1235. Assert.AreEqual(3F, StateContext.Data["float"]);
  1236. }
  1237. [TestMethod]
  1238. public void NavigationDataDefaultsTest()
  1239. {
  1240. StateController.Navigate("d0");
  1241. StateController.Navigate("t0");
  1242. NavigationData data = new NavigationData(true);
  1243. data["string"] = null;
  1244. data["_int"] = "Hello";
  1245. Assert.IsNull(data["string"]);
  1246. Assert.AreEqual(true, data["_bool"]);
  1247. Assert.AreEqual("Hello", data["_int"]);
  1248. Assert.AreEqual((short)1, data["short"]);
  1249. Assert.AreEqual(2L, data["long"]);
  1250. Assert.AreEqual(3F, data["float"]);
  1251. }
  1252. [TestMethod]
  1253. public void NavigationDataDefaultsRouteTest()
  1254. {
  1255. StateController.Navigate("d3");
  1256. StateController.Navigate("t0");
  1257. NavigationData data = new NavigationData(true);
  1258. data["string"] = null;
  1259. data["_int"] = "Hello";
  1260. Assert.IsNull(data["string"]);
  1261. Assert.AreEqual(true, data["_bool"]);
  1262. Assert.AreEqual("Hello", data["_int"]);
  1263. Assert.AreEqual((short)1, data["short"]);
  1264. Assert.AreEqual(2L, data["long"]);
  1265. Assert.AreEqual(3F, data["float"]);
  1266. }
  1267. [TestMethod]
  1268. public void BlankNavigationDataDefaultsTest()
  1269. {
  1270. StateController.Navigate("d0");
  1271. StateController.Navigate("t0");
  1272. NavigationData data = new NavigationData();
  1273. Assert.IsNull(data["string"]);
  1274. Assert.IsNull(data["_bool"]);
  1275. Assert.IsNull(data["_int"]);
  1276. Assert.IsNull(data["short"]);
  1277. Assert.IsNull(data["long"]);
  1278. Assert.IsNull(data["float"]);
  1279. }
  1280. [TestMethod]
  1281. public void BlankNavigationDataDefaultsRouteTest()
  1282. {
  1283. StateController.Navigate("d3");
  1284. StateController.Navigate("t0");
  1285. NavigationData data = new NavigationData();
  1286. Assert.IsNull(data["string"]);
  1287. Assert.IsNull(data["_bool"]);
  1288. Assert.IsNull(data["_int"]);
  1289. Assert.IsNull(data["short"]);
  1290. Assert.IsNull(data["long"]);
  1291. Assert.IsNull(data["float"]);
  1292. }
  1293. [TestMethod]
  1294. public void RemoveDefaultsTest()
  1295. {
  1296. StateController.Navigate("d0");
  1297. StateController.Navigate("t0");
  1298. StateController.Navigate("t0");
  1299. StateContext.Data["emptyString"] = null;
  1300. StateContext.Data["double"] = null;
  1301. StateContext.Data["decimal"] = null;
  1302. StateContext.Data["DateTime"] = null;
  1303. StateContext.Data["byte"] = null;
  1304. StateContext.Data["char"] = null;
  1305. Assert.AreEqual("", StateContext.Data["emptyString"]);
  1306. Assert.AreEqual(4D, StateContext.Data["double"]);
  1307. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1308. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateContext.Data["DateTime"]);
  1309. Assert.AreEqual((byte)6, StateContext.Data["byte"]);
  1310. Assert.AreEqual('7', StateContext.Data["char"]);
  1311. }
  1312. [TestMethod]
  1313. public void RemoveDefaultsRouteTest()
  1314. {
  1315. StateController.Navigate("d3");
  1316. StateController.Navigate("t0");
  1317. StateController.Navigate("t0");
  1318. StateContext.Data["emptyString"] = null;
  1319. StateContext.Data["double"] = null;
  1320. StateContext.Data["decimal"] = null;
  1321. StateContext.Data["DateTime"] = null;
  1322. StateContext.Data["byte"] = null;
  1323. StateContext.Data["char"] = null;
  1324. Assert.AreEqual("", StateContext.Data["emptyString"]);
  1325. Assert.AreEqual(4D, StateContext.Data["double"]);
  1326. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1327. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateContext.Data["DateTime"]);
  1328. Assert.AreEqual((byte)6, StateContext.Data["byte"]);
  1329. Assert.AreEqual('7', StateContext.Data["char"]);
  1330. }
  1331. [TestMethod]
  1332. public void EmptyStringDefaultsTest()
  1333. {
  1334. StateController.Navigate("d0");
  1335. StateController.Navigate("t0");
  1336. StateController.Navigate("t0");
  1337. StateContext.Data["emptyString"] = string.Empty;
  1338. StateContext.Data["double"] = string.Empty;
  1339. StateContext.Data["decimal"] = string.Empty;
  1340. StateContext.Data["DateTime"] = string.Empty;
  1341. StateContext.Data["byte"] = string.Empty;
  1342. Sta

Large files files are truncated, but you can click here to view the full file