|
|
|
@ -15,10 +15,10 @@ |
|
|
|
public class ActivatorTests |
|
|
|
{ |
|
|
|
[TestMethod] |
|
|
|
public void Activator_Should_Follow_Single_Input() |
|
|
|
public void Activator_And_Should_Follow_Single_Input() |
|
|
|
{ |
|
|
|
var inputs = new[] { new TestSubject<bool>(false) }; |
|
|
|
var target = new Activator(inputs); |
|
|
|
var target = new Activator(inputs, ActivatorMode.And); |
|
|
|
var result = new TestObserver<bool>(); |
|
|
|
|
|
|
|
target.Subscribe(result); |
|
|
|
@ -34,7 +34,7 @@ |
|
|
|
} |
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
public void Activator_Should_AND_Multiple_Inputs() |
|
|
|
public void Activator_And_Should_AND_Multiple_Inputs() |
|
|
|
{ |
|
|
|
var inputs = new[] |
|
|
|
{ |
|
|
|
@ -42,7 +42,7 @@ |
|
|
|
new TestSubject<bool>(false), |
|
|
|
new TestSubject<bool>(true), |
|
|
|
}; |
|
|
|
var target = new Activator(inputs); |
|
|
|
var target = new Activator(inputs, ActivatorMode.And); |
|
|
|
var result = new TestObserver<bool>(); |
|
|
|
|
|
|
|
target.Subscribe(result); |
|
|
|
@ -59,7 +59,7 @@ |
|
|
|
} |
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
public void Activator_Should_Unsubscribe_All_When_Input_Completes_On_False() |
|
|
|
public void Activator_And_Should_Unsubscribe_All_When_Input_Completes_On_False() |
|
|
|
{ |
|
|
|
var inputs = new[] |
|
|
|
{ |
|
|
|
@ -67,7 +67,7 @@ |
|
|
|
new TestSubject<bool>(false), |
|
|
|
new TestSubject<bool>(true), |
|
|
|
}; |
|
|
|
var target = new Activator(inputs); |
|
|
|
var target = new Activator(inputs, ActivatorMode.And); |
|
|
|
var result = new TestObserver<bool>(); |
|
|
|
|
|
|
|
target.Subscribe(result); |
|
|
|
@ -85,7 +85,7 @@ |
|
|
|
} |
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
public void Activator_Should_Not_Unsubscribe_All_When_Input_Completes_On_False() |
|
|
|
public void Activator_And_Should_Not_Unsubscribe_All_When_Input_Completes_On_True() |
|
|
|
{ |
|
|
|
var inputs = new[] |
|
|
|
{ |
|
|
|
@ -93,7 +93,7 @@ |
|
|
|
new TestSubject<bool>(false), |
|
|
|
new TestSubject<bool>(true), |
|
|
|
}; |
|
|
|
var target = new Activator(inputs); |
|
|
|
var target = new Activator(inputs, ActivatorMode.And); |
|
|
|
var result = new TestObserver<bool>(); |
|
|
|
|
|
|
|
target.Subscribe(result); |
|
|
|
@ -105,5 +105,96 @@ |
|
|
|
Assert.AreEqual(1, inputs[1].SubscriberCount); |
|
|
|
Assert.AreEqual(1, inputs[2].SubscriberCount); |
|
|
|
} |
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
public void Activator_Or_Should_Follow_Single_Input() |
|
|
|
{ |
|
|
|
var inputs = new[] { new TestSubject<bool>(false) }; |
|
|
|
var target = new Activator(inputs, ActivatorMode.Or); |
|
|
|
var result = new TestObserver<bool>(); |
|
|
|
|
|
|
|
target.Subscribe(result); |
|
|
|
Assert.IsFalse(result.GetValue()); |
|
|
|
inputs[0].OnNext(true); |
|
|
|
Assert.IsTrue(result.GetValue()); |
|
|
|
inputs[0].OnNext(false); |
|
|
|
Assert.IsFalse(result.GetValue()); |
|
|
|
inputs[0].OnNext(true); |
|
|
|
Assert.IsTrue(result.GetValue()); |
|
|
|
|
|
|
|
Assert.AreEqual(1, inputs[0].SubscriberCount); |
|
|
|
} |
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
public void Activator_Or_Should_OR_Multiple_Inputs() |
|
|
|
{ |
|
|
|
var inputs = new[] |
|
|
|
{ |
|
|
|
new TestSubject<bool>(false), |
|
|
|
new TestSubject<bool>(false), |
|
|
|
new TestSubject<bool>(true), |
|
|
|
}; |
|
|
|
var target = new Activator(inputs, ActivatorMode.Or); |
|
|
|
var result = new TestObserver<bool>(); |
|
|
|
|
|
|
|
target.Subscribe(result); |
|
|
|
Assert.IsTrue(result.GetValue()); |
|
|
|
inputs[2].OnNext(false); |
|
|
|
Assert.IsFalse(result.GetValue()); |
|
|
|
inputs[0].OnNext(true); |
|
|
|
Assert.IsTrue(result.GetValue()); |
|
|
|
|
|
|
|
Assert.AreEqual(1, inputs[0].SubscriberCount); |
|
|
|
Assert.AreEqual(1, inputs[1].SubscriberCount); |
|
|
|
Assert.AreEqual(1, inputs[2].SubscriberCount); |
|
|
|
} |
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
public void Activator_Or_Should_Unsubscribe_All_When_Input_Completes_On_True() |
|
|
|
{ |
|
|
|
var inputs = new[] |
|
|
|
{ |
|
|
|
new TestSubject<bool>(false), |
|
|
|
new TestSubject<bool>(false), |
|
|
|
new TestSubject<bool>(true), |
|
|
|
}; |
|
|
|
var target = new Activator(inputs, ActivatorMode.Or); |
|
|
|
var result = new TestObserver<bool>(); |
|
|
|
|
|
|
|
target.Subscribe(result); |
|
|
|
Assert.IsTrue(result.GetValue()); |
|
|
|
inputs[2].OnNext(false); |
|
|
|
Assert.IsFalse(result.GetValue()); |
|
|
|
inputs[0].OnNext(true); |
|
|
|
Assert.IsTrue(result.GetValue()); |
|
|
|
inputs[0].OnCompleted(); |
|
|
|
|
|
|
|
Assert.AreEqual(0, inputs[0].SubscriberCount); |
|
|
|
Assert.AreEqual(0, inputs[1].SubscriberCount); |
|
|
|
Assert.AreEqual(0, inputs[2].SubscriberCount); |
|
|
|
} |
|
|
|
|
|
|
|
[TestMethod] |
|
|
|
public void Activator_Or_Should_Not_Unsubscribe_All_When_Input_Completes_On_False() |
|
|
|
{ |
|
|
|
var inputs = new[] |
|
|
|
{ |
|
|
|
new TestSubject<bool>(false), |
|
|
|
new TestSubject<bool>(false), |
|
|
|
new TestSubject<bool>(true), |
|
|
|
}; |
|
|
|
var target = new Activator(inputs, ActivatorMode.Or); |
|
|
|
var result = new TestObserver<bool>(); |
|
|
|
|
|
|
|
target.Subscribe(result); |
|
|
|
Assert.IsTrue(result.GetValue()); |
|
|
|
inputs[2].OnNext(false); |
|
|
|
Assert.IsFalse(result.GetValue()); |
|
|
|
inputs[2].OnCompleted(); |
|
|
|
|
|
|
|
Assert.AreEqual(1, inputs[0].SubscriberCount); |
|
|
|
Assert.AreEqual(1, inputs[1].SubscriberCount); |
|
|
|
Assert.AreEqual(1, inputs[2].SubscriberCount); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|