CarouselPresenterTests.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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 Perspex.Controls.Generators;
  4. using Perspex.Controls.Presenters;
  5. using Perspex.Controls.Templates;
  6. using Xunit;
  7. namespace Perspex.Controls.UnitTests.Presenters
  8. {
  9. public class CarouselPresenterTests
  10. {
  11. [Fact]
  12. public void ApplyTemplate_Should_Create_Panel()
  13. {
  14. var target = new CarouselPresenter
  15. {
  16. ItemsPanel = new FuncTemplate<IPanel>(() => new Panel()),
  17. };
  18. target.ApplyTemplate();
  19. Assert.IsType<Panel>(target.Panel);
  20. }
  21. [Fact]
  22. public void ItemContainerGenerator_Should_Be_Picked_Up_From_TemplatedControl()
  23. {
  24. var parent = new TestItemsControl();
  25. var target = new CarouselPresenter
  26. {
  27. TemplatedParent = parent,
  28. };
  29. Assert.IsType<ItemContainerGenerator<TestItem>>(target.ItemContainerGenerator);
  30. }
  31. [Fact]
  32. public void Setting_SelectedIndex_Should_Show_Page()
  33. {
  34. var target = new CarouselPresenter
  35. {
  36. Items = new[] { "foo", "bar" },
  37. SelectedIndex = 0,
  38. };
  39. target.ApplyTemplate();
  40. Assert.IsType<TextBlock>(target.Panel.Children[0]);
  41. Assert.Equal("foo", ((TextBlock)target.Panel.Children[0]).Text);
  42. }
  43. [Fact]
  44. public void Changing_SelectedIndex_Should_Show_Page()
  45. {
  46. var target = new CarouselPresenter
  47. {
  48. Items = new[] { "foo", "bar" },
  49. SelectedIndex = 0,
  50. };
  51. target.ApplyTemplate();
  52. target.SelectedIndex = 1;
  53. Assert.IsType<TextBlock>(target.Panel.Children[0]);
  54. Assert.Equal("bar", ((TextBlock)target.Panel.Children[0]).Text);
  55. }
  56. private class TestItem : ContentControl
  57. {
  58. }
  59. private class TestItemsControl : ItemsControl
  60. {
  61. protected override IItemContainerGenerator CreateItemContainerGenerator()
  62. {
  63. return new ItemContainerGenerator<TestItem>(this, TestItem.ContentProperty);
  64. }
  65. }
  66. }
  67. }