summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Core.UnitTests/SliderUnitTests.cs
blob: 22ad75ba78041e2f5e20c4ae2586099cc25e9aec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
using System;
using System.Collections.Generic;
using System.Linq;

using NUnit.Framework;

namespace Xamarin.Forms.Core.UnitTests
{
	[TestFixture]
	public class SliderUnitTests : BaseTestFixture
	{
		[Test]
		public void TestConstructor ()
		{
			var slider = new Slider (20, 200, 50);

			Assert.AreEqual (20, slider.Minimum);
			Assert.AreEqual (200, slider.Maximum);
			Assert.AreEqual (50, slider.Value);
		}

		[Test]
		public void TestInvalidConstructor ()
		{
			Assert.Throws<ArgumentOutOfRangeException> (() => new Slider (10, 5, 10));
		}

		[Test]
		public void TestConstructorClamping ()
		{
			Slider slider = new Slider (50, 100, 0);

			Assert.AreEqual (50, slider.Value);
		}

		[Test]
		public void TestMinValueClamp ()
		{
			Slider slider = new Slider (0, 100, 0);

			slider.Minimum = 10;

			Assert.AreEqual (10, slider.Value);
			Assert.AreEqual (10, slider.Minimum);
		}

		[Test]
		public void TestMaxValueClamp ()
		{
			Slider slider = new Slider (0, 100, 100);
			
			slider.Maximum = 10;
			
			Assert.AreEqual (10, slider.Value);
			Assert.AreEqual (10, slider.Maximum);
		}

		[Test]
		public void TestInvalidMaxValue ()
		{
			var slider = new Slider ();
			Assert.Throws<ArgumentException> (() => slider.Maximum = slider.Minimum - 1);
		}

		[Test]
		public void TestInvalidMinValue ()
		{
			var slider = new Slider ();
			Assert.Throws<ArgumentException> (() => slider.Minimum = slider.Maximum + 1);
		}

		[Test]
		public void TestValueChanged ()
		{
			var slider = new Slider ();
			var changed = false;

			slider.ValueChanged += (sender, arg) => changed = true;

			slider.Value += 1;

			Assert.True (changed);
		}

		[TestCase (0.0, 1.0)]
		[TestCase (1.0, 0.5)]
		public void SliderValueChangedEventArgs (double initialValue, double finalValue)
		{
			var slider = new Slider {
				Minimum = 0.0,
				Maximum = 1.0,
				Value = initialValue
			};

			Slider sliderFromSender = null;
			double oldValue = 0.0;
			double newValue = 0.0;

			slider.ValueChanged += (s, e) => {
				sliderFromSender = (Slider)s;
				oldValue = e.OldValue;
				newValue = e.NewValue;
			};

			slider.Value = finalValue;

			Assert.AreEqual (slider, sliderFromSender);
			Assert.AreEqual (initialValue, oldValue);
			Assert.AreEqual (finalValue, newValue);
		}
	}	
}