Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
 static void FeatureChanged(object sender, IFeatureStateHolder holder)
 {
     Console.WriteLine($"Received type {holder.Key}: {holder.StringValue}");
 }