PageRenderTime 225ms CodeModel.GetById 33ms RepoModel.GetById 1ms app.codeStats 1ms

/Navigation.Test/NavigationDataTest.cs

#
C# | 3983 lines | 3730 code | 253 blank | 0 comment | 6 complexity | 71f3370614f825e017b0908eee2400f4 MD5 | raw 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. StateContext.Data["char"] = string.Empty;
  1343. Assert.AreEqual("", StateContext.Data["emptyString"]);
  1344. Assert.AreEqual(4D, StateContext.Data["double"]);
  1345. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1346. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateContext.Data["DateTime"]);
  1347. Assert.AreEqual((byte)6, StateContext.Data["byte"]);
  1348. Assert.AreEqual('7', StateContext.Data["char"]);
  1349. }
  1350. [TestMethod]
  1351. public void EmptyStringDefaultsRouteTest()
  1352. {
  1353. StateController.Navigate("d3");
  1354. StateController.Navigate("t0");
  1355. StateController.Navigate("t0");
  1356. StateContext.Data["emptyString"] = string.Empty;
  1357. StateContext.Data["double"] = string.Empty;
  1358. StateContext.Data["decimal"] = string.Empty;
  1359. StateContext.Data["DateTime"] = string.Empty;
  1360. StateContext.Data["byte"] = string.Empty;
  1361. StateContext.Data["char"] = string.Empty;
  1362. Assert.AreEqual("", StateContext.Data["emptyString"]);
  1363. Assert.AreEqual(4D, StateContext.Data["double"]);
  1364. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1365. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateContext.Data["DateTime"]);
  1366. Assert.AreEqual((byte)6, StateContext.Data["byte"]);
  1367. Assert.AreEqual('7', StateContext.Data["char"]);
  1368. }
  1369. [TestMethod]
  1370. public void NavigateDataAndDefaultsTest()
  1371. {
  1372. StateController.Navigate("d0");
  1373. StateController.Navigate("t0");
  1374. NavigationData data = new NavigationData(){
  1375. { "s" , 1 }, { "t" , ""}, {"double", string.Empty}
  1376. };
  1377. StateController.Navigate("t0", data);
  1378. Assert.AreEqual(string.Empty, StateContext.Data["emptyString"]);
  1379. Assert.AreEqual(4D, StateContext.Data["double"]);
  1380. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1381. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateContext.Data["DateTime"]);
  1382. Assert.AreEqual((byte)6, StateContext.Data["byte"]);
  1383. Assert.AreEqual('7', StateContext.Data["char"]);
  1384. Assert.AreEqual(1, StateContext.Data["s"]);
  1385. Assert.IsNull(StateContext.Data["t"]);
  1386. }
  1387. [TestMethod]
  1388. public void NavigateDataAndDefaultsRouteTest()
  1389. {
  1390. StateController.Navigate("d3");
  1391. StateController.Navigate("t0");
  1392. NavigationData data = new NavigationData(){
  1393. { "s" , 1 }, { "t" , ""}, {"double", string.Empty}
  1394. };
  1395. StateController.Navigate("t0", data);
  1396. Assert.AreEqual(string.Empty, StateContext.Data["emptyString"]);
  1397. Assert.AreEqual(4D, StateContext.Data["double"]);
  1398. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1399. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateContext.Data["DateTime"]);
  1400. Assert.AreEqual((byte)6, StateContext.Data["byte"]);
  1401. Assert.AreEqual('7', StateContext.Data["char"]);
  1402. Assert.AreEqual(1, StateContext.Data["s"]);
  1403. Assert.IsNull(StateContext.Data["t"]);
  1404. }
  1405. [TestMethod]
  1406. public void NavigateOverrideDefaultsTest()
  1407. {
  1408. StateController.Navigate("d0");
  1409. StateController.Navigate("t0");
  1410. NavigationData data = new NavigationData(){
  1411. { "emptyString" , 2 }, { "double" , 1D }, { "decimal" , 5m}
  1412. };
  1413. StateController.Navigate("t0", data);
  1414. Assert.AreEqual(2, StateContext.Data["emptyString"]);
  1415. Assert.AreEqual(1D, StateContext.Data["double"]);
  1416. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1417. }
  1418. [TestMethod]
  1419. public void NavigateOverrideDefaultsRouteTest()
  1420. {
  1421. StateController.Navigate("d3");
  1422. StateController.Navigate("t0");
  1423. NavigationData data = new NavigationData(){
  1424. { "emptyString" , 2 }, { "double" , 1D }, { "decimal" , 5m}
  1425. };
  1426. StateController.Navigate("t0", data);
  1427. Assert.AreEqual(2, StateContext.Data["emptyString"]);
  1428. Assert.AreEqual(1D, StateContext.Data["double"]);
  1429. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1430. }
  1431. [TestMethod]
  1432. public void OverrideDefaultsTest()
  1433. {
  1434. StateController.Navigate("d0");
  1435. StateController.Navigate("t0");
  1436. StateController.Navigate("t0");
  1437. StateContext.Data["emptyString"] = "Hello";
  1438. StateContext.Data["double"] = 4D;
  1439. StateContext.Data["DateTime"] = new DateTime(2000, 4, 2);
  1440. Assert.AreEqual("Hello", StateContext.Data["emptyString"]);
  1441. Assert.AreEqual(4D, StateContext.Data["double"]);
  1442. Assert.AreEqual(new DateTime(2000, 4, 2), StateContext.Data["DateTime"]);
  1443. Assert.AreEqual('7', StateContext.Data["char"]);
  1444. }
  1445. [TestMethod]
  1446. public void OverrideDefaultsRouteTest()
  1447. {
  1448. StateController.Navigate("d3");
  1449. StateController.Navigate("t0");
  1450. StateController.Navigate("t0");
  1451. StateContext.Data["emptyString"] = "Hello";
  1452. StateContext.Data["double"] = 4D;
  1453. StateContext.Data["DateTime"] = new DateTime(2000, 4, 2);
  1454. Assert.AreEqual("Hello", StateContext.Data["emptyString"]);
  1455. Assert.AreEqual(4D, StateContext.Data["double"]);
  1456. Assert.AreEqual(new DateTime(2000, 4, 2), StateContext.Data["DateTime"]);
  1457. Assert.AreEqual('7', StateContext.Data["char"]);
  1458. }
  1459. [TestMethod]
  1460. public void ClearDataAndDefaultsTest()
  1461. {
  1462. StateController.Navigate("d0");
  1463. StateController.Navigate("t0");
  1464. NavigationData data = new NavigationData(){
  1465. { "s" , 1 }, { "t" , "2"}
  1466. };
  1467. StateController.Navigate("t0", data);
  1468. StateContext.Data.Clear();
  1469. Assert.AreEqual("", StateContext.Data["emptyString"]);
  1470. Assert.AreEqual(4D, StateContext.Data["double"]);
  1471. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1472. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateContext.Data["DateTime"]);
  1473. Assert.AreEqual((byte)6, StateContext.Data["byte"]);
  1474. Assert.AreEqual('7', StateContext.Data["char"]);
  1475. Assert.IsNull(StateContext.Data["s"]);
  1476. Assert.IsNull(StateContext.Data["t"]);
  1477. }
  1478. [TestMethod]
  1479. public void ClearDataAndDefaultsRouteTest()
  1480. {
  1481. StateController.Navigate("d3");
  1482. StateController.Navigate("t0");
  1483. NavigationData data = new NavigationData(){
  1484. { "s" , 1 }, { "t" , "2"}
  1485. };
  1486. StateController.Navigate("t0", data);
  1487. StateContext.Data.Clear();
  1488. Assert.AreEqual("", StateContext.Data["emptyString"]);
  1489. Assert.AreEqual(4D, StateContext.Data["double"]);
  1490. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1491. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateContext.Data["DateTime"]);
  1492. Assert.AreEqual((byte)6, StateContext.Data["byte"]);
  1493. Assert.AreEqual('7', StateContext.Data["char"]);
  1494. Assert.IsNull(StateContext.Data["s"]);
  1495. Assert.IsNull(StateContext.Data["t"]);
  1496. }
  1497. [TestMethod]
  1498. public void NavigateBackDefaultsTest()
  1499. {
  1500. StateController.Navigate("d0");
  1501. StateController.Navigate("t0");
  1502. StateController.Navigate("t0");
  1503. StateController.NavigateBack(1);
  1504. Assert.AreEqual("Hello", StateContext.Data["string"]);
  1505. Assert.AreEqual(true, StateContext.Data["_bool"]);
  1506. Assert.AreEqual(0, StateContext.Data["_int"]);
  1507. Assert.AreEqual((short)1, StateContext.Data["short"]);
  1508. Assert.AreEqual(2L, StateContext.Data["long"]);
  1509. Assert.AreEqual(3F, StateContext.Data["float"]);
  1510. }
  1511. [TestMethod]
  1512. public void NavigateBackDefaultsRouteTest()
  1513. {
  1514. StateController.Navigate("d3");
  1515. StateController.Navigate("t0");
  1516. StateController.Navigate("t0");
  1517. StateController.NavigateBack(1);
  1518. Assert.AreEqual("Hello", StateContext.Data["string"]);
  1519. Assert.AreEqual(true, StateContext.Data["_bool"]);
  1520. Assert.AreEqual(0, StateContext.Data["_int"]);
  1521. Assert.AreEqual((short)1, StateContext.Data["short"]);
  1522. Assert.AreEqual(2L, StateContext.Data["long"]);
  1523. Assert.AreEqual(3F, StateContext.Data["float"]);
  1524. }
  1525. [TestMethod]
  1526. public void NavigateBackDataAndDefaultsTest()
  1527. {
  1528. StateController.Navigate("d0");
  1529. StateController.Navigate("t0");
  1530. NavigationData data = new NavigationData(){
  1531. { "s" , 1 }, { "t" , "2"}
  1532. };
  1533. StateController.Navigate("t0", data);
  1534. StateController.Navigate("t0");
  1535. StateController.Navigate("t0");
  1536. StateController.NavigateBack(2);
  1537. Assert.AreEqual(string.Empty, StateContext.Data["emptyString"]);
  1538. Assert.AreEqual(4D, StateContext.Data["double"]);
  1539. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1540. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateContext.Data["DateTime"]);
  1541. Assert.AreEqual((byte)6, StateContext.Data["byte"]);
  1542. Assert.AreEqual('7', StateContext.Data["char"]);
  1543. Assert.AreEqual(1, StateContext.Data["s"]);
  1544. Assert.AreEqual("2", StateContext.Data["t"]);
  1545. }
  1546. [TestMethod]
  1547. public void NavigateBackDataAndDefaultsRouteTest()
  1548. {
  1549. StateController.Navigate("d3");
  1550. StateController.Navigate("t0");
  1551. NavigationData data = new NavigationData(){
  1552. { "s" , 1 }, { "t" , "2"}
  1553. };
  1554. StateController.Navigate("t0", data);
  1555. StateController.Navigate("t0");
  1556. StateController.Navigate("t0");
  1557. StateController.NavigateBack(2);
  1558. Assert.AreEqual(string.Empty, StateContext.Data["emptyString"]);
  1559. Assert.AreEqual(4D, StateContext.Data["double"]);
  1560. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1561. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateContext.Data["DateTime"]);
  1562. Assert.AreEqual((byte)6, StateContext.Data["byte"]);
  1563. Assert.AreEqual('7', StateContext.Data["char"]);
  1564. Assert.AreEqual(1, StateContext.Data["s"]);
  1565. Assert.AreEqual("2", StateContext.Data["t"]);
  1566. }
  1567. [TestMethod]
  1568. public void NavigateBackOverrideDefaultsTest()
  1569. {
  1570. StateController.Navigate("d0");
  1571. StateController.Navigate("t0");
  1572. NavigationData data = new NavigationData(){
  1573. { "emptyString", "World" }, { "double" , 1D }, { "decimal" , 5m}
  1574. };
  1575. StateController.Navigate("t0", data);
  1576. StateController.Navigate("t0");
  1577. StateController.NavigateBack(1);
  1578. Assert.AreEqual("World", StateContext.Data["emptyString"]);
  1579. Assert.AreEqual(1D, StateContext.Data["double"]);
  1580. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1581. }
  1582. [TestMethod]
  1583. public void NavigateBackOverrideDefaultsRouteTest()
  1584. {
  1585. StateController.Navigate("d3");
  1586. StateController.Navigate("t0");
  1587. NavigationData data = new NavigationData(){
  1588. { "emptyString", "World" }, { "double" , 1D }, { "decimal" , 5m}
  1589. };
  1590. StateController.Navigate("t0", data);
  1591. StateController.Navigate("t0");
  1592. StateController.NavigateBack(1);
  1593. Assert.AreEqual("World", StateContext.Data["emptyString"]);
  1594. Assert.AreEqual(1D, StateContext.Data["double"]);
  1595. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1596. }
  1597. [TestMethod]
  1598. public void CrumbDefaultsTest()
  1599. {
  1600. StateController.Navigate("d0");
  1601. StateController.Navigate("t0");
  1602. StateController.Navigate("t0");
  1603. StateController.Navigate("t0");
  1604. Assert.IsNull(StateController.Crumbs[0].Data["string"]);
  1605. Assert.IsNull(StateController.Crumbs[0].Data["long"]);
  1606. Assert.AreEqual("Hello", StateController.Crumbs[1].Data["string"]);
  1607. Assert.AreEqual(true, StateController.Crumbs[1].Data["_bool"]);
  1608. Assert.AreEqual(0, StateController.Crumbs[1]["_int"]);
  1609. Assert.AreEqual((short)1, StateController.Crumbs[1].Data["short"]);
  1610. Assert.AreEqual(2L, StateController.Crumbs[1].Data["long"]);
  1611. Assert.AreEqual(3F, StateController.Crumbs[1].Data["float"]);
  1612. Assert.AreEqual("", StateController.Crumbs[2]["emptyString"]);
  1613. Assert.AreEqual(4D, StateController.Crumbs[2].Data["double"]);
  1614. Assert.AreEqual(5m, StateController.Crumbs[2].Data["decimal"]);
  1615. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateController.Crumbs[2]["DateTime"]);
  1616. Assert.AreEqual((byte)6, StateController.Crumbs[2].Data["byte"]);
  1617. Assert.AreEqual('7', StateController.Crumbs[2].Data["char"]);
  1618. }
  1619. [TestMethod]
  1620. public void CrumbDefaultsRouteTest()
  1621. {
  1622. StateController.Navigate("d3");
  1623. StateController.Navigate("t0");
  1624. StateController.Navigate("t0");
  1625. StateController.Navigate("t0");
  1626. Assert.IsNull(StateController.Crumbs[0].Data["string"]);
  1627. Assert.IsNull(StateController.Crumbs[0].Data["long"]);
  1628. Assert.AreEqual("Hello", StateController.Crumbs[1].Data["string"]);
  1629. Assert.AreEqual(true, StateController.Crumbs[1].Data["_bool"]);
  1630. Assert.AreEqual(0, StateController.Crumbs[1]["_int"]);
  1631. Assert.AreEqual((short)1, StateController.Crumbs[1].Data["short"]);
  1632. Assert.AreEqual(2L, StateController.Crumbs[1].Data["long"]);
  1633. Assert.AreEqual(3F, StateController.Crumbs[1].Data["float"]);
  1634. Assert.AreEqual("", StateController.Crumbs[2]["emptyString"]);
  1635. Assert.AreEqual(4D, StateController.Crumbs[2].Data["double"]);
  1636. Assert.AreEqual(5m, StateController.Crumbs[2].Data["decimal"]);
  1637. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateController.Crumbs[2]["DateTime"]);
  1638. Assert.AreEqual((byte)6, StateController.Crumbs[2].Data["byte"]);
  1639. Assert.AreEqual('7', StateController.Crumbs[2].Data["char"]);
  1640. }
  1641. [TestMethod]
  1642. public void CrumbDataAndDefaultsTest()
  1643. {
  1644. StateController.Navigate("d0");
  1645. NavigationData data = new NavigationData(){
  1646. { "s" , 1 }, { "t" , "2"}
  1647. };
  1648. StateController.Navigate("t0", data);
  1649. StateController.Navigate("t0");
  1650. Assert.IsNull(StateController.Crumbs[0].Data["string"]);
  1651. Assert.IsNull(StateController.Crumbs[0]["s"]);
  1652. Assert.AreEqual("Hello", StateController.Crumbs[1].Data["string"]);
  1653. Assert.AreEqual(true, StateController.Crumbs[1].Data["_bool"]);
  1654. Assert.AreEqual(0, StateController.Crumbs[1]["_int"]);
  1655. Assert.AreEqual((short)1, StateController.Crumbs[1].Data["short"]);
  1656. Assert.AreEqual(2L, StateController.Crumbs[1].Data["long"]);
  1657. Assert.AreEqual(3F, StateController.Crumbs[1].Data["float"]);
  1658. Assert.AreEqual(1, StateController.Crumbs[1]["s"]);
  1659. Assert.AreEqual("2", StateController.Crumbs[1].Data["t"]);
  1660. }
  1661. [TestMethod]
  1662. public void CrumbDataAndDefaultsRouteTest()
  1663. {
  1664. StateController.Navigate("d3");
  1665. NavigationData data = new NavigationData(){
  1666. { "s" , 1 }, { "t" , "2"}
  1667. };
  1668. StateController.Navigate("t0", data);
  1669. StateController.Navigate("t0");
  1670. Assert.IsNull(StateController.Crumbs[0].Data["string"]);
  1671. Assert.IsNull(StateController.Crumbs[0]["s"]);
  1672. Assert.AreEqual("Hello", StateController.Crumbs[1].Data["string"]);
  1673. Assert.AreEqual(true, StateController.Crumbs[1].Data["_bool"]);
  1674. Assert.AreEqual(0, StateController.Crumbs[1]["_int"]);
  1675. Assert.AreEqual((short)1, StateController.Crumbs[1].Data["short"]);
  1676. Assert.AreEqual(2L, StateController.Crumbs[1].Data["long"]);
  1677. Assert.AreEqual(3F, StateController.Crumbs[1].Data["float"]);
  1678. Assert.AreEqual(1, StateController.Crumbs[1]["s"]);
  1679. Assert.AreEqual("2", StateController.Crumbs[1].Data["t"]);
  1680. }
  1681. [TestMethod]
  1682. public void NavigateOverrideCrumbDefaultsTest()
  1683. {
  1684. StateController.Navigate("d0");
  1685. NavigationData data = new NavigationData();
  1686. data["string"] = "World";
  1687. data["_int"] = 0;
  1688. StateController.Navigate("t0", data);
  1689. StateController.Navigate("t0");
  1690. Assert.AreEqual("World", StateController.Crumbs[1].Data["string"]);
  1691. Assert.AreEqual(true, StateController.Crumbs[1].Data["_bool"]);
  1692. Assert.AreEqual(0, StateController.Crumbs[1]["_int"]);
  1693. Assert.AreEqual((short)1, StateController.Crumbs[1].Data["short"]);
  1694. Assert.AreEqual(2L, StateController.Crumbs[1].Data["long"]);
  1695. Assert.AreEqual(3F, StateController.Crumbs[1].Data["float"]);
  1696. }
  1697. [TestMethod]
  1698. public void NavigateOverrideCrumbDefaultsRouteTest()
  1699. {
  1700. StateController.Navigate("d3");
  1701. NavigationData data = new NavigationData();
  1702. data["string"] = "World";
  1703. data["_int"] = 0;
  1704. StateController.Navigate("t0", data);
  1705. StateController.Navigate("t0");
  1706. Assert.AreEqual("World", StateController.Crumbs[1].Data["string"]);
  1707. Assert.AreEqual(true, StateController.Crumbs[1].Data["_bool"]);
  1708. Assert.AreEqual(0, StateController.Crumbs[1]["_int"]);
  1709. Assert.AreEqual((short)1, StateController.Crumbs[1].Data["short"]);
  1710. Assert.AreEqual(2L, StateController.Crumbs[1].Data["long"]);
  1711. Assert.AreEqual(3F, StateController.Crumbs[1].Data["float"]);
  1712. }
  1713. [TestMethod]
  1714. public void OverrideCrumbDefaultsTest()
  1715. {
  1716. StateController.Navigate("d0");
  1717. NavigationData data = new NavigationData();
  1718. StateController.Navigate("t0", data);
  1719. StateController.Navigate("t0");
  1720. Crumb crumb = StateController.Crumbs[1];
  1721. crumb.Data["string"] = "Hello";
  1722. crumb.Data["_int"] = 1;
  1723. Assert.AreEqual("Hello", crumb.Data["string"]);
  1724. Assert.AreEqual(1, crumb["_int"]);
  1725. Assert.AreEqual((short)1, crumb.Data["short"]);
  1726. }
  1727. [TestMethod]
  1728. public void OverrideCrumbDefaultsRouteTest()
  1729. {
  1730. StateController.Navigate("d3");
  1731. NavigationData data = new NavigationData();
  1732. StateController.Navigate("t0", data);
  1733. StateController.Navigate("t0");
  1734. Crumb crumb = StateController.Crumbs[1];
  1735. crumb.Data["string"] = "Hello";
  1736. crumb.Data["_int"] = 1;
  1737. Assert.AreEqual("Hello", crumb.Data["string"]);
  1738. Assert.AreEqual(1, crumb["_int"]);
  1739. Assert.AreEqual((short)1, crumb.Data["short"]);
  1740. }
  1741. [TestMethod]
  1742. public void ClearCrumbDataAndDefaultsTest()
  1743. {
  1744. StateController.Navigate("d0");
  1745. NavigationData data = new NavigationData(){
  1746. { "s" , 1 }, { "t" , "2"}
  1747. };
  1748. StateController.Navigate("t0", data);
  1749. StateController.Navigate("t0");
  1750. Crumb crumb = StateController.Crumbs[1];
  1751. crumb.Data.Clear();
  1752. Assert.AreEqual("Hello", crumb.Data["string"]);
  1753. Assert.AreEqual(true, crumb.Data["_bool"]);
  1754. Assert.AreEqual(0, crumb["_int"]);
  1755. Assert.AreEqual((short)1, crumb.Data["short"]);
  1756. Assert.AreEqual(2L, crumb.Data["long"]);
  1757. Assert.AreEqual(3F, crumb.Data["float"]);
  1758. Assert.IsNull(crumb["s"]);
  1759. Assert.IsNull(crumb.Data["t"]);
  1760. }
  1761. [TestMethod]
  1762. public void ClearCrumbDataAndDefaultsRouteTest()
  1763. {
  1764. StateController.Navigate("d3");
  1765. NavigationData data = new NavigationData(){
  1766. { "s" , 1 }, { "t" , "2"}
  1767. };
  1768. StateController.Navigate("t0", data);
  1769. StateController.Navigate("t0");
  1770. Crumb crumb = StateController.Crumbs[1];
  1771. crumb.Data.Clear();
  1772. Assert.AreEqual("Hello", crumb.Data["string"]);
  1773. Assert.AreEqual(true, crumb.Data["_bool"]);
  1774. Assert.AreEqual(0, crumb["_int"]);
  1775. Assert.AreEqual((short)1, crumb.Data["short"]);
  1776. Assert.AreEqual(2L, crumb.Data["long"]);
  1777. Assert.AreEqual(3F, crumb.Data["float"]);
  1778. Assert.IsNull(crumb["s"]);
  1779. Assert.IsNull(crumb.Data["t"]);
  1780. }
  1781. [TestMethod]
  1782. public void NavigateBackDefaultsCustomTrailTest()
  1783. {
  1784. StateController.Navigate("d0");
  1785. StateController.Navigate("t0");
  1786. StateController.Navigate("t0");
  1787. StateController.Navigate("d6");
  1788. StateController.Navigate("t0");
  1789. StateController.NavigateBack(3);
  1790. Assert.AreEqual("Hello", StateContext.Data["string"]);
  1791. Assert.AreEqual(true, StateContext.Data["_bool"]);
  1792. Assert.AreEqual(0, StateContext.Data["_int"]);
  1793. Assert.AreEqual((short)1, StateContext.Data["short"]);
  1794. Assert.AreEqual(2L, StateContext.Data["long"]);
  1795. Assert.AreEqual(3F, StateContext.Data["float"]);
  1796. }
  1797. [TestMethod]
  1798. public void NavigateBackDefaultsCustomTrailRouteTest()
  1799. {
  1800. StateController.Navigate("d3");
  1801. StateController.Navigate("t0");
  1802. StateController.Navigate("t0");
  1803. StateController.Navigate("d6");
  1804. StateController.Navigate("t0");
  1805. StateController.NavigateBack(3);
  1806. Assert.AreEqual("Hello", StateContext.Data["string"]);
  1807. Assert.AreEqual(true, StateContext.Data["_bool"]);
  1808. Assert.AreEqual(0, StateContext.Data["_int"]);
  1809. Assert.AreEqual((short)1, StateContext.Data["short"]);
  1810. Assert.AreEqual(2L, StateContext.Data["long"]);
  1811. Assert.AreEqual(3F, StateContext.Data["float"]);
  1812. }
  1813. [TestMethod]
  1814. public void NavigateBackDataAndDefaultsCustomTrailTest()
  1815. {
  1816. StateController.Navigate("d0");
  1817. StateController.Navigate("t0");
  1818. NavigationData data = new NavigationData(){
  1819. { "s" , 1 }, { "t" , "2"}
  1820. };
  1821. StateController.Navigate("t0", data);
  1822. StateController.Navigate("t0");
  1823. StateController.Navigate("t0");
  1824. StateController.Navigate("d6");
  1825. StateController.Refresh();
  1826. StateController.NavigateBack(3);
  1827. Assert.AreEqual(string.Empty, StateContext.Data["emptyString"]);
  1828. Assert.AreEqual(4D, StateContext.Data["double"]);
  1829. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1830. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateContext.Data["DateTime"]);
  1831. Assert.AreEqual((byte)6, StateContext.Data["byte"]);
  1832. Assert.AreEqual('7', StateContext.Data["char"]);
  1833. Assert.AreEqual(1, StateContext.Data["s"]);
  1834. Assert.AreEqual("2", StateContext.Data["t"]);
  1835. }
  1836. [TestMethod]
  1837. public void NavigateBackDataAndDefaultsCustomTrailRouteTest()
  1838. {
  1839. StateController.Navigate("d3");
  1840. StateController.Navigate("t0");
  1841. NavigationData data = new NavigationData(){
  1842. { "s" , 1 }, { "t" , "2"}
  1843. };
  1844. StateController.Navigate("t0", data);
  1845. StateController.Navigate("t0");
  1846. StateController.Navigate("t0");
  1847. StateController.Navigate("d6");
  1848. StateController.Refresh();
  1849. StateController.NavigateBack(3);
  1850. Assert.AreEqual(string.Empty, StateContext.Data["emptyString"]);
  1851. Assert.AreEqual(4D, StateContext.Data["double"]);
  1852. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1853. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateContext.Data["DateTime"]);
  1854. Assert.AreEqual((byte)6, StateContext.Data["byte"]);
  1855. Assert.AreEqual('7', StateContext.Data["char"]);
  1856. Assert.AreEqual(1, StateContext.Data["s"]);
  1857. Assert.AreEqual("2", StateContext.Data["t"]);
  1858. }
  1859. [TestMethod]
  1860. public void NavigateBackOverrideDefaultsCustomTrailTest()
  1861. {
  1862. StateController.Navigate("d0");
  1863. StateController.Navigate("t0");
  1864. NavigationData data = new NavigationData(){
  1865. { "emptyString", "World" }, { "double" , 1D }, { "decimal" , 5m}
  1866. };
  1867. StateController.Navigate("t0", data);
  1868. StateController.Navigate("t0");
  1869. StateController.Navigate("d6");
  1870. StateController.Navigate("t0");
  1871. StateController.NavigateBack(1);
  1872. StateController.NavigateBack(1);
  1873. StateController.NavigateBack(1);
  1874. Assert.AreEqual("World", StateContext.Data["emptyString"]);
  1875. Assert.AreEqual(1D, StateContext.Data["double"]);
  1876. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1877. }
  1878. [TestMethod]
  1879. public void NavigateBackOverrideDefaultsCustomTrailRouteTest()
  1880. {
  1881. StateController.Navigate("d3");
  1882. StateController.Navigate("t0");
  1883. NavigationData data = new NavigationData(){
  1884. { "emptyString", "World" }, { "double" , 1D }, { "decimal" , 5m}
  1885. };
  1886. StateController.Navigate("t0", data);
  1887. StateController.Navigate("t0");
  1888. StateController.Navigate("d6");
  1889. StateController.Navigate("t0");
  1890. StateController.NavigateBack(1);
  1891. StateController.NavigateBack(1);
  1892. StateController.NavigateBack(1);
  1893. Assert.AreEqual("World", StateContext.Data["emptyString"]);
  1894. Assert.AreEqual(1D, StateContext.Data["double"]);
  1895. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  1896. }
  1897. [TestMethod]
  1898. public void CrumbDefaultsCustomTrailTest()
  1899. {
  1900. StateController.Navigate("d0");
  1901. StateController.Navigate("t0");
  1902. StateController.Navigate("t0");
  1903. StateController.Navigate("t0");
  1904. StateController.Navigate("d6");
  1905. StateController.Navigate("t0");
  1906. Assert.IsNull(StateController.Crumbs[0].Data["string"]);
  1907. Assert.IsNull(StateController.Crumbs[0].Data["long"]);
  1908. Assert.AreEqual("Hello", StateController.Crumbs[1].Data["string"]);
  1909. Assert.AreEqual(true, StateController.Crumbs[1].Data["_bool"]);
  1910. Assert.AreEqual(0, StateController.Crumbs[1]["_int"]);
  1911. Assert.AreEqual((short)1, StateController.Crumbs[1].Data["short"]);
  1912. Assert.AreEqual(2L, StateController.Crumbs[1].Data["long"]);
  1913. Assert.AreEqual(3F, StateController.Crumbs[1].Data["float"]);
  1914. Assert.AreEqual("", StateController.Crumbs[2]["emptyString"]);
  1915. Assert.AreEqual(4D, StateController.Crumbs[2].Data["double"]);
  1916. Assert.AreEqual(5m, StateController.Crumbs[2].Data["decimal"]);
  1917. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateController.Crumbs[2]["DateTime"]);
  1918. Assert.AreEqual((byte)6, StateController.Crumbs[2].Data["byte"]);
  1919. Assert.AreEqual('7', StateController.Crumbs[2].Data["char"]);
  1920. }
  1921. [TestMethod]
  1922. public void CrumbDefaultsCustomTrailRouteTest()
  1923. {
  1924. StateController.Navigate("d3");
  1925. StateController.Navigate("t0");
  1926. StateController.Navigate("t0");
  1927. StateController.Navigate("t0");
  1928. StateController.Navigate("d6");
  1929. StateController.Navigate("t0");
  1930. Assert.IsNull(StateController.Crumbs[0].Data["string"]);
  1931. Assert.IsNull(StateController.Crumbs[0].Data["long"]);
  1932. Assert.AreEqual("Hello", StateController.Crumbs[1].Data["string"]);
  1933. Assert.AreEqual(true, StateController.Crumbs[1].Data["_bool"]);
  1934. Assert.AreEqual(0, StateController.Crumbs[1]["_int"]);
  1935. Assert.AreEqual((short)1, StateController.Crumbs[1].Data["short"]);
  1936. Assert.AreEqual(2L, StateController.Crumbs[1].Data["long"]);
  1937. Assert.AreEqual(3F, StateController.Crumbs[1].Data["float"]);
  1938. Assert.AreEqual("", StateController.Crumbs[2]["emptyString"]);
  1939. Assert.AreEqual(4D, StateController.Crumbs[2].Data["double"]);
  1940. Assert.AreEqual(5m, StateController.Crumbs[2].Data["decimal"]);
  1941. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateController.Crumbs[2]["DateTime"]);
  1942. Assert.AreEqual((byte)6, StateController.Crumbs[2].Data["byte"]);
  1943. Assert.AreEqual('7', StateController.Crumbs[2].Data["char"]);
  1944. }
  1945. [TestMethod]
  1946. public void NavigateDataNavigateBackCustomTrailTest()
  1947. {
  1948. StateController.Navigate("d0");
  1949. NavigationData data = new NavigationData();
  1950. data["s"] = "Hello";
  1951. data["t"] = string.Empty;
  1952. StateController.Navigate("d6", data);
  1953. StateController.Navigate("t0");
  1954. Assert.AreEqual("Hello", StateController.Crumbs[1].Data["s"]);
  1955. Assert.IsNull(StateController.Crumbs[1].Data["t"]);
  1956. StateController.NavigateBack(1);
  1957. Assert.AreEqual("Hello", StateContext.Data["s"]);
  1958. Assert.IsNull(StateContext.Data["t"]);
  1959. }
  1960. [TestMethod]
  1961. public void NavigateDataNavigateBackCustomTrailRouteTest()
  1962. {
  1963. StateController.Navigate("d3");
  1964. NavigationData data = new NavigationData();
  1965. data["s"] = "Hello";
  1966. data["t"] = string.Empty;
  1967. StateController.Navigate("d6", data);
  1968. StateController.Navigate("t0");
  1969. Assert.AreEqual("Hello", StateController.Crumbs[1].Data["s"]);
  1970. Assert.IsNull(StateController.Crumbs[1].Data["t"]);
  1971. StateController.NavigateBack(1);
  1972. Assert.AreEqual("Hello", StateContext.Data["s"]);
  1973. Assert.IsNull(StateContext.Data["t"]);
  1974. }
  1975. [TestMethod]
  1976. public void CrumbDataAndDefaultsCustomTrailTest()
  1977. {
  1978. StateController.Navigate("d0");
  1979. NavigationData data = new NavigationData(){
  1980. { "s" , 1 }, { "t" , "2"}
  1981. };
  1982. StateController.Navigate("t0", data);
  1983. StateController.Navigate("t0");
  1984. StateController.Navigate("d6");
  1985. Assert.IsNull(StateController.Crumbs[0].Data["string"]);
  1986. Assert.IsNull(StateController.Crumbs[0]["s"]);
  1987. Assert.AreEqual("Hello", StateController.Crumbs[1].Data["string"]);
  1988. Assert.AreEqual(true, StateController.Crumbs[1].Data["_bool"]);
  1989. Assert.AreEqual(0, StateController.Crumbs[1]["_int"]);
  1990. Assert.AreEqual((short)1, StateController.Crumbs[1].Data["short"]);
  1991. Assert.AreEqual(2L, StateController.Crumbs[1].Data["long"]);
  1992. Assert.AreEqual(3F, StateController.Crumbs[1].Data["float"]);
  1993. Assert.AreEqual(1, StateController.Crumbs[1]["s"]);
  1994. Assert.AreEqual("2", StateController.Crumbs[1].Data["t"]);
  1995. }
  1996. [TestMethod]
  1997. public void CrumbDataAndDefaultsCustomTrailRouteTest()
  1998. {
  1999. StateController.Navigate("d3");
  2000. NavigationData data = new NavigationData(){
  2001. { "s" , 1 }, { "t" , "2"}
  2002. };
  2003. StateController.Navigate("t0", data);
  2004. StateController.Navigate("t0");
  2005. StateController.Navigate("d6");
  2006. Assert.IsNull(StateController.Crumbs[0].Data["string"]);
  2007. Assert.IsNull(StateController.Crumbs[0]["s"]);
  2008. Assert.AreEqual("Hello", StateController.Crumbs[1].Data["string"]);
  2009. Assert.AreEqual(true, StateController.Crumbs[1].Data["_bool"]);
  2010. Assert.AreEqual(0, StateController.Crumbs[1]["_int"]);
  2011. Assert.AreEqual((short)1, StateController.Crumbs[1].Data["short"]);
  2012. Assert.AreEqual(2L, StateController.Crumbs[1].Data["long"]);
  2013. Assert.AreEqual(3F, StateController.Crumbs[1].Data["float"]);
  2014. Assert.AreEqual(1, StateController.Crumbs[1]["s"]);
  2015. Assert.AreEqual("2", StateController.Crumbs[1].Data["t"]);
  2016. }
  2017. [TestMethod]
  2018. public void NavigateOverrideCrumbDefaultsCustomTrailTest()
  2019. {
  2020. StateController.Navigate("d0");
  2021. NavigationData data = new NavigationData();
  2022. data["string"] = "World";
  2023. data["_int"] = 0;
  2024. StateController.Navigate("t0", data);
  2025. StateController.Navigate("t0");
  2026. StateController.Navigate("d6");
  2027. StateController.Navigate("t0");
  2028. Assert.AreEqual("World", StateController.Crumbs[1].Data["string"]);
  2029. Assert.AreEqual(true, StateController.Crumbs[1].Data["_bool"]);
  2030. Assert.AreEqual(0, StateController.Crumbs[1]["_int"]);
  2031. Assert.AreEqual((short)1, StateController.Crumbs[1].Data["short"]);
  2032. Assert.AreEqual(2L, StateController.Crumbs[1].Data["long"]);
  2033. Assert.AreEqual(3F, StateController.Crumbs[1].Data["float"]);
  2034. }
  2035. [TestMethod]
  2036. public void NavigateOverrideCrumbDefaultsCustomTrailRouteTest()
  2037. {
  2038. StateController.Navigate("d3");
  2039. NavigationData data = new NavigationData();
  2040. data["string"] = "World";
  2041. data["_int"] = 0;
  2042. StateController.Navigate("t0", data);
  2043. StateController.Navigate("t0");
  2044. StateController.Navigate("d6");
  2045. StateController.Navigate("t0");
  2046. Assert.AreEqual("World", StateController.Crumbs[1].Data["string"]);
  2047. Assert.AreEqual(true, StateController.Crumbs[1].Data["_bool"]);
  2048. Assert.AreEqual(0, StateController.Crumbs[1]["_int"]);
  2049. Assert.AreEqual((short)1, StateController.Crumbs[1].Data["short"]);
  2050. Assert.AreEqual(2L, StateController.Crumbs[1].Data["long"]);
  2051. Assert.AreEqual(3F, StateController.Crumbs[1].Data["float"]);
  2052. }
  2053. [TestMethod]
  2054. public void OverrideCrumbDefaultsCustomTrailTest()
  2055. {
  2056. StateController.Navigate("d0");
  2057. NavigationData data = new NavigationData();
  2058. StateController.Navigate("t0", data);
  2059. StateController.Navigate("t0");
  2060. StateController.Navigate("d6");
  2061. StateController.NavigateBack(1);
  2062. Crumb crumb = StateController.Crumbs[1];
  2063. crumb.Data["string"] = "Hello";
  2064. crumb.Data["_int"] = 1;
  2065. Assert.AreEqual("Hello", crumb.Data["string"]);
  2066. Assert.AreEqual(1, crumb["_int"]);
  2067. Assert.AreEqual((short)1, crumb.Data["short"]);
  2068. }
  2069. [TestMethod]
  2070. public void OverrideCrumbDefaultsCustomTrailRouteTest()
  2071. {
  2072. StateController.Navigate("d3");
  2073. NavigationData data = new NavigationData();
  2074. StateController.Navigate("t0", data);
  2075. StateController.Navigate("t0");
  2076. StateController.Navigate("d6");
  2077. StateController.NavigateBack(1);
  2078. Crumb crumb = StateController.Crumbs[1];
  2079. crumb.Data["string"] = "Hello";
  2080. crumb.Data["_int"] = 1;
  2081. Assert.AreEqual("Hello", crumb.Data["string"]);
  2082. Assert.AreEqual(1, crumb["_int"]);
  2083. Assert.AreEqual((short)1, crumb.Data["short"]);
  2084. }
  2085. [TestMethod]
  2086. public void ClearCrumbDataAndDefaultsCustomTrailTest()
  2087. {
  2088. StateController.Navigate("d0");
  2089. NavigationData data = new NavigationData(){
  2090. { "s" , 1 }, { "t" , "2"}
  2091. };
  2092. StateController.Navigate("t0", data);
  2093. StateController.Navigate("t0");
  2094. StateController.Navigate("d6");
  2095. StateController.Refresh();
  2096. Crumb crumb = StateController.Crumbs[1];
  2097. crumb.Data.Clear();
  2098. Assert.AreEqual("Hello", crumb.Data["string"]);
  2099. Assert.AreEqual(true, crumb.Data["_bool"]);
  2100. Assert.AreEqual(0, crumb["_int"]);
  2101. Assert.AreEqual((short)1, crumb.Data["short"]);
  2102. Assert.AreEqual(2L, crumb.Data["long"]);
  2103. Assert.AreEqual(3F, crumb.Data["float"]);
  2104. Assert.IsNull(crumb["s"]);
  2105. Assert.IsNull(crumb.Data["t"]);
  2106. }
  2107. [TestMethod]
  2108. public void ClearCrumbDataAndDefaultsCustomTrailRouteTest()
  2109. {
  2110. StateController.Navigate("d3");
  2111. NavigationData data = new NavigationData(){
  2112. { "s" , 1 }, { "t" , "2"}
  2113. };
  2114. StateController.Navigate("t0", data);
  2115. StateController.Navigate("t0");
  2116. StateController.Navigate("d6");
  2117. StateController.Refresh();
  2118. Crumb crumb = StateController.Crumbs[1];
  2119. crumb.Data.Clear();
  2120. Assert.AreEqual("Hello", crumb.Data["string"]);
  2121. Assert.AreEqual(true, crumb.Data["_bool"]);
  2122. Assert.AreEqual(0, crumb["_int"]);
  2123. Assert.AreEqual((short)1, crumb.Data["short"]);
  2124. Assert.AreEqual(2L, crumb.Data["long"]);
  2125. Assert.AreEqual(3F, crumb.Data["float"]);
  2126. Assert.IsNull(crumb["s"]);
  2127. Assert.IsNull(crumb.Data["t"]);
  2128. }
  2129. [TestMethod]
  2130. public void DefaultsViewStateTest()
  2131. {
  2132. StateController.Navigate("d0");
  2133. StateController.Navigate("t0");
  2134. NavigationData data = new NavigationData();
  2135. ((IStateManager)data).LoadViewState(((IStateManager)StateContext.Data).SaveViewState());
  2136. Assert.IsNull(data["string"]);
  2137. Assert.IsNull(data["_bool"]);
  2138. Assert.IsNull(data["_int"]);
  2139. Assert.IsNull(data["short"]);
  2140. Assert.IsNull(data["long"]);
  2141. Assert.IsNull(data["float"]);
  2142. }
  2143. [TestMethod]
  2144. public void NavigateOverrideDefaultsViewStateTest()
  2145. {
  2146. StateController.Navigate("d3");
  2147. StateController.Navigate("t0");
  2148. NavigationData data = new NavigationData();
  2149. data["DateTime"] = new DateTime(1990, 3, 1, 12, 35, 47);
  2150. data.Add("double", "");
  2151. data.Add("byte", '2');
  2152. data.Add("char", (byte)0);
  2153. StateController.Navigate("t0", data);
  2154. data = new NavigationData();
  2155. ((IStateManager)data).LoadViewState(((IStateManager)StateContext.Data).SaveViewState());
  2156. Assert.IsNull(data["decimal"]);
  2157. Assert.IsNull(data["double"]);
  2158. Assert.IsNull(data["DateTime"]);
  2159. Assert.IsNull(data["emptyString"]);
  2160. Assert.AreEqual('2', data["byte"]);
  2161. Assert.AreEqual((byte)0, data["char"]);
  2162. }
  2163. [TestMethod]
  2164. public void OverrideDefaultsViewStateTest()
  2165. {
  2166. StateController.Navigate("d0");
  2167. StateController.Navigate("t0");
  2168. StateController.Navigate("t0");
  2169. StateContext.Data["emptyString"] = 1;
  2170. StateContext.Data["double"] = "World";
  2171. StateContext.Data["DateTime"] = 5D;
  2172. StateContext.Data["char"] = '7';
  2173. NavigationData data = new NavigationData();
  2174. ((IStateManager)data).LoadViewState(((IStateManager)StateContext.Data).SaveViewState());
  2175. Assert.IsNull(data["decimal"]);
  2176. Assert.IsNull(data["byte"]);
  2177. Assert.IsNull(data["char"]);
  2178. Assert.AreEqual(1, data["emptyString"]);
  2179. Assert.AreEqual("World", data["double"]);
  2180. Assert.AreEqual(5D, data["DateTime"]);
  2181. }
  2182. [TestMethod]
  2183. public void LoadViewStateTest()
  2184. {
  2185. StateController.Navigate("d3");
  2186. StateController.Navigate("t0");
  2187. StateController.Navigate("t0");
  2188. StateContext.Data["emptyString"] = null;
  2189. StateContext.Data["double"] = "World";
  2190. StateContext.Data["DateTime"] = 5D;
  2191. StateContext.Data["char"] = null;
  2192. StateContext.Data["t"] = "1";
  2193. object viewState = ((IStateManager)StateContext.Data).SaveViewState();
  2194. StateContext.Data.Clear();
  2195. ((IStateManager)StateContext.Data).LoadViewState(viewState);
  2196. Assert.AreEqual(string.Empty, StateContext.Data["emptyString"]);
  2197. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  2198. Assert.AreEqual((byte)6, StateContext.Data["byte"]);
  2199. Assert.AreEqual('7', StateContext.Data["char"]);
  2200. Assert.AreEqual("World", StateContext.Data["double"]);
  2201. Assert.AreEqual(5D, StateContext.Data["DateTime"]);
  2202. Assert.AreEqual("1", StateContext.Data["t"]);
  2203. }
  2204. [TestMethod]
  2205. public void NavigateLinkDefaultsTest()
  2206. {
  2207. StateController.Navigate("d0");
  2208. NavigationData data = new NavigationData();
  2209. data["_bool"] = null;
  2210. data["string"] = "Hello";
  2211. data["_int"] = 1D;
  2212. data["short"] = string.Empty;
  2213. data["float"] = "World";
  2214. string link = StateController.GetNavigationLink("t0", data);
  2215. Assert.AreEqual(-1, link.IndexOf("string"));
  2216. Assert.AreEqual(-1, link.IndexOf("_bool"));
  2217. Assert.AreEqual(-1, link.IndexOf("short"));
  2218. Assert.AreEqual(-1, link.IndexOf("long"));
  2219. Assert.AreNotEqual(-1, link.IndexOf("float"));
  2220. Assert.AreNotEqual(-1, link.IndexOf("_int"));
  2221. }
  2222. [TestMethod]
  2223. public void NavigateLinkDefaultsRouteTest()
  2224. {
  2225. StateController.Navigate("d3");
  2226. NavigationData data = new NavigationData();
  2227. data["_bool"] = null;
  2228. data["string"] = "Hello";
  2229. data["_int"] = 1D;
  2230. data["short"] = string.Empty;
  2231. data["float"] = "World";
  2232. string link = StateController.GetNavigationLink("t0", data);
  2233. Assert.AreEqual(-1, link.IndexOf("string"));
  2234. Assert.AreEqual(-1, link.IndexOf("_bool"));
  2235. Assert.AreEqual(-1, link.IndexOf("short"));
  2236. Assert.AreEqual(-1, link.IndexOf("long"));
  2237. Assert.AreNotEqual(-1, link.IndexOf("float"));
  2238. Assert.AreNotEqual(-1, link.IndexOf("_int"));
  2239. }
  2240. [TestMethod]
  2241. public void NavigateLinkContextDefaultsTest()
  2242. {
  2243. StateController.Navigate("d0");
  2244. StateController.Navigate("t0");
  2245. StateController.Navigate("t0");
  2246. StateContext.Data["emptyString"] = 1;
  2247. StateContext.Data["double"] = 4D;
  2248. StateContext.Data["DateTime"] = 1D;
  2249. StateContext.Data["byte"] = string.Empty;
  2250. StateContext.Data["char"] = null;
  2251. string link = StateController.GetNavigationLink("t0");
  2252. Assert.AreEqual(-1, link.IndexOf("double"));
  2253. Assert.AreEqual(-1, link.IndexOf("decimal"));
  2254. Assert.AreEqual(-1, link.IndexOf("byte"));
  2255. Assert.AreEqual(-1, link.IndexOf("char"));
  2256. Assert.AreNotEqual(-1, link.IndexOf("emptyString"));
  2257. Assert.AreNotEqual(-1, link.IndexOf("DateTime"));
  2258. }
  2259. [TestMethod]
  2260. public void NavigateLinkContextDefaultsRouteTest()
  2261. {
  2262. StateController.Navigate("d3");
  2263. StateController.Navigate("t0");
  2264. StateController.Navigate("t0");
  2265. StateContext.Data["emptyString"] = 1;
  2266. StateContext.Data["double"] = 4D;
  2267. StateContext.Data["DateTime"] = 1D;
  2268. StateContext.Data["byte"] = string.Empty;
  2269. StateContext.Data["char"] = null;
  2270. string link = StateController.GetNavigationLink("t0");
  2271. Assert.AreEqual(-1, link.IndexOf("double"));
  2272. Assert.AreEqual(-1, link.IndexOf("decimal"));
  2273. Assert.AreEqual(-1, link.IndexOf("byte"));
  2274. Assert.AreEqual(-1, link.IndexOf("char"));
  2275. Assert.AreNotEqual(-1, link.IndexOf("emptyString"));
  2276. Assert.AreNotEqual(-1, link.IndexOf("DateTime"));
  2277. }
  2278. [TestMethod]
  2279. public void RefreshLinkDefaultsTest()
  2280. {
  2281. StateController.Navigate("d0");
  2282. StateController.Navigate("t0");
  2283. StateContext.Data["_bool"] = null;
  2284. StateContext.Data["string"] = "Hello";
  2285. StateContext.Data["_int"] = 1D;
  2286. StateContext.Data["short"] = string.Empty;
  2287. StateContext.Data["float"] = "World";
  2288. string link = StateController.GetRefreshLink(new NavigationData(true));
  2289. Assert.AreEqual(-1, link.IndexOf("string"));
  2290. Assert.AreEqual(-1, link.IndexOf("_bool"));
  2291. Assert.AreEqual(-1, link.IndexOf("short"));
  2292. Assert.AreEqual(-1, link.IndexOf("long"));
  2293. Assert.AreNotEqual(-1, link.IndexOf("float"));
  2294. Assert.AreNotEqual(-1, link.IndexOf("_int"));
  2295. }
  2296. [TestMethod]
  2297. public void RefreshLinkDefaultsRouteTest()
  2298. {
  2299. StateController.Navigate("d3");
  2300. StateController.Navigate("t0");
  2301. StateContext.Data["_bool"] = null;
  2302. StateContext.Data["string"] = "Hello";
  2303. StateContext.Data["_int"] = 1D;
  2304. StateContext.Data["short"] = string.Empty;
  2305. StateContext.Data["float"] = "World";
  2306. string link = StateController.GetRefreshLink(new NavigationData(true));
  2307. Assert.AreEqual(-1, link.IndexOf("string"));
  2308. Assert.AreEqual(-1, link.IndexOf("_bool"));
  2309. Assert.AreEqual(-1, link.IndexOf("short"));
  2310. Assert.AreEqual(-1, link.IndexOf("long"));
  2311. Assert.AreNotEqual(-1, link.IndexOf("float"));
  2312. Assert.AreNotEqual(-1, link.IndexOf("_int"));
  2313. }
  2314. [TestMethod]
  2315. public void BackLinkDefaultsTest()
  2316. {
  2317. StateController.Navigate("d0");
  2318. StateController.Navigate("t0");
  2319. StateContext.Data["_bool"] = null;
  2320. StateContext.Data["string"] = "Hello";
  2321. StateContext.Data["_int"] = 1D;
  2322. StateContext.Data["short"] = string.Empty;
  2323. StateContext.Data["float"] = "World";
  2324. StateController.Navigate("t0");
  2325. string link = StateController.GetNavigationBackLink(1);
  2326. Assert.AreEqual(-1, link.IndexOf("string"));
  2327. Assert.AreEqual(-1, link.IndexOf("_bool"));
  2328. Assert.AreEqual(-1, link.IndexOf("short"));
  2329. Assert.AreEqual(-1, link.IndexOf("long"));
  2330. Assert.AreNotEqual(-1, link.IndexOf("float"));
  2331. Assert.AreNotEqual(-1, link.IndexOf("_int"));
  2332. }
  2333. [TestMethod]
  2334. public void BackLinkDefaultsRouteTest()
  2335. {
  2336. StateController.Navigate("d3");
  2337. StateController.Navigate("t0");
  2338. StateContext.Data["_bool"] = null;
  2339. StateContext.Data["string"] = "Hello";
  2340. StateContext.Data["_int"] = 1D;
  2341. StateContext.Data["short"] = string.Empty;
  2342. StateContext.Data["float"] = "World";
  2343. StateController.Navigate("t0");
  2344. string link = StateController.GetNavigationBackLink(1);
  2345. Assert.AreEqual(-1, link.IndexOf("string"));
  2346. Assert.AreEqual(-1, link.IndexOf("_bool"));
  2347. Assert.AreEqual(-1, link.IndexOf("short"));
  2348. Assert.AreEqual(-1, link.IndexOf("long"));
  2349. Assert.AreNotEqual(-1, link.IndexOf("float"));
  2350. Assert.AreNotEqual(-1, link.IndexOf("_int"));
  2351. }
  2352. [TestMethod]
  2353. public void CrumbLinkDefaultsTest()
  2354. {
  2355. StateController.Navigate("d0");
  2356. StateController.Navigate("t0");
  2357. StateContext.Data["_int"] = null;
  2358. StateContext.Data["_bool"] = "";
  2359. StateContext.Data["string"] = 4F;
  2360. StateContext.Data["short"] = 1D;
  2361. StateContext.Data["float"] = 3F;
  2362. StateController.Navigate("t0");
  2363. string link = StateController.Crumbs[1].NavigationLink;
  2364. Assert.AreEqual(-1, link.IndexOf("_bool"));
  2365. Assert.AreEqual(-1, link.IndexOf("_int"));
  2366. Assert.AreEqual(-1, link.IndexOf("long"));
  2367. Assert.AreEqual(-1, link.IndexOf("float"));
  2368. Assert.AreNotEqual(-1, link.IndexOf("string"));
  2369. Assert.AreNotEqual(-1, link.IndexOf("short"));
  2370. }
  2371. [TestMethod]
  2372. public void CrumbLinkDefaultsRouteTest()
  2373. {
  2374. StateController.Navigate("d3");
  2375. StateController.Navigate("t0");
  2376. StateContext.Data["_int"] = null;
  2377. StateContext.Data["_bool"] = "";
  2378. StateContext.Data["string"] = 4F;
  2379. StateContext.Data["short"] = 1D;
  2380. StateContext.Data["float"] = 3F;
  2381. StateController.Navigate("t0");
  2382. string link = StateController.Crumbs[1].NavigationLink;
  2383. Assert.AreEqual(-1, link.IndexOf("_bool"));
  2384. Assert.AreEqual(-1, link.IndexOf("_int"));
  2385. Assert.AreEqual(-1, link.IndexOf("long"));
  2386. Assert.AreEqual(-1, link.IndexOf("float"));
  2387. Assert.AreNotEqual(-1, link.IndexOf("string"));
  2388. Assert.AreNotEqual(-1, link.IndexOf("short"));
  2389. }
  2390. [TestMethod]
  2391. public void NavigateLinkTest()
  2392. {
  2393. StateController.Navigate("d2");
  2394. StateContext.Data["_int"] = 1;
  2395. StateContext.Data["string"] = "Hello";
  2396. string link = StateController.GetNavigationLink("t0");
  2397. Assert.AreNotEqual(-1, link.IndexOf("c1"));
  2398. Assert.AreNotEqual(-1, link.IndexOf("_int"));
  2399. Assert.AreNotEqual(-1, link.IndexOf("string"));
  2400. }
  2401. [TestMethod]
  2402. public void NavigateLinkRouteTest()
  2403. {
  2404. StateController.Navigate("d5");
  2405. StateContext.Data["_int"] = 1;
  2406. StateContext.Data["string"] = "Hello";
  2407. string link = StateController.GetNavigationLink("t0");
  2408. Assert.AreNotEqual(-1, link.IndexOf("c1"));
  2409. Assert.AreNotEqual(-1, link.IndexOf("_int"));
  2410. Assert.AreNotEqual(-1, link.IndexOf("string"));
  2411. }
  2412. [TestMethod]
  2413. public void NavigateLinkWithoutTrailTest()
  2414. {
  2415. StateController.Navigate("d2");
  2416. StateController.Navigate("t0");
  2417. StateContext.Data["_int"] = 1;
  2418. StateContext.Data["string"] = "Hello";
  2419. string link = StateController.GetNavigationLink("t0");
  2420. Assert.AreEqual(-1, link.IndexOf("c1"));
  2421. Assert.AreEqual(-1, link.IndexOf("_int"));
  2422. Assert.AreEqual(-1, link.IndexOf("string"));
  2423. }
  2424. [TestMethod]
  2425. public void NavigateLinkWithoutTrailRouteTest()
  2426. {
  2427. StateController.Navigate("d5");
  2428. StateController.Navigate("t0");
  2429. StateContext.Data["_int"] = 1;
  2430. StateContext.Data["string"] = "Hello";
  2431. string link = StateController.GetNavigationLink("t0");
  2432. Assert.AreEqual(-1, link.IndexOf("c1"));
  2433. Assert.AreEqual(-1, link.IndexOf("_int"));
  2434. Assert.AreEqual(-1, link.IndexOf("string"));
  2435. }
  2436. [TestMethod]
  2437. public void NavigateDefaultTypesTest()
  2438. {
  2439. StateController.Navigate("d0");
  2440. StateController.Navigate("t0");
  2441. StateController.Navigate("t0");
  2442. StateController.Navigate("t0");
  2443. StateController.Navigate("t0", IndividualNavigationData);
  2444. int i = 0;
  2445. foreach (NavigationDataItem item in StateContext.Data)
  2446. {
  2447. Assert.AreEqual(IndividualNavigationData[item.Key], item.Value);
  2448. i++;
  2449. }
  2450. Assert.AreEqual(16, i);
  2451. }
  2452. [TestMethod]
  2453. public void NavigateDefaultTypesRouteTest()
  2454. {
  2455. StateController.Navigate("d3");
  2456. StateController.Navigate("t0");
  2457. StateController.Navigate("t0");
  2458. StateController.Navigate("t0");
  2459. StateController.Navigate("t0", IndividualNavigationData);
  2460. int i = 0;
  2461. foreach (NavigationDataItem item in StateContext.Data)
  2462. {
  2463. Assert.AreEqual(IndividualNavigationData[item.Key], item.Value);
  2464. i++;
  2465. }
  2466. Assert.AreEqual(16, i);
  2467. }
  2468. [TestMethod]
  2469. public void NavigateLinkDefaultTypesStringTest()
  2470. {
  2471. StateController.Navigate("d0");
  2472. StateController.Navigate("t0");
  2473. StateController.Navigate("t0");
  2474. NavigationData data = new NavigationData()
  2475. {
  2476. {"s1","hello"},
  2477. {"s2","world"}
  2478. };
  2479. string url = StateController.GetNavigationLink("t0", data);
  2480. Assert.AreNotEqual(-1, url.IndexOf("s1=hello&"));
  2481. Assert.AreNotEqual(-1, url.IndexOf("s2=world2_"));
  2482. }
  2483. [TestMethod]
  2484. public void NavigateLinkDefaultTypesStringRouteTest()
  2485. {
  2486. StateController.Navigate("d3");
  2487. StateController.Navigate("t0");
  2488. StateController.Navigate("t0");
  2489. NavigationData data = new NavigationData()
  2490. {
  2491. {"s1","hello"},
  2492. {"s2","world"}
  2493. };
  2494. string url = StateController.GetNavigationLink("t0", data);
  2495. Assert.AreNotEqual(-1, url.IndexOf("s1=hello&"));
  2496. Assert.AreNotEqual(-1, url.IndexOf("s2=world2_"));
  2497. }
  2498. [TestMethod]
  2499. public void NavigateLinkDefaultTypesBoolTest()
  2500. {
  2501. StateController.Navigate("d0");
  2502. StateController.Navigate("t0");
  2503. StateController.Navigate("t0");
  2504. NavigationData data = new NavigationData()
  2505. {
  2506. {"b1",true},
  2507. {"b2",false}
  2508. };
  2509. string url = StateController.GetNavigationLink("t0", data);
  2510. Assert.AreNotEqual(-1, url.IndexOf("b1=True&"));
  2511. Assert.AreNotEqual(-1, url.IndexOf("b2=False2_"));
  2512. }
  2513. [TestMethod]
  2514. public void NavigateLinkDefaultTypesBoolRouteTest()
  2515. {
  2516. StateController.Navigate("d3");
  2517. StateController.Navigate("t0");
  2518. StateController.Navigate("t0");
  2519. NavigationData data = new NavigationData()
  2520. {
  2521. {"b1",true},
  2522. {"b2",false}
  2523. };
  2524. string url = StateController.GetNavigationLink("t0", data);
  2525. Assert.AreNotEqual(-1, url.IndexOf("b1=True&"));
  2526. Assert.AreNotEqual(-1, url.IndexOf("b2=False2_"));
  2527. }
  2528. [TestMethod]
  2529. public void NavigateLinkDefaultTypesIntTest()
  2530. {
  2531. StateController.Navigate("d0");
  2532. StateController.Navigate("t0");
  2533. StateController.Navigate("t0");
  2534. NavigationData data = new NavigationData()
  2535. {
  2536. {"i1",0},
  2537. {"i2",1}
  2538. };
  2539. string url = StateController.GetNavigationLink("t0", data);
  2540. Assert.AreNotEqual(-1, url.IndexOf("i1=0&"));
  2541. Assert.AreNotEqual(-1, url.IndexOf("i2=12_"));
  2542. }
  2543. [TestMethod]
  2544. public void NavigateLinkDefaultTypesIntRouteTest()
  2545. {
  2546. StateController.Navigate("d3");
  2547. StateController.Navigate("t0");
  2548. StateController.Navigate("t0");
  2549. NavigationData data = new NavigationData()
  2550. {
  2551. {"i1",0},
  2552. {"i2",1}
  2553. };
  2554. string url = StateController.GetNavigationLink("t0", data);
  2555. Assert.AreNotEqual(-1, url.IndexOf("i1=0&"));
  2556. Assert.AreNotEqual(-1, url.IndexOf("i2=12_"));
  2557. }
  2558. [TestMethod]
  2559. public void NavigateLinkDefaultTypesShortTest()
  2560. {
  2561. StateController.Navigate("d0");
  2562. StateController.Navigate("t0");
  2563. StateController.Navigate("t0");
  2564. NavigationData data = new NavigationData()
  2565. {
  2566. {"sh1",(short)0},
  2567. {"sh2",(short)1}
  2568. };
  2569. string url = StateController.GetNavigationLink("t0", data);
  2570. Assert.AreNotEqual(-1, url.IndexOf("sh1=0&"));
  2571. Assert.AreNotEqual(-1, url.IndexOf("sh2=12_"));
  2572. }
  2573. [TestMethod]
  2574. public void NavigateLinkDefaultTypesShortRouteTest()
  2575. {
  2576. StateController.Navigate("d3");
  2577. StateController.Navigate("t0");
  2578. StateController.Navigate("t0");
  2579. NavigationData data = new NavigationData()
  2580. {
  2581. {"sh1",(short)0},
  2582. {"sh2",(short)1}
  2583. };
  2584. string url = StateController.GetNavigationLink("t0", data);
  2585. Assert.AreNotEqual(-1, url.IndexOf("sh1=0&"));
  2586. Assert.AreNotEqual(-1, url.IndexOf("sh2=12_"));
  2587. }
  2588. [TestMethod]
  2589. public void NavigateLinkDefaultTypesLongTest()
  2590. {
  2591. StateController.Navigate("d0");
  2592. StateController.Navigate("t0");
  2593. StateController.Navigate("t0");
  2594. NavigationData data = new NavigationData()
  2595. {
  2596. {"l2",(long)1},
  2597. {"l1",(long)2}
  2598. };
  2599. string url = StateController.GetNavigationLink("t0", data);
  2600. Assert.AreNotEqual(-1, url.IndexOf("l1=2&"));
  2601. Assert.AreNotEqual(-1, url.IndexOf("l2=12_"));
  2602. }
  2603. [TestMethod]
  2604. public void NavigateLinkDefaultTypesLongRouteTest()
  2605. {
  2606. StateController.Navigate("d3");
  2607. StateController.Navigate("t0");
  2608. StateController.Navigate("t0");
  2609. NavigationData data = new NavigationData()
  2610. {
  2611. {"l2",(long)1},
  2612. {"l1",(long)2}
  2613. };
  2614. string url = StateController.GetNavigationLink("t0", data);
  2615. Assert.AreNotEqual(-1, url.IndexOf("l1=2&"));
  2616. Assert.AreNotEqual(-1, url.IndexOf("l2=12_"));
  2617. }
  2618. [TestMethod]
  2619. public void NavigateLinkDefaultTypesFloatTest()
  2620. {
  2621. StateController.Navigate("d0");
  2622. StateController.Navigate("t0");
  2623. StateController.Navigate("t0");
  2624. NavigationData data = new NavigationData()
  2625. {
  2626. {"f1",(float)3},
  2627. {"f2",(float)4}
  2628. };
  2629. string url = StateController.GetNavigationLink("t0", data);
  2630. Assert.AreNotEqual(-1, url.IndexOf("f1=3&"));
  2631. Assert.AreNotEqual(-1, url.IndexOf("f2=42_"));
  2632. }
  2633. [TestMethod]
  2634. public void NavigateLinkDefaultTypesFloatRouteTest()
  2635. {
  2636. StateController.Navigate("d3");
  2637. StateController.Navigate("t0");
  2638. StateController.Navigate("t0");
  2639. NavigationData data = new NavigationData()
  2640. {
  2641. {"f1",(float)3},
  2642. {"f2",(float)4}
  2643. };
  2644. string url = StateController.GetNavigationLink("t0", data);
  2645. Assert.AreNotEqual(-1, url.IndexOf("f1=3&"));
  2646. Assert.AreNotEqual(-1, url.IndexOf("f2=42_"));
  2647. }
  2648. [TestMethod]
  2649. public void NavigateLinkDefaultTypesDoubleTest()
  2650. {
  2651. StateController.Navigate("d0");
  2652. StateController.Navigate("t0");
  2653. StateController.Navigate("t0");
  2654. NavigationData data = new NavigationData()
  2655. {
  2656. {"d2",(double)1},
  2657. {"d1",(double)0}
  2658. };
  2659. string url = StateController.GetNavigationLink("t0", data);
  2660. Assert.AreNotEqual(-1, url.IndexOf("d1=0&"));
  2661. Assert.AreNotEqual(-1, url.IndexOf("d2=12_"));
  2662. }
  2663. [TestMethod]
  2664. public void NavigateLinkDefaultTypesDoubleRouteTest()
  2665. {
  2666. StateController.Navigate("d3");
  2667. StateController.Navigate("t0");
  2668. StateController.Navigate("t0");
  2669. NavigationData data = new NavigationData()
  2670. {
  2671. {"d2",(double)1},
  2672. {"d1",(double)0}
  2673. };
  2674. string url = StateController.GetNavigationLink("t0", data);
  2675. Assert.AreNotEqual(-1, url.IndexOf("d1=0&"));
  2676. Assert.AreNotEqual(-1, url.IndexOf("d2=12_"));
  2677. }
  2678. [TestMethod]
  2679. public void NavigateLinkDefaultTypesDecimalTest()
  2680. {
  2681. StateController.Navigate("d0");
  2682. StateController.Navigate("t0");
  2683. StateController.Navigate("t0");
  2684. NavigationData data = new NavigationData()
  2685. {
  2686. {"de1",(decimal)5},
  2687. {"de2",(decimal)5}
  2688. };
  2689. string url = StateController.GetNavigationLink("t0", data);
  2690. Assert.AreNotEqual(-1, url.IndexOf("de1=5&"));
  2691. Assert.AreNotEqual(-1, url.IndexOf("de2=52_"));
  2692. }
  2693. [TestMethod]
  2694. public void NavigateLinkDefaultTypesDecimalRouteTest()
  2695. {
  2696. StateController.Navigate("d3");
  2697. StateController.Navigate("t0");
  2698. StateController.Navigate("t0");
  2699. NavigationData data = new NavigationData()
  2700. {
  2701. {"de1",(decimal)5},
  2702. {"de2",(decimal)5}
  2703. };
  2704. string url = StateController.GetNavigationLink("t0", data);
  2705. Assert.AreNotEqual(-1, url.IndexOf("de1=5&"));
  2706. Assert.AreNotEqual(-1, url.IndexOf("de2=52_"));
  2707. }
  2708. [TestMethod]
  2709. public void NavigateLinkDefaultTypesDateTimeTest()
  2710. {
  2711. StateController.Navigate("d0");
  2712. StateController.Navigate("t0");
  2713. StateController.Navigate("t0");
  2714. NavigationData data = new NavigationData()
  2715. {
  2716. {"dt1",new DateTime(1990, 3, 1, 12, 35, 47)},
  2717. {"dt2",new DateTime(1990, 3, 1, 12, 35, 47)}
  2718. };
  2719. string url = StateController.GetNavigationLink("t0", data);
  2720. Assert.AreNotEqual(-1, url.IndexOf("dt1=" + HttpUtility.UrlEncode("03/01/1990 12:35:47") + "2_"));
  2721. Assert.AreNotEqual(-1, url.IndexOf("dt2=" + HttpUtility.UrlEncode("03/01/1990 12:35:47") + "&"));
  2722. }
  2723. [TestMethod]
  2724. public void NavigateLinkDefaultTypesDateTimeRouteTest()
  2725. {
  2726. StateController.Navigate("d3");
  2727. StateController.Navigate("t0");
  2728. StateController.Navigate("t0");
  2729. NavigationData data = new NavigationData()
  2730. {
  2731. {"dt1",new DateTime(1990, 3, 1, 12, 35, 47)},
  2732. {"dt2",new DateTime(1990, 3, 1, 12, 35, 47)}
  2733. };
  2734. string url = StateController.GetNavigationLink("t0", data);
  2735. #if NET40Plus
  2736. Assert.AreNotEqual(-1, url.IndexOf("dt1=" + Uri.EscapeDataString("03/01/1990 12:35:47") + "2_"));
  2737. Assert.AreNotEqual(-1, url.IndexOf("dt2=" + Uri.EscapeDataString("03/01/1990 12:35:47") + "&"));
  2738. #else
  2739. Assert.AreNotEqual(-1, url.IndexOf("dt1=" + HttpUtility.UrlEncode("03/01/1990 12:35:47") + "2_"));
  2740. Assert.AreNotEqual(-1, url.IndexOf("dt2=" + HttpUtility.UrlEncode("03/01/1990 12:35:47") + "&"));
  2741. #endif
  2742. }
  2743. [TestMethod]
  2744. public void NavigateLinkDefaultTypesTimeSpanTest()
  2745. {
  2746. StateController.Navigate("d0");
  2747. StateController.Navigate("t0");
  2748. StateController.Navigate("t0");
  2749. NavigationData data = new NavigationData()
  2750. {
  2751. {"t2",new TimeSpan(10, 5, 23)},
  2752. {"t1",new TimeSpan(10, 5, 23)}
  2753. };
  2754. string url = StateController.GetNavigationLink("t0", data);
  2755. Assert.AreNotEqual(-1, url.IndexOf("t1=" + HttpUtility.UrlEncode("10:05:23") + "&"));
  2756. Assert.AreNotEqual(-1, url.IndexOf("t2=" + HttpUtility.UrlEncode("10:05:23") + "2_"));
  2757. }
  2758. [TestMethod]
  2759. public void NavigateLinkDefaultTypesTimeSpanRouteTest()
  2760. {
  2761. StateController.Navigate("d3");
  2762. StateController.Navigate("t0");
  2763. StateController.Navigate("t0");
  2764. NavigationData data = new NavigationData()
  2765. {
  2766. {"t2",new TimeSpan(10, 5, 23)},
  2767. {"t1",new TimeSpan(10, 5, 23)}
  2768. };
  2769. string url = StateController.GetNavigationLink("t0", data);
  2770. #if NET40Plus
  2771. Assert.AreNotEqual(-1, url.IndexOf("t1=" + Uri.EscapeDataString("10:05:23") + "&"));
  2772. Assert.AreNotEqual(-1, url.IndexOf("t2=" + Uri.EscapeDataString("10:05:23") + "2_"));
  2773. #else
  2774. Assert.AreNotEqual(-1, url.IndexOf("t1=" + HttpUtility.UrlEncode("10:05:23") + "&"));
  2775. Assert.AreNotEqual(-1, url.IndexOf("t2=" + HttpUtility.UrlEncode("10:05:23") + "2_"));
  2776. #endif
  2777. }
  2778. [TestMethod]
  2779. public void NavigateLinkDefaultTypesByteTest()
  2780. {
  2781. StateController.Navigate("d0");
  2782. StateController.Navigate("t0");
  2783. StateController.Navigate("t0");
  2784. NavigationData data = new NavigationData()
  2785. {
  2786. {"by1",(byte)0},
  2787. {"by2",(byte)0}
  2788. };
  2789. string url = StateController.GetNavigationLink("t0", data);
  2790. Assert.AreNotEqual(-1, url.IndexOf("by1=0&"));
  2791. Assert.AreNotEqual(-1, url.IndexOf("by2=02_"));
  2792. }
  2793. [TestMethod]
  2794. public void NavigateLinkDefaultTypesByteRouteTest()
  2795. {
  2796. StateController.Navigate("d3");
  2797. StateController.Navigate("t0");
  2798. StateController.Navigate("t0");
  2799. NavigationData data = new NavigationData()
  2800. {
  2801. {"by1",(byte)0},
  2802. {"by2",(byte)0}
  2803. };
  2804. string url = StateController.GetNavigationLink("t0", data);
  2805. Assert.AreNotEqual(-1, url.IndexOf("by1=0&"));
  2806. Assert.AreNotEqual(-1, url.IndexOf("by2=02_"));
  2807. }
  2808. [TestMethod]
  2809. public void NavigateLinkDefaultTypesCharTest()
  2810. {
  2811. StateController.Navigate("d0");
  2812. StateController.Navigate("t0");
  2813. StateController.Navigate("t0");
  2814. NavigationData data = new NavigationData()
  2815. {
  2816. {"ch1",'0'},
  2817. {"ch2",'1'}
  2818. };
  2819. string url = StateController.GetNavigationLink("t0", data);
  2820. Assert.AreNotEqual(-1, url.IndexOf("ch1=0&"));
  2821. Assert.AreNotEqual(-1, url.IndexOf("ch2=12_"));
  2822. }
  2823. [TestMethod]
  2824. public void NavigateLinkDefaultTypesCharRouteTest()
  2825. {
  2826. StateController.Navigate("d3");
  2827. StateController.Navigate("t0");
  2828. StateController.Navigate("t0");
  2829. NavigationData data = new NavigationData()
  2830. {
  2831. {"ch1",'0'},
  2832. {"ch2",'1'}
  2833. };
  2834. string url = StateController.GetNavigationLink("t0", data);
  2835. Assert.AreNotEqual(-1, url.IndexOf("ch1=0&"));
  2836. Assert.AreNotEqual(-1, url.IndexOf("ch2=12_"));
  2837. }
  2838. [TestMethod]
  2839. public void NavigateLinkDefaultTypesGuidTest()
  2840. {
  2841. StateController.Navigate("d0");
  2842. StateController.Navigate("t0");
  2843. StateController.Navigate("t0");
  2844. NavigationData data = new NavigationData()
  2845. {
  2846. {"g1",new Guid("01234567890123456789012345678901")},
  2847. };
  2848. data["g2"] = new Guid("01234567890123456789012345678901");
  2849. string url = StateController.GetNavigationLink("t0", data);
  2850. Assert.AreNotEqual(-1, url.IndexOf("g1=01234567-8901-2345-6789-012345678901&"));
  2851. Assert.AreNotEqual(-1, url.IndexOf("g2=01234567-8901-2345-6789-0123456789012_"));
  2852. }
  2853. [TestMethod]
  2854. public void NavigateLinkDefaultTypesGuidRouteTest()
  2855. {
  2856. StateController.Navigate("d3");
  2857. StateController.Navigate("t0");
  2858. StateController.Navigate("t0");
  2859. NavigationData data = new NavigationData()
  2860. {
  2861. {"g1",new Guid("01234567890123456789012345678901")},
  2862. };
  2863. data["g2"] = new Guid("01234567890123456789012345678901");
  2864. string url = StateController.GetNavigationLink("t0", data);
  2865. Assert.AreNotEqual(-1, url.IndexOf("g1=01234567-8901-2345-6789-012345678901&"));
  2866. Assert.AreNotEqual(-1, url.IndexOf("g2=01234567-8901-2345-6789-0123456789012_"));
  2867. }
  2868. [TestMethod]
  2869. public void NavigateBackLinkDefaultTypesTest()
  2870. {
  2871. StateController.Navigate("d0");
  2872. StateController.Navigate("t0");
  2873. StateController.Navigate("t0");
  2874. NavigationData data = new NavigationData()
  2875. {
  2876. {"s2","world"},
  2877. {"i1",0},
  2878. {"i2",1}
  2879. };
  2880. data["s1"] = "hello";
  2881. StateController.Navigate("t0", data);
  2882. StateController.Navigate("t0");
  2883. string url = StateController.GetNavigationBackLink(1);
  2884. Assert.AreNotEqual(-1, url.IndexOf("s1=hello&"));
  2885. Assert.AreNotEqual(-1, url.IndexOf("s2=world2_"));
  2886. Assert.AreNotEqual(-1, url.IndexOf("i1=0&"));
  2887. Assert.AreNotEqual(-1, url.IndexOf("i2=12_"));
  2888. }
  2889. [TestMethod]
  2890. public void NavigateBackLinkDefaultTypesRouteTest()
  2891. {
  2892. StateController.Navigate("d3");
  2893. StateController.Navigate("t0");
  2894. StateController.Navigate("t0");
  2895. NavigationData data = new NavigationData()
  2896. {
  2897. {"s2","world"},
  2898. {"i1",0},
  2899. {"i2",1}
  2900. };
  2901. data["s1"] = "hello";
  2902. StateController.Navigate("t0", data);
  2903. StateController.Navigate("t0");
  2904. string url = StateController.GetNavigationBackLink(1);
  2905. Assert.AreNotEqual(-1, url.IndexOf("s1=hello&"));
  2906. Assert.AreNotEqual(-1, url.IndexOf("s2=world2_"));
  2907. Assert.AreNotEqual(-1, url.IndexOf("i1=0&"));
  2908. Assert.AreNotEqual(-1, url.IndexOf("i2=12_"));
  2909. }
  2910. [TestMethod]
  2911. public void NavigateRefreshLinkDefaultTypesTest()
  2912. {
  2913. StateController.Navigate("d0");
  2914. StateController.Navigate("t0");
  2915. StateController.Navigate("t0");
  2916. NavigationData data = new NavigationData()
  2917. {
  2918. {"de1",(decimal)5},
  2919. {"de2",(decimal)5},
  2920. {"ch1",'0'},
  2921. };
  2922. data["ch2"] = '1';
  2923. StateController.Navigate("t0", data);
  2924. string url = StateController.GetRefreshLink(new NavigationData(true));
  2925. Assert.AreNotEqual(-1, url.IndexOf("de1=5&"));
  2926. Assert.AreNotEqual(-1, url.IndexOf("de2=52_"));
  2927. Assert.AreNotEqual(-1, url.IndexOf("ch1=0&"));
  2928. Assert.AreNotEqual(-1, url.IndexOf("ch2=12_"));
  2929. }
  2930. [TestMethod]
  2931. public void NavigateRefreshLinkDefaultTypesRouteTest()
  2932. {
  2933. StateController.Navigate("d3");
  2934. StateController.Navigate("t0");
  2935. StateController.Navigate("t0");
  2936. NavigationData data = new NavigationData()
  2937. {
  2938. {"de1",(decimal)5},
  2939. {"de2",(decimal)5},
  2940. {"ch1",'0'},
  2941. };
  2942. data["ch2"] = '1';
  2943. StateController.Navigate("t0", data);
  2944. string url = StateController.GetRefreshLink(new NavigationData(true));
  2945. Assert.AreNotEqual(-1, url.IndexOf("de1=5&"));
  2946. Assert.AreNotEqual(-1, url.IndexOf("de2=52_"));
  2947. Assert.AreNotEqual(-1, url.IndexOf("ch1=0&"));
  2948. Assert.AreNotEqual(-1, url.IndexOf("ch2=12_"));
  2949. }
  2950. [TestMethod]
  2951. public void NavigateBack2LinkDefaultTypesTest()
  2952. {
  2953. StateController.Navigate("d0");
  2954. NavigationData data = new NavigationData()
  2955. {
  2956. {"_bool",1},
  2957. };
  2958. StateController.Navigate("t0", data);
  2959. StateController.Navigate("t0");
  2960. StateController.Navigate("t0");
  2961. string url = StateController.GetNavigationBackLink(2);
  2962. Assert.AreNotEqual(-1, url.IndexOf("_bool=1&"));
  2963. }
  2964. [TestMethod]
  2965. public void NavigateBack2LinkDefaultTypesRouteTest()
  2966. {
  2967. StateController.Navigate("d3");
  2968. NavigationData data = new NavigationData()
  2969. {
  2970. {"_bool",1},
  2971. };
  2972. StateController.Navigate("t0", data);
  2973. StateController.Navigate("t0");
  2974. StateController.Navigate("t0");
  2975. string url = StateController.GetNavigationBackLink(2);
  2976. Assert.AreNotEqual(-1, url.IndexOf("_bool=1&"));
  2977. }
  2978. [TestMethod]
  2979. public void NavigateOverrideDefaultTypesTest()
  2980. {
  2981. StateController.Navigate("d1");
  2982. NavigationData data = new NavigationData();
  2983. data["s1"] = true;
  2984. data["b1"] = 0;
  2985. data["i1"] = (short)1;
  2986. data["sh1"] = (long)2;
  2987. StateController.Navigate("t0", data);
  2988. Assert.AreEqual(true, StateContext.Data["s1"]);
  2989. Assert.AreEqual(0, StateContext.Data["b1"]);
  2990. Assert.AreEqual((short)1, StateContext.Data["i1"]);
  2991. Assert.AreEqual((long)2, StateContext.Data["sh1"]);
  2992. }
  2993. [TestMethod]
  2994. public void NavigateOverrideDefaultTypesRouteTest()
  2995. {
  2996. StateController.Navigate("d4");
  2997. NavigationData data = new NavigationData();
  2998. data["s1"] = true;
  2999. data["b1"] = 0;
  3000. data["i1"] = (short)1;
  3001. data["sh1"] = (long)2;
  3002. StateController.Navigate("t0", data);
  3003. Assert.AreEqual(true, StateContext.Data["s1"]);
  3004. Assert.AreEqual(0, StateContext.Data["b1"]);
  3005. Assert.AreEqual((short)1, StateContext.Data["i1"]);
  3006. Assert.AreEqual((long)2, StateContext.Data["sh1"]);
  3007. }
  3008. [TestMethod]
  3009. public void NavigateRefreshOverrideDefaultTypesTest()
  3010. {
  3011. StateController.Navigate("d1");
  3012. NavigationData data = new NavigationData();
  3013. data["l1"] = (float)3;
  3014. data["f1"] = (double)4;
  3015. data["d1"] = (decimal)5;
  3016. data["de1"] = new DateTime(1990, 3, 1, 12, 35, 47);
  3017. StateController.Navigate("t0", data);
  3018. StateController.Refresh(new NavigationData(true));
  3019. Assert.AreEqual((float)3, StateContext.Data["l1"]);
  3020. Assert.AreEqual((double)4, StateContext.Data["f1"]);
  3021. Assert.AreEqual((decimal)5, StateContext.Data["d1"]);
  3022. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateContext.Data["de1"]);
  3023. }
  3024. [TestMethod]
  3025. public void NavigateRefreshOverrideDefaultTypesRouteTest()
  3026. {
  3027. StateController.Navigate("d4");
  3028. NavigationData data = new NavigationData();
  3029. data["l1"] = (float)3;
  3030. data["f1"] = (double)4;
  3031. data["d1"] = (decimal)5;
  3032. data["de1"] = new DateTime(1990, 3, 1, 12, 35, 47);
  3033. StateController.Navigate("t0", data);
  3034. StateController.Refresh(new NavigationData(true));
  3035. Assert.AreEqual((float)3, StateContext.Data["l1"]);
  3036. Assert.AreEqual((double)4, StateContext.Data["f1"]);
  3037. Assert.AreEqual((decimal)5, StateContext.Data["d1"]);
  3038. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateContext.Data["de1"]);
  3039. }
  3040. [TestMethod]
  3041. public void NavigateBackOverrideDefaultTypesTest()
  3042. {
  3043. StateController.Navigate("d1");
  3044. NavigationData data = new NavigationData();
  3045. data["dt1"] = new TimeSpan(10, 5, 23);
  3046. data["t1"] = (byte)7;
  3047. data["by1"] = (char)8;
  3048. data["ch1"] = new Guid("01234567890123456789012345678901");
  3049. data["g1"] = "a";
  3050. StateController.Navigate("t0", data);
  3051. StateController.Navigate("t0");
  3052. StateController.Navigate("t0");
  3053. StateController.NavigateBack(2);
  3054. Assert.AreEqual(new TimeSpan(10, 5, 23), StateContext.Data["dt1"]);
  3055. Assert.AreEqual((byte)7, StateContext.Data["t1"]);
  3056. Assert.AreEqual((char)8, StateContext.Data["by1"]);
  3057. Assert.AreEqual(new Guid("01234567890123456789012345678901"), StateContext.Data["ch1"]);
  3058. Assert.AreEqual("a", StateContext.Data["g1"]);
  3059. }
  3060. [TestMethod]
  3061. public void NavigateBackOverrideDefaultTypesRouteTest()
  3062. {
  3063. StateController.Navigate("d4");
  3064. NavigationData data = new NavigationData();
  3065. data["dt1"] = new TimeSpan(10, 5, 23);
  3066. data["t1"] = (byte)7;
  3067. data["by1"] = (char)8;
  3068. data["ch1"] = new Guid("01234567890123456789012345678901");
  3069. data["g1"] = "a";
  3070. StateController.Navigate("t0", data);
  3071. StateController.Navigate("t0");
  3072. StateController.Navigate("t0");
  3073. StateController.NavigateBack(2);
  3074. Assert.AreEqual(new TimeSpan(10, 5, 23), StateContext.Data["dt1"]);
  3075. Assert.AreEqual((byte)7, StateContext.Data["t1"]);
  3076. Assert.AreEqual((char)8, StateContext.Data["by1"]);
  3077. Assert.AreEqual(new Guid("01234567890123456789012345678901"), StateContext.Data["ch1"]);
  3078. Assert.AreEqual("a", StateContext.Data["g1"]);
  3079. }
  3080. [TestMethod]
  3081. public void ReservedUrlCharacterDefaultTypesTest()
  3082. {
  3083. NavigationData data = new NavigationData();
  3084. data["*/()-_+~@:?><.;[]{}!£$%^#&"] = (short)0;
  3085. data["**=/()-_+~@:?><.;[]{}!£$%^#&&"] = (short)1;
  3086. StateController.Navigate("d1", data);
  3087. string url = StateController.GetRefreshLink(new NavigationData(true));
  3088. Assert.AreNotEqual(-1, url.IndexOf("=0&"));
  3089. Assert.AreNotEqual(-1, url.IndexOf("=12_"));
  3090. Assert.AreEqual((short)0, StateContext.Data["*/()-_+~@:?><.;[]{}!£$%^#&"]);
  3091. Assert.AreEqual((short)1, StateContext.Data["**=/()-_+~@:?><.;[]{}!£$%^#&&"]);
  3092. StateController.Navigate("t0");
  3093. url = StateController.GetNavigationBackLink(1);
  3094. Assert.AreNotEqual(-1, url.IndexOf("=0&"));
  3095. Assert.AreNotEqual(-1, url.IndexOf("=12_"));
  3096. }
  3097. [TestMethod]
  3098. public void ReservedUrlCharacterDefaultTypesRouteTest()
  3099. {
  3100. NavigationData data = new NavigationData();
  3101. data["*/()-_+~@:?><.;[]{}!£$%^#&"] = (short)0;
  3102. data["**=/()-_+~@:?><.;[]{}!£$%^#&&"] = (short)1;
  3103. StateController.Navigate("d4", data);
  3104. string url = StateController.GetRefreshLink(new NavigationData(true));
  3105. Assert.AreNotEqual(-1, url.IndexOf("=0&"));
  3106. Assert.AreNotEqual(-1, url.IndexOf("=12_"));
  3107. Assert.AreEqual((short)0, StateContext.Data["*/()-_+~@:?><.;[]{}!£$%^#&"]);
  3108. Assert.AreEqual((short)1, StateContext.Data["**=/()-_+~@:?><.;[]{}!£$%^#&&"]);
  3109. StateController.Navigate("t0");
  3110. url = StateController.GetNavigationBackLink(1);
  3111. Assert.AreNotEqual(-1, url.IndexOf("=0&"));
  3112. Assert.AreNotEqual(-1, url.IndexOf("=12_"));
  3113. }
  3114. [TestMethod]
  3115. public void SeparatorUrlCharacterDefaultTypesTest()
  3116. {
  3117. NavigationData data = new NavigationData();
  3118. data["_0_1_2_3_4_5_"] = 10;
  3119. data["__0_1_2_3_4_5_"] = 20;
  3120. StateController.Navigate("d1", data);
  3121. string url = StateController.GetRefreshLink(new NavigationData(true));
  3122. Assert.AreNotEqual(-1, url.IndexOf("=10&"));
  3123. Assert.AreNotEqual(-1, url.IndexOf("=202_"));
  3124. Assert.AreEqual(10, StateContext.Data["_0_1_2_3_4_5_"]);
  3125. Assert.AreEqual(20, StateContext.Data["__0_1_2_3_4_5_"]);
  3126. StateController.Navigate("t0");
  3127. StateController.Navigate("t0");
  3128. StateController.Navigate("t0");
  3129. StateController.NavigateBack(1);
  3130. url = StateController.GetNavigationBackLink(2);
  3131. Assert.AreNotEqual(-1, url.IndexOf("=10&"));
  3132. Assert.AreNotEqual(-1, url.IndexOf("=202_"));
  3133. }
  3134. [TestMethod]
  3135. public void SeparatorUrlCharacterDefaultTypesRouteTest()
  3136. {
  3137. NavigationData data = new NavigationData();
  3138. data["_0_1_2_3_4_5_"] = 10;
  3139. data["__0_1_2_3_4_5_"] = 20;
  3140. StateController.Navigate("d4", data);
  3141. string url = StateController.GetRefreshLink(new NavigationData(true));
  3142. Assert.AreNotEqual(-1, url.IndexOf("=10&"));
  3143. Assert.AreNotEqual(-1, url.IndexOf("=202_"));
  3144. Assert.AreEqual(10, StateContext.Data["_0_1_2_3_4_5_"]);
  3145. Assert.AreEqual(20, StateContext.Data["__0_1_2_3_4_5_"]);
  3146. StateController.Navigate("t0");
  3147. StateController.Navigate("t0");
  3148. StateController.Navigate("t0");
  3149. StateController.NavigateBack(1);
  3150. url = StateController.GetNavigationBackLink(2);
  3151. Assert.AreNotEqual(-1, url.IndexOf("=10&"));
  3152. Assert.AreNotEqual(-1, url.IndexOf("=202_"));
  3153. }
  3154. [TestMethod]
  3155. public void NavigateLinkToDerivedTest()
  3156. {
  3157. StateController.Navigate("d0");
  3158. NavigationData data = new NavigationData();
  3159. data["st1"] = "Hello";
  3160. data["bool"] = true;
  3161. data["long"] = (long)1;
  3162. data["st2"] = "World";
  3163. string link = StateController.GetNavigationLink("t0", data);
  3164. Assert.AreEqual(-1, link.IndexOf("st1"));
  3165. Assert.AreEqual(-1, link.IndexOf("bool"));
  3166. Assert.AreEqual(-1, link.IndexOf("long"));
  3167. Assert.AreNotEqual(-1, link.IndexOf("st2"));
  3168. }
  3169. [TestMethod]
  3170. public void NavigateLinkToDerivedRouteTest()
  3171. {
  3172. StateController.Navigate("d3");
  3173. NavigationData data = new NavigationData();
  3174. data["st1"] = "Hello";
  3175. data["bool"] = true;
  3176. data["long"] = (long)1;
  3177. data["st2"] = "World";
  3178. string link = StateController.GetNavigationLink("t0", data);
  3179. Assert.AreEqual(-1, link.IndexOf("st1"));
  3180. Assert.AreEqual(-1, link.IndexOf("bool"));
  3181. Assert.AreEqual(-1, link.IndexOf("long"));
  3182. Assert.AreNotEqual(-1, link.IndexOf("st2"));
  3183. }
  3184. [TestMethod]
  3185. public void NavigateLinkFromDerivedTest()
  3186. {
  3187. StateController.Navigate("d0");
  3188. StateController.Navigate("t0");
  3189. StateContext.Data["st1"] = "Hello";
  3190. StateContext.Data["bool"] = true;
  3191. StateContext.Data["long"] = (long)1;
  3192. StateContext.Data["st2"] = "World";
  3193. StateController.Navigate("t0");
  3194. string link = StateController.GetNavigationLink("t0");
  3195. Assert.AreEqual(-1, link.IndexOf("st1"));
  3196. Assert.AreEqual(-1, link.IndexOf("bool"));
  3197. Assert.AreEqual(-1, link.IndexOf("long"));
  3198. Assert.AreNotEqual(-1, link.IndexOf("st2"));
  3199. }
  3200. [TestMethod]
  3201. public void NavigateLinkFromDerivedRouteTest()
  3202. {
  3203. StateController.Navigate("d3");
  3204. StateController.Navigate("t0");
  3205. StateContext.Data["st1"] = "Hello";
  3206. StateContext.Data["bool"] = true;
  3207. StateContext.Data["long"] = (long)1;
  3208. StateContext.Data["st2"] = "World";
  3209. StateController.Navigate("t0");
  3210. string link = StateController.GetNavigationLink("t0");
  3211. Assert.AreEqual(-1, link.IndexOf("st1"));
  3212. Assert.AreEqual(-1, link.IndexOf("bool"));
  3213. Assert.AreEqual(-1, link.IndexOf("long"));
  3214. Assert.AreNotEqual(-1, link.IndexOf("st2"));
  3215. }
  3216. [TestMethod]
  3217. public void NavigateBackLinkDerivedTest()
  3218. {
  3219. StateController.Navigate("d0");
  3220. StateController.Navigate("t0");
  3221. StateContext.Data["st1"] = "Hello";
  3222. StateContext.Data["bool"] = true;
  3223. StateContext.Data["long"] = (long)1;
  3224. StateContext.Data["st2"] = "World";
  3225. StateController.Navigate("t0");
  3226. string link = StateController.GetNavigationBackLink(1);
  3227. Assert.AreEqual(-1, link.IndexOf("st1"));
  3228. Assert.AreEqual(-1, link.IndexOf("bool"));
  3229. Assert.AreEqual(-1, link.IndexOf("long"));
  3230. Assert.AreNotEqual(-1, link.IndexOf("st2"));
  3231. }
  3232. [TestMethod]
  3233. public void NavigateBackLinkDerivedRouteTest()
  3234. {
  3235. StateController.Navigate("d3");
  3236. StateController.Navigate("t0");
  3237. StateContext.Data["st1"] = "Hello";
  3238. StateContext.Data["bool"] = true;
  3239. StateContext.Data["long"] = (long)1;
  3240. StateContext.Data["st2"] = "World";
  3241. StateController.Navigate("t0");
  3242. string link = StateController.GetNavigationBackLink(1);
  3243. Assert.AreEqual(-1, link.IndexOf("st1"));
  3244. Assert.AreEqual(-1, link.IndexOf("bool"));
  3245. Assert.AreEqual(-1, link.IndexOf("long"));
  3246. Assert.AreNotEqual(-1, link.IndexOf("st2"));
  3247. }
  3248. [TestMethod]
  3249. public void RefreshLinkDerivedTest()
  3250. {
  3251. StateController.Navigate("d0");
  3252. StateController.Navigate("t0");
  3253. NavigationData data = new NavigationData();
  3254. data["st1"] = "Hello";
  3255. data["bool"] = true;
  3256. data["long"] = (long)1;
  3257. data["st2"] = "World";
  3258. string link = StateController.GetRefreshLink(data);
  3259. Assert.AreEqual(-1, link.IndexOf("st1"));
  3260. Assert.AreEqual(-1, link.IndexOf("bool"));
  3261. Assert.AreEqual(-1, link.IndexOf("long"));
  3262. Assert.AreNotEqual(-1, link.IndexOf("st2"));
  3263. }
  3264. [TestMethod]
  3265. public void RefreshLinkDerivedRouteTest()
  3266. {
  3267. StateController.Navigate("d3");
  3268. StateController.Navigate("t0");
  3269. NavigationData data = new NavigationData();
  3270. data["st1"] = "Hello";
  3271. data["bool"] = true;
  3272. data["long"] = (long)1;
  3273. data["st2"] = "World";
  3274. string link = StateController.GetRefreshLink(data);
  3275. Assert.AreEqual(-1, link.IndexOf("st1"));
  3276. Assert.AreEqual(-1, link.IndexOf("bool"));
  3277. Assert.AreEqual(-1, link.IndexOf("long"));
  3278. Assert.AreNotEqual(-1, link.IndexOf("st2"));
  3279. }
  3280. [TestMethod]
  3281. public void NavigateDerivedTest()
  3282. {
  3283. StateController.Navigate("d0");
  3284. NavigationData data = new NavigationData();
  3285. data["st1"] = "Hello";
  3286. data["bool"] = true;
  3287. data["st2"] = "World";
  3288. StateController.Navigate("t0", data);
  3289. Assert.IsNull(StateContext.Data["st1"]);
  3290. Assert.IsNull(StateContext.Data["bool"]);
  3291. Assert.AreEqual("World", StateContext.Data["st2"]);
  3292. }
  3293. [TestMethod]
  3294. public void NavigateDerivedRouteTest()
  3295. {
  3296. StateController.Navigate("d3");
  3297. NavigationData data = new NavigationData();
  3298. data["st1"] = "Hello";
  3299. data["bool"] = true;
  3300. data["st2"] = "World";
  3301. StateController.Navigate("t0", data);
  3302. Assert.IsNull(StateContext.Data["st1"]);
  3303. Assert.IsNull(StateContext.Data["bool"]);
  3304. Assert.AreEqual("World", StateContext.Data["st2"]);
  3305. }
  3306. [TestMethod]
  3307. public void NavigateDerivedDefaultTest()
  3308. {
  3309. StateController.Navigate("d0");
  3310. StateController.Navigate("t0");
  3311. NavigationData data = new NavigationData();
  3312. data["string"] = "Hello";
  3313. data["decimal"] = "World";
  3314. StateController.Navigate("t0", data);
  3315. Assert.IsNull(StateContext.Data["string"]);
  3316. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  3317. }
  3318. [TestMethod]
  3319. public void NavigateDerivedDefaultRouteTest()
  3320. {
  3321. StateController.Navigate("d3");
  3322. StateController.Navigate("t0");
  3323. NavigationData data = new NavigationData();
  3324. data["string"] = "Hello";
  3325. data["decimal"] = "World";
  3326. StateController.Navigate("t0", data);
  3327. Assert.IsNull(StateContext.Data["string"]);
  3328. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  3329. }
  3330. [TestMethod]
  3331. public void NavigateBackDerivedTest()
  3332. {
  3333. StateController.Navigate("d0");
  3334. StateController.Navigate("t0");
  3335. StateContext.Data["st1"] = "Hello";
  3336. StateContext.Data["bool"] = true;
  3337. StateContext.Data["st2"] = "World";
  3338. StateController.Navigate("t0");
  3339. StateController.NavigateBack(1);
  3340. Assert.IsNull(StateContext.Data["st1"]);
  3341. Assert.IsNull(StateContext.Data["bool"]);
  3342. Assert.AreEqual("World", StateContext.Data["st2"]);
  3343. }
  3344. [TestMethod]
  3345. public void NavigateBackDerivedRouteTest()
  3346. {
  3347. StateController.Navigate("d3");
  3348. StateController.Navigate("t0");
  3349. StateContext.Data["st1"] = "Hello";
  3350. StateContext.Data["bool"] = true;
  3351. StateContext.Data["st2"] = "World";
  3352. StateController.Navigate("t0");
  3353. StateController.NavigateBack(1);
  3354. Assert.IsNull(StateContext.Data["st1"]);
  3355. Assert.IsNull(StateContext.Data["bool"]);
  3356. Assert.AreEqual("World", StateContext.Data["st2"]);
  3357. }
  3358. [TestMethod]
  3359. public void NavigateBackDerivedDefaultTest()
  3360. {
  3361. StateController.Navigate("d0");
  3362. StateController.Navigate("t0");
  3363. StateController.Navigate("t0");
  3364. StateContext.Data["string"] = "Hello";
  3365. StateContext.Data["decimal"] = "World";
  3366. StateController.Navigate("t0");
  3367. StateController.NavigateBack(1);
  3368. Assert.IsNull(StateContext.Data["string"]);
  3369. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  3370. }
  3371. [TestMethod]
  3372. public void NavigateBackDerivedDefaultRouteTest()
  3373. {
  3374. StateController.Navigate("d3");
  3375. StateController.Navigate("t0");
  3376. StateController.Navigate("t0");
  3377. StateContext.Data["string"] = "Hello";
  3378. StateContext.Data["decimal"] = "World";
  3379. StateController.Navigate("t0");
  3380. StateController.NavigateBack(1);
  3381. Assert.IsNull(StateContext.Data["string"]);
  3382. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  3383. }
  3384. [TestMethod]
  3385. public void NavigateDerivedNonConvertibleTest()
  3386. {
  3387. StateController.Navigate("d0");
  3388. StateController.Navigate("t0");
  3389. StateController.Navigate("t0");
  3390. NavigationData data = new NavigationData();
  3391. data["string"] = new Exception();
  3392. data["decimal"] = new Exception();
  3393. StateController.Refresh(data);
  3394. Assert.IsNull(StateContext.Data["string"]);
  3395. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  3396. }
  3397. [TestMethod]
  3398. public void NavigateDerivedNonConvertibleRouteTest()
  3399. {
  3400. StateController.Navigate("d3");
  3401. StateController.Navigate("t0");
  3402. StateController.Navigate("t0");
  3403. NavigationData data = new NavigationData();
  3404. data["string"] = new Exception();
  3405. data["decimal"] = new Exception();
  3406. StateController.Refresh(data);
  3407. Assert.IsNull(StateContext.Data["string"]);
  3408. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  3409. }
  3410. [TestMethod]
  3411. public void ParseNavigationDataExpressionCurrentDataTest()
  3412. {
  3413. StateController.Navigate("d0");
  3414. NavigationData data = new NavigationData();
  3415. data["z"] = "Hello";
  3416. StateController.Navigate("t0", data);
  3417. data = StateInfoConfig.ParseNavigationDataExpression("x=y,z,a?int=1,byte=2 ", null, true);
  3418. Assert.AreEqual("y", data["x"]);
  3419. Assert.AreEqual("Hello", data["z"]);
  3420. Assert.AreEqual(1, data["a"]);
  3421. Assert.AreEqual("2", data["byte"]);
  3422. }
  3423. [TestMethod]
  3424. public void ParseNavigationDataExpressionCurrentDataAndStateTest()
  3425. {
  3426. StateController.Navigate("d0");
  3427. NavigationData data = new NavigationData();
  3428. data["z"] = "Hello";
  3429. StateController.Navigate("t0", data);
  3430. StateContext.Data["y"] = 1;
  3431. data = StateInfoConfig.ParseNavigationDataExpression("x=y,y,z,a?int=1,byte=2", StateController.GetNextState("t0"), true);
  3432. Assert.AreEqual("y", data["x"]);
  3433. Assert.AreEqual(1, data["y"]);
  3434. Assert.AreEqual("Hello", data["z"]);
  3435. Assert.AreEqual(1, data["a"]);
  3436. Assert.AreEqual('2', data["byte"]);
  3437. }
  3438. [TestMethod]
  3439. public void ParseNavigationDataExpressionOnlyCurrentDataTest()
  3440. {
  3441. StateController.Navigate("d0");
  3442. NavigationData data = new NavigationData();
  3443. data["z"] = "Hello";
  3444. StateController.Navigate("t0", data);
  3445. StateContext.Data["y"] = 1;
  3446. data = StateInfoConfig.ParseNavigationDataExpression(" & ", null, true);
  3447. Assert.AreEqual(1, data["y"]);
  3448. Assert.AreEqual("Hello", data["z"]);
  3449. }
  3450. [TestMethod]
  3451. public void ParseNavigationDataExpressionIncludeCurrentDataTest()
  3452. {
  3453. StateController.Navigate("d0");
  3454. NavigationData data = new NavigationData();
  3455. data["z"] = "Hello";
  3456. StateController.Navigate("t0", data);
  3457. StateContext.Data["y"] = 1;
  3458. data = StateInfoConfig.ParseNavigationDataExpression(" &x=y,a?int=1,byte=2", null, true);
  3459. Assert.AreEqual("y", data["x"]);
  3460. Assert.AreEqual(1, data["y"]);
  3461. Assert.AreEqual("Hello", data["z"]);
  3462. Assert.AreEqual(1, data["a"]);
  3463. Assert.AreEqual("2", data["byte"]);
  3464. }
  3465. [TestMethod]
  3466. public void ParseNavigationDataExpressionIncludeCurrentDataAndStateTest()
  3467. {
  3468. StateController.Navigate("d0");
  3469. NavigationData data = new NavigationData();
  3470. data["y"] = 1;
  3471. data["z"] = "Hello";
  3472. StateController.Navigate("t0", data);
  3473. data = StateInfoConfig.ParseNavigationDataExpression("&x=y,a?int=1,byte=2 ", StateController.GetNextState("t0"), true);
  3474. Assert.AreEqual("y", data["x"]);
  3475. Assert.AreEqual(1, data["y"]);
  3476. Assert.AreEqual("Hello", data["z"]);
  3477. Assert.AreEqual(1, data["a"]);
  3478. Assert.AreEqual('2', data["byte"]);
  3479. }
  3480. [TestMethod]
  3481. public void ParseNavigationDataExpressionNullCurrentDataTest()
  3482. {
  3483. StateController.Navigate("d0");
  3484. StateController.Navigate("t0");
  3485. NavigationData data = StateInfoConfig.ParseNavigationDataExpression("x=y,z", null, true);
  3486. Assert.AreEqual("y", data["x"]);
  3487. Assert.IsNull(data["z"]);
  3488. }
  3489. [TestMethod]
  3490. [ExpectedException(typeof(FormatException))]
  3491. public void ParseNavigationDataExpressionInvalidEqualCurrentDataTest()
  3492. {
  3493. StateController.Navigate("d0");
  3494. StateController.Navigate("t0");
  3495. NavigationData data = StateInfoConfig.ParseNavigationDataExpression("x=y,z==", null, true);
  3496. }
  3497. [TestMethod]
  3498. public void ParseNavigationDataExpressionCurrentDataDefaultsTest()
  3499. {
  3500. StateController.Navigate("d0");
  3501. StateController.Navigate("t0");
  3502. NavigationData data = StateInfoConfig.ParseNavigationDataExpression("_bool , x=y , string ", null, true);
  3503. Assert.AreEqual(true, data["_bool"]);
  3504. Assert.AreEqual("y", data["x"]);
  3505. Assert.AreEqual("Hello", data["string"]);
  3506. }
  3507. [TestMethod]
  3508. public void ParseNavigationDataExpressionIncludeCurrentDataExcludeTest()
  3509. {
  3510. StateController.Navigate("d0");
  3511. NavigationData data = new NavigationData();
  3512. data["y"] = 1;
  3513. data["z"] = "Hello";
  3514. StateController.Navigate("t0", data);
  3515. data = StateInfoConfig.ParseNavigationDataExpression("& y , - z , a ? int = 1 ", StateController.GetNextState("t0"), true);
  3516. Assert.AreEqual(1, data["a"]);
  3517. Assert.IsNull(data["y"]);
  3518. Assert.IsNull(data["z"]);
  3519. }
  3520. [TestMethod]
  3521. public void ParseNavigationDataExpressionIncludeCurrentDataIncludeTest()
  3522. {
  3523. StateController.Navigate("d0");
  3524. NavigationData data = new NavigationData();
  3525. data["y"] = 1;
  3526. data["z"] = "Hello";
  3527. StateController.Navigate("t0", data);
  3528. data = StateInfoConfig.ParseNavigationDataExpression("& + y , + z , a ? int = 1 ", StateController.GetNextState("t0"), true);
  3529. Assert.AreEqual(1, data["a"]);
  3530. Assert.AreEqual(1, data["y"]);
  3531. Assert.AreEqual("Hello", data["z"]);
  3532. }
  3533. [TestMethod]
  3534. public void ParseNavigationDataExpressionUseCurrentDataIncludeTest()
  3535. {
  3536. StateController.Navigate("d0");
  3537. NavigationData data = new NavigationData();
  3538. data["x"] = true;
  3539. data["y"] = 1;
  3540. data["z"] = "Hello";
  3541. StateController.Navigate("t0", data);
  3542. data = StateInfoConfig.ParseNavigationDataExpression(" x , + y , a ? int = 1 , +b=0", StateController.GetNextState("t0"), true);
  3543. Assert.AreEqual(1, data["a"]);
  3544. Assert.AreEqual(true, data["x"]);
  3545. Assert.AreEqual(1, data["y"]);
  3546. Assert.AreEqual("0", data["+b"]);
  3547. Assert.IsNull(data["z"]);
  3548. }
  3549. [TestMethod]
  3550. public void ParseNavigationDataExpressionUseCurrentDataExcludeTest()
  3551. {
  3552. StateController.Navigate("d0");
  3553. NavigationData data = new NavigationData();
  3554. data["y"] = 1;
  3555. StateController.Navigate("t0", data);
  3556. data = StateInfoConfig.ParseNavigationDataExpression(" a ? int = 1, -a ", StateController.GetNextState("t0"), true);
  3557. Assert.IsNull(data["a"]);
  3558. Assert.IsNull(data["y"]);
  3559. }
  3560. [TestMethod]
  3561. public void NavigateRefreshCurrentDataTest()
  3562. {
  3563. StateController.Navigate("d0");
  3564. NavigationData data = new NavigationData();
  3565. data["s"] = "Hello";
  3566. data["i"] = 1;
  3567. data["c"] = '1';
  3568. StateController.Navigate("t0", data);
  3569. List<string> currentDataKeys = new List<string>();
  3570. currentDataKeys.Add("s");
  3571. currentDataKeys.Add("c");
  3572. StateController.Refresh(new NavigationData(currentDataKeys));
  3573. Assert.AreEqual("Hello", StateContext.Data["s"]);
  3574. Assert.AreEqual('1', StateContext.Data["c"]);
  3575. Assert.IsNull(StateContext.Data["i"]);
  3576. }
  3577. [TestMethod]
  3578. public void NavigateRefreshCurrentDataRouteTest()
  3579. {
  3580. StateController.Navigate("d3");
  3581. NavigationData data = new NavigationData();
  3582. data["s"] = "Hello";
  3583. data["i"] = 1;
  3584. data["c"] = '1';
  3585. StateController.Navigate("t0", data);
  3586. List<string> currentDataKeys = new List<string>();
  3587. currentDataKeys.Add("s");
  3588. currentDataKeys.Add("c");
  3589. StateController.Refresh(new NavigationData(currentDataKeys));
  3590. Assert.AreEqual("Hello", StateContext.Data["s"]);
  3591. Assert.AreEqual('1', StateContext.Data["c"]);
  3592. Assert.IsNull(StateContext.Data["i"]);
  3593. }
  3594. [TestMethod]
  3595. public void NavigateCurrentDataDefaultsTest()
  3596. {
  3597. NavigationData data = new NavigationData();
  3598. data["emptyString"] = "Hello";
  3599. data["double"] = 1D;
  3600. data["char"] = '6';
  3601. data["DateTime"] = new DateTime(2000, 1, 3);
  3602. StateController.Navigate("d0", data);
  3603. StateController.Navigate("t0", new NavigationData(true));
  3604. List<string> currentDataKeys = new List<string>();
  3605. currentDataKeys.Add("double");
  3606. currentDataKeys.Add("char");
  3607. StateController.Navigate("t0", new NavigationData(currentDataKeys));
  3608. Assert.AreEqual("", StateContext.Data["emptyString"]);
  3609. Assert.AreEqual(1D, StateContext.Data["double"]);
  3610. Assert.AreEqual('6', StateContext.Data["char"]);
  3611. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateContext.Data["DateTime"]);
  3612. }
  3613. [TestMethod]
  3614. public void NavigateCurrentDataDefaultsRouteTest()
  3615. {
  3616. NavigationData data = new NavigationData();
  3617. data["emptyString"] = "Hello";
  3618. data["double"] = 1D;
  3619. data["char"] = '6';
  3620. data["DateTime"] = new DateTime(2000, 1, 3);
  3621. StateController.Navigate("d3", data);
  3622. StateController.Navigate("t0", new NavigationData(true));
  3623. List<string> currentDataKeys = new List<string>();
  3624. currentDataKeys.Add("double");
  3625. currentDataKeys.Add("char");
  3626. StateController.Navigate("t0", new NavigationData(currentDataKeys));
  3627. Assert.AreEqual("", StateContext.Data["emptyString"]);
  3628. Assert.AreEqual(1D, StateContext.Data["double"]);
  3629. Assert.AreEqual('6', StateContext.Data["char"]);
  3630. Assert.AreEqual(new DateTime(1990, 3, 1, 12, 35, 47), StateContext.Data["DateTime"]);
  3631. }
  3632. [TestMethod]
  3633. public void NavigateCurrentDataDerivedDefaultsTest()
  3634. {
  3635. StateController.Navigate("d0");
  3636. StateController.Navigate("t0", new NavigationData() { { "decimal", 3m } });
  3637. List<string> currentDataKeys = new List<string>() { "decimal" };
  3638. StateController.Navigate("t0", new NavigationData(currentDataKeys));
  3639. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  3640. }
  3641. [TestMethod]
  3642. public void NavigateCurrentDataDerivedDefaultsRouteTest()
  3643. {
  3644. StateController.Navigate("d3");
  3645. StateController.Navigate("t0", new NavigationData() { { "decimal", 3m } });
  3646. List<string> currentDataKeys = new List<string>() { "decimal" };
  3647. StateController.Navigate("t0", new NavigationData(currentDataKeys));
  3648. Assert.AreEqual(5m, StateContext.Data["decimal"]);
  3649. }
  3650. #if NET40Plus
  3651. [TestMethod]
  3652. [ExpectedException(typeof(InvalidOperationException))]
  3653. public void NavigateMissingRouteDataTest()
  3654. {
  3655. try
  3656. {
  3657. StateController.Navigate("d4");
  3658. StateController.Navigate("t0");
  3659. StateController.Navigate("t0");
  3660. StateController.Navigate("t0");
  3661. }
  3662. catch (InvalidOperationException) { };
  3663. StateController.Navigate("t0");
  3664. }
  3665. [TestMethod]
  3666. [ExpectedException(typeof(InvalidOperationException))]
  3667. public void NavigateRefreshMissingRouteDataTest()
  3668. {
  3669. try
  3670. {
  3671. StateController.Navigate("d4");
  3672. StateController.Navigate("t0");
  3673. StateController.Navigate("t0");
  3674. StateController.Navigate("t0");
  3675. StateController.Navigate("t0", new NavigationData { { "s1", 1 }, { "s2", 2 } });
  3676. }
  3677. catch (InvalidOperationException) { };
  3678. StateController.Refresh();
  3679. }
  3680. #endif
  3681. [TestMethod]
  3682. [ExpectedException(typeof(ConfigurationErrorsException))]
  3683. public void EmptyNavigationDataTypeTest()
  3684. {
  3685. ConfigurationManager.GetSection("Navigation/EmptyNavigationDataType");
  3686. }
  3687. [TestMethod]
  3688. [ExpectedException(typeof(ConfigurationErrorsException))]
  3689. public void InvalidNavigationDataTypeTest()
  3690. {
  3691. ConfigurationManager.GetSection("Navigation/InvalidNavigationDataType");
  3692. }
  3693. [TestMethod]
  3694. [ExpectedException(typeof(ConfigurationErrorsException))]
  3695. public void InvalidConversionFromTest()
  3696. {
  3697. ConfigurationManager.GetSection("Navigation/InvalidConversionFrom");
  3698. }
  3699. [TestMethod]
  3700. [ExpectedException(typeof(ConfigurationErrorsException))]
  3701. public void InvalidConversionToTest()
  3702. {
  3703. ConfigurationManager.GetSection("Navigation/InvalidConversionTo");
  3704. }
  3705. [TestMethod]
  3706. [ExpectedException(typeof(ConfigurationErrorsException))]
  3707. public void InvalidNavigationDataConverterTest()
  3708. {
  3709. ConfigurationManager.GetSection("Navigation/InvalidNavigationDataConverter");
  3710. }
  3711. [TestMethod]
  3712. [ExpectedException(typeof(ConfigurationErrorsException))]
  3713. public void InvalidNavigationDataConverterTypeTest()
  3714. {
  3715. ConfigurationManager.GetSection("Navigation/InvalidNavigationDataConverterType");
  3716. }
  3717. [TestMethod]
  3718. [ExpectedException(typeof(ConfigurationErrorsException))]
  3719. public void InvalidConversionFromConverterTest()
  3720. {
  3721. ConfigurationManager.GetSection("Navigation/InvalidConversionFromConverter");
  3722. }
  3723. [TestMethod]
  3724. [ExpectedException(typeof(ConfigurationErrorsException))]
  3725. public void InvalidConversionToConverterTest()
  3726. {
  3727. ConfigurationManager.GetSection("Navigation/InvalidConversionToConverter");
  3728. }
  3729. }
  3730. }