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[]
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); }