public void ListeningForNumberValueWorksAsExpected() { IFeatureStateHolder holder = null; _repository.FeatureState("1").FeatureUpdateHandler += (sender, fs) => { holder = fs; }; _repository.Notify(SSEResultState.Features, EncodeFeatures(78.3, version: 2, type: FeatureValueType.NUMBER)); Assert.AreEqual(FeatureValueType.NUMBER, holder.Type); Assert.AreEqual(78.3, holder.NumberValue); }
public void ListeningForAStringValueWorksAsExpected() { IFeatureStateHolder holder = null; _repository.FeatureState("1").FeatureUpdateHandler += (sender, fs) => { holder = fs; }; _repository.Notify(SSEResultState.Features, EncodeFeatures("fred", version: 2, type: FeatureValueType.STRING)); Assert.AreEqual(FeatureValueType.STRING, holder.Type); Assert.AreEqual("fred", holder.StringValue); Assert.AreEqual("fred", _repository.FeatureState("1").Value); }
public void ListeningForAJsonValueWorksAsExpected() { IFeatureStateHolder holder = null; _repository.FeatureState("1").FeatureUpdateHandler += (sender, fs) => { holder = fs; }; _repository.Notify(SSEResultState.Features, EncodeFeatures("fred", version: 2, type: FeatureValueType.JSON)); Assert.AreEqual(FeatureValueType.JSON, holder.Type); Assert.AreEqual("fred", holder.JsonValue); Assert.IsNull(holder.StringValue); Assert.IsNull(holder.BooleanValue); Assert.IsNull(holder.NumberValue); }
public void ListeningForAFeatureThatDoesntExistAndThenTriggeringItTriggersHandler() { IFeatureStateHolder holder = null; var hCount = 0; _repository.FeatureState("1").FeatureUpdateHandler += (sender, fs) => { holder = fs; hCount++; }; _repository.Notify(SSEResultState.Features, EncodeFeatures()); Assert.AreEqual(1, hCount); Assert.IsNotNull(holder); Assert.AreEqual("1", holder.Key); Assert.AreEqual(true, holder.Exists); Assert.AreEqual(1, holder.Version); Assert.AreEqual(false, holder.BooleanValue); }
public void ChangingFeatureValueWithSameVersionButDifferentValueTriggersEventHandler() { IFeatureStateHolder holder = null; var hCount = 0; _repository.FeatureState("1").FeatureUpdateHandler += (sender, fs) => { holder = fs; Console.WriteLine($"{fs}"); hCount++; }; _repository.Notify(SSEResultState.Features, EncodeFeatures()); // false, 1, boolean _repository.Notify(SSEResultState.Features, EncodeFeatures(true, 1, FeatureValueType.BOOLEAN)); Assert.AreEqual(2, hCount); Assert.IsNotNull(holder); Assert.AreEqual(true, holder.BooleanValue); }
public void ChangingFeatureValueFromOriginalTriggersEventHandler() { IFeatureStateHolder holder = null; var hCount = 0; _repository.FeatureState("1").FeatureUpdateHandler += (sender, fs) => { holder = fs; Console.WriteLine($"{fs}"); hCount++; }; _repository.Notify(SSEResultState.Features, EncodeFeatures()); _repository.Notify(SSEResultState.Features, EncodeFeatures()); // same again _repository.Notify(SSEResultState.Features, EncodeFeatures(version: 2)); // same again, new version but same value _repository.Notify(SSEResultState.Features, EncodeFeatures(true, version: 3)); Assert.AreEqual(2, hCount); Assert.IsNotNull(holder); Assert.AreEqual(true, holder.BooleanValue); var feature = new FeatureState(id: "1", key: "1", version: 4, value: false, type: FeatureValueType.BOOLEAN); _repository.Notify(SSEResultState.Feature, JsonConvert.SerializeObject(feature)); Assert.AreEqual(3, hCount); Assert.AreEqual(false, holder.BooleanValue); }
static void FeatureChanged(object sender, IFeatureStateHolder holder) { Console.WriteLine($"Received type {holder.Key}: {holder.StringValue}"); }