Esempio n. 1
0
        public void Complex()
        {
            var barFooConversion = new[] { _barFooConversion, _barConversion, _barSkillConversion };
            var localSource      = new ModifierSource.Local.Given();
            var skillSource      = new ModifierSource.Local.Skill();

            _sut.NewBatchUpdate()
            .AddModifier(_bar, Form.BaseAdd, 3)
            .AddModifier(_bar, Form.BaseAdd, 2, localSource)
            .AddModifier(barFooConversion, Form.BaseAdd, 50, skillSource)
            .AddModifier(barFooConversion, Form.BaseAdd, 30)
            .AddModifier(barFooConversion, Form.BaseAdd, 30)
            .AddModifier(_barFooGain, Form.BaseAdd, 20)
            .AddModifier(_foo, Form.Increase, 50)
            .AddModifier(_foo, Form.Increase, 50, localSource)
            .AddModifier(_foo, Form.BaseAdd, 1)
            .AddModifier(_foo, Form.BaseAdd, 2, localSource)
            .DoUpdate();

            var globalPath = (3 * (1 + 0.2) + 1) * 1.5;
            var localPath  = (2 * (1 + 0.2) + 2) * 2;

            Assert.AreEqual(new NodeValue(110), GetValue(_barConversion));
            Assert.AreEqual(new NodeValue(50), GetValue(_barSkillConversion));
            Assert.AreEqual(new NodeValue(0), GetValue(_bar));
            Assert.AreEqual(new NodeValue(20), GetValue(_barFooGain));
            Assert.AreEqual(new NodeValue(100), GetValue(_barFooConversion));
            Assert.AreEqual(new NodeValue(globalPath + localPath), GetValue(_foo));
        }
        public void CalculateReturnsCorrectResult(int valueCount)
        {
            var expected = new NodeValue(2 * valueCount);

            var stats  = new IStat[] { new StatStub(), new StatStub() };
            var source = new ModifierSource.Local.Given();
            var path   = new PathDefinition(source, stats[1]);
            var sut    = CreateSut(stats[0], path);

            var paths = new[]
Esempio n. 3
0
        public void BuildReturnsCorrectModifiers()
        {
            var conditionBuilder = Mock.Of <IConditionBuilder>();

            var value                     = Mock.Of <IValue>();
            var valueBuilder              = Mock.Of <IValueBuilder>();
            var convertedValueBuilder     = Mock.Of <IValueBuilder>();
            var statConvertedValueBuilder = Mock.Of <IValueBuilder>();
            var formConvertedValueBuilder = Mock.Of <IValueBuilder>(b => b.Build() == value);

            var stats  = new[] { Mock.Of <IStat>() };
            var source = new ModifierSource.Local.Given();

            IValueBuilder StatConvertValue(IValueBuilder v) =>
            v == convertedValueBuilder ? statConvertedValueBuilder : v;

            var statBuilderMock = new Mock <IStatBuilder>();

            statBuilderMock.Setup(b => b.Build()).Returns((stats, _ => source, StatConvertValue));
            var statBuilderWithCondition = statBuilderMock.Object;
            var statBuilder          = Mock.Of <IStatBuilder>();
            var convertedStatBuilder =
                Mock.Of <IStatBuilder>(s => s.WithCondition(conditionBuilder) == statBuilderWithCondition);

            var form = Form.More;

            IValueBuilder FormConvertValue(IValueBuilder v) =>
            v == statConvertedValueBuilder ? formConvertedValueBuilder : v;

            var formBuilderMock = new Mock <IFormBuilder>();

            formBuilderMock.Setup(b => b.Build()).Returns((form, FormConvertValue));
            var formBuilder = formBuilderMock.Object;

            var entry = EmptyEntry
                        .WithStat(statBuilder)
                        .WithForm(formBuilder)
                        .WithValue(valueBuilder)
                        .WithCondition(conditionBuilder);

            var input = CreateResult(
                new[] { entry },
                s => s == statBuilder ? convertedStatBuilder : s,
                v => v == valueBuilder ? convertedValueBuilder : v);

            var result = input.Build(Source);

            Assert.AreEqual(1, result.Count);
            var item = result[0];

            Assert.AreEqual(stats, item.Stats);
            Assert.AreEqual(form, item.Form);
            Assert.AreEqual(value, item.Value);
            Assert.AreSame(source, item.Source);
        }