Browse Source

Fix bindings not being unsubscribed on Dispose.

pull/472/head
Steven Kirk 10 years ago
parent
commit
20cb202232
  1. 1
      src/Perspex.Base/PriorityLevel.cs
  2. 17
      tests/Perspex.Base.UnitTests/PerspexObjectTests_Binding.cs
  3. 3
      tests/Perspex.Base.UnitTests/packages.config

1
src/Perspex.Base/PriorityLevel.cs

@ -140,6 +140,7 @@ namespace Perspex
return Disposable.Create(() =>
{
Bindings.Remove(node);
entry.Dispose();
if (entry.Index >= ActiveBindingIndex)
{

17
tests/Perspex.Base.UnitTests/PerspexObjectTests_Binding.cs

@ -4,6 +4,7 @@
using System;
using System.Reactive.Linq;
using System.Reactive.Subjects;
using Microsoft.Reactive.Testing;
using Perspex.Data;
using Xunit;
@ -81,6 +82,22 @@ namespace Perspex.Base.UnitTests
Assert.Equal("foodefault", target.GetValue(Class1.FooProperty));
}
[Fact]
public void Observable_Is_Unsubscribed_When_Subscription_Disposed()
{
var scheduler = new TestScheduler();
var source = scheduler.CreateColdObservable<object>();
var target = new Class1();
var subscription = target.Bind(Class1.FooProperty, source);
Assert.Equal(1, source.Subscriptions.Count);
Assert.Equal(Subscription.Infinite, source.Subscriptions[0].Unsubscribe);
subscription.Dispose();
Assert.Equal(1, source.Subscriptions.Count);
Assert.Equal(0, source.Subscriptions[0].Unsubscribe);
}
[Fact]
public void Two_Way_Separate_Binding_Works()
{

3
tests/Perspex.Base.UnitTests/packages.config

@ -3,6 +3,9 @@
<package id="Rx-Core" version="2.2.5" targetFramework="net45" />
<package id="Rx-Interfaces" version="2.2.5" targetFramework="net45" />
<package id="Rx-Linq" version="2.2.5" targetFramework="net45" />
<package id="Rx-Main" version="2.2.5" targetFramework="net45" />
<package id="Rx-PlatformServices" version="2.2.5" targetFramework="net45" />
<package id="Rx-Testing" version="2.2.5" targetFramework="net45" />
<package id="Serilog" version="1.5.14" targetFramework="net45" />
<package id="xunit" version="2.1.0" targetFramework="net45" />
<package id="xunit.abstractions" version="2.0.0" targetFramework="net45" />

Loading…
Cancel
Save