summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Core.UnitTests/TriggerTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Core.UnitTests/TriggerTests.cs')
-rw-r--r--Xamarin.Forms.Core.UnitTests/TriggerTests.cs29
1 files changed, 29 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/TriggerTests.cs b/Xamarin.Forms.Core.UnitTests/TriggerTests.cs
index 1fe16669..655310be 100644
--- a/Xamarin.Forms.Core.UnitTests/TriggerTests.cs
+++ b/Xamarin.Forms.Core.UnitTests/TriggerTests.cs
@@ -112,5 +112,34 @@ namespace Xamarin.Forms.Core.UnitTests
Assert.False (enteraction.Invoked);
Assert.True (exitaction.Invoked);
}
+
+ [Test]
+ // https://bugzilla.xamarin.com/show_bug.cgi?id=32896
+ public void SettersWithBindingsUnappliedIfConditionIsFalse()
+ {
+ var conditionbp = BindableProperty.Create("foo", typeof(string), typeof(BindableObject), null);
+ var setterbp = BindableProperty.Create("bar", typeof(string), typeof(BindableObject), null);
+ var element = new MockElement();
+ var trigger = new Trigger(typeof(VisualElement))
+ {
+ Property = conditionbp,
+ Value = "foobar",
+ Setters = {
+ new Setter { Property = setterbp, Value = new Binding(".", source: "Qux") },
+ }
+ };
+
+ element.SetValue(setterbp, "default");
+ element.Triggers.Add(trigger);
+ Assume.That(element.GetValue(setterbp), Is.EqualTo("default"));
+
+ //sets the condition to true
+ element.SetValue(conditionbp, "foobar");
+ Assume.That(element.GetValue(setterbp), Is.EqualTo("Qux"));
+
+ //unsets the condition
+ element.SetValue(conditionbp, "baz");
+ Assert.That(element.GetValue(setterbp), Is.EqualTo("default"));
+ }
}
} \ No newline at end of file