public void EnumVariationConvertsStringToEnum()
        {
            var client = new MockStringVariationClient();

            client.SetupStringVariation("key", "Blue", "Green");

            var result = client.EnumVariation("key", MyEnum.Blue);

            Assert.Equal(MyEnum.Green, result);
        }
        public void EnumVariationReturnsDefaultValueForNullFlagValue()
        {
            var client = new MockStringVariationClient();

            client.SetupStringVariation("key", "Blue", null);

            var defaultValue = MyEnum.Blue;
            var result       = client.EnumVariation("key", defaultValue);

            Assert.Equal(defaultValue, result);
        }
        public void EnumVariationReturnsDefaultValueForInvalidFlagValue()
        {
            var client = new MockStringVariationClient();

            client.SetupStringVariation("key", "Blue", "not-a-color");

            var defaultValue = MyEnum.Blue;
            var result       = client.EnumVariation("key", defaultValue);

            Assert.Equal(MyEnum.Blue, defaultValue);
        }
        public void EnumVariationDetailReturnsDefaultValueForNullFlagValue()
        {
            var client = new MockStringVariationClient();

            client.SetupStringVariationDetail("key", "Blue",
                                              new EvaluationDetail <string>(null, 1, EvaluationReason.FallthroughReason));

            var result   = client.EnumVariationDetail("key", MyEnum.Blue);
            var expected = new EvaluationDetail <MyEnum>(MyEnum.Blue, 1, EvaluationReason.FallthroughReason);

            Assert.Equal(expected, result);
        }
        public void EnumVariationDetailReturnsDefaultValueForInvalidFlagValue()
        {
            var client = new MockStringVariationClient();

            client.SetupStringVariationDetail("key", "Blue",
                                              new EvaluationDetail <string>("not-a-color", 1, EvaluationReason.FallthroughReason));

            var result   = client.EnumVariationDetail("key", MyEnum.Blue);
            var expected = new EvaluationDetail <MyEnum>(MyEnum.Blue, 1, EvaluationReason.ErrorReason(EvaluationErrorKind.WrongType));

            Assert.Equal(expected, result);
        }
        public void EnumVariationDetailConvertsStringToEnum()
        {
            var client = new MockStringVariationClient();

            client.SetupStringVariationDetail("key", "Blue",
                                              new EvaluationDetail <string>("Green", 1, EvaluationReason.FallthroughReason));

            var result   = client.EnumVariationDetail("key", MyEnum.Blue);
            var expected = new EvaluationDetail <MyEnum>(MyEnum.Green, 1, EvaluationReason.FallthroughReason);

            Assert.Equal(expected, result);
        }