ItemContainerGeneratorTests.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. // Copyright (c) The Perspex Project. All rights reserved.
  2. // Licensed under the MIT license. See licence.md file in the project root for full license information.
  3. using System.Linq;
  4. using Perspex.Controls.Generators;
  5. using Xunit;
  6. namespace Perspex.Controls.UnitTests.Generators
  7. {
  8. public class ItemContainerGeneratorTests
  9. {
  10. [Fact]
  11. public void Materialize_Should_Create_Containers()
  12. {
  13. var items = new[] { "foo", "bar", "baz" };
  14. var owner = new Decorator();
  15. var target = new ItemContainerGenerator(owner);
  16. var containers = target.Materialize(0, items, null);
  17. var result = containers.OfType<TextBlock>().Select(x => x.Text).ToList();
  18. Assert.Equal(items, result);
  19. }
  20. [Fact]
  21. public void ContainerFromIndex_Should_Return_Materialized_Containers()
  22. {
  23. var items = new[] { "foo", "bar", "baz" };
  24. var owner = new Decorator();
  25. var target = new ItemContainerGenerator(owner);
  26. var containers = target.Materialize(0, items, null).ToList();
  27. Assert.Equal(containers[0], target.ContainerFromIndex(0));
  28. Assert.Equal(containers[1], target.ContainerFromIndex(1));
  29. Assert.Equal(containers[2], target.ContainerFromIndex(2));
  30. }
  31. [Fact]
  32. public void IndexFromContainer_Should_Return_Index()
  33. {
  34. var items = new[] { "foo", "bar", "baz" };
  35. var owner = new Decorator();
  36. var target = new ItemContainerGenerator(owner);
  37. var containers = target.Materialize(0, items, null).ToList();
  38. Assert.Equal(0, target.IndexFromContainer(containers[0]));
  39. Assert.Equal(1, target.IndexFromContainer(containers[1]));
  40. Assert.Equal(2, target.IndexFromContainer(containers[2]));
  41. }
  42. [Fact]
  43. public void Dematerialize_Should_Remove_Container()
  44. {
  45. var items = new[] { "foo", "bar", "baz" };
  46. var owner = new Decorator();
  47. var target = new ItemContainerGenerator(owner);
  48. var containers = target.Materialize(0, items, null).ToList();
  49. target.Dematerialize(1, 1);
  50. Assert.Equal(containers[0], target.ContainerFromIndex(0));
  51. Assert.Equal(null, target.ContainerFromIndex(1));
  52. Assert.Equal(containers[2], target.ContainerFromIndex(2));
  53. }
  54. [Fact]
  55. public void Dematerialize_Should_Return_Removed_Containers()
  56. {
  57. var items = new[] { "foo", "bar", "baz" };
  58. var owner = new Decorator();
  59. var target = new ItemContainerGenerator(owner);
  60. var containers = target.Materialize(0, items, null);
  61. var expected = target.Containers.Take(2).ToList();
  62. var result = target.Dematerialize(0, 2);
  63. Assert.Equal(expected, result);
  64. }
  65. [Fact]
  66. public void RemoveRange_Should_Alter_Successive_Container_Indexes()
  67. {
  68. var items = new[] { "foo", "bar", "baz" };
  69. var owner = new Decorator();
  70. var target = new ItemContainerGenerator(owner);
  71. var containers = target.Materialize(0, items, null).ToList();
  72. var removed = target.RemoveRange(1, 1).Single();
  73. Assert.Equal(containers[0], target.ContainerFromIndex(0));
  74. Assert.Equal(containers[2], target.ContainerFromIndex(1));
  75. Assert.Equal(containers[1], removed);
  76. }
  77. }
  78. }