diff --git a/Source/ViewModels/RequirementComparisonViewModel.cs b/Source/ViewModels/RequirementComparisonViewModel.cs index fcab7965..897fa6d9 100644 --- a/Source/ViewModels/RequirementComparisonViewModel.cs +++ b/Source/ViewModels/RequirementComparisonViewModel.cs @@ -71,7 +71,13 @@ internal override void OnShowHexValuesChanged(ModelPropertyChangedEventArgs e) private void UpdateOtherDefinition(NumberFormat numberFormat) { - OtherDefinition = BuildDefinition(CompareRequirement, numberFormat); + OtherDefinition = CompareRequirement != null ? BuildDefinition(CompareRequirement, numberFormat) : ""; + } + + protected override void UpdateDefinition(NumberFormat numberFormat) + { + base.UpdateDefinition(numberFormat); + UpdateOtherDefinition(numberFormat); } } } diff --git a/Source/ViewModels/RequirementGroupViewModel.cs b/Source/ViewModels/RequirementGroupViewModel.cs index 486a244a..cd833907 100644 --- a/Source/ViewModels/RequirementGroupViewModel.cs +++ b/Source/ViewModels/RequirementGroupViewModel.cs @@ -183,10 +183,7 @@ private static void UpdateDependencies(List list) requirement.IsValueDependentOnPreviousRequirement = isValueDependentOnPreviousRequirement; if (requirement.Requirement == null) - { - isValueDependentOnPreviousRequirement = false; continue; - } switch (requirement.Requirement.Type) { @@ -203,7 +200,7 @@ private static void UpdateDependencies(List list) } } - private void AppendRequirements(List list, RequirementEx left, RequirementEx right, NumberFormat numberFormat, IDictionary notes) + private static void AppendRequirements(List list, RequirementEx left, RequirementEx right, NumberFormat numberFormat, IDictionary notes) { if (right == null) { diff --git a/Source/ViewModels/RequirementViewModel.cs b/Source/ViewModels/RequirementViewModel.cs index d2454084..0421919f 100644 --- a/Source/ViewModels/RequirementViewModel.cs +++ b/Source/ViewModels/RequirementViewModel.cs @@ -128,9 +128,9 @@ internal virtual void OnShowHexValuesChanged(ModelPropertyChangedEventArgs e) UpdateDefinition((bool)e.NewValue ? NumberFormat.Hexadecimal : NumberFormat.Decimal); } - private void UpdateDefinition(NumberFormat numberFormat) + protected virtual void UpdateDefinition(NumberFormat numberFormat) { - Definition = BuildDefinition(Requirement, numberFormat); + Definition = Requirement != null ? BuildDefinition(Requirement, numberFormat) : ""; } protected string BuildDefinition(Requirement requirement, NumberFormat numberFormat) diff --git a/Tests/ViewModels/RequirementGroupViewModelTests.cs b/Tests/ViewModels/RequirementGroupViewModelTests.cs index 3600d777..45ecaa03 100644 --- a/Tests/ViewModels/RequirementGroupViewModelTests.cs +++ b/Tests/ViewModels/RequirementGroupViewModelTests.cs @@ -38,8 +38,17 @@ class RequirementGroupViewModelTests "unless(byte(0x001234) == 7)|OrNext byte(0x001234) == 7\nunless(byte(0x001235) == 6)|unless(byte(0x001235) == 6)")] [TestCase("0xH1234=7_0xH1235=6", "N:0xH1234=7_0xH1235=6", // AndNext a,b => a,b "byte(0x001234) == 7|AndNext byte(0x001234) == 7\nbyte(0x001235) == 6|byte(0x001235) == 6")] + [TestCase("A:0xH1234*100_A:100*1_M:1=333", "A:0xH1234*100_M:101=333", // A*100+100+1=333 => A*100+101=333 + "byte(0x001234) * 100 + |byte(0x001234) * 100 + \n100 * 1 + |\nmeasured(1 == 333)|measured(101 == 333)")] + [TestCase("A:0xH1234*100_M:101=333", "A:0xH1234*100_A:100*1_M:1=333", // A*100+101=333 => A*100+100+1=333 + "byte(0x001234) * 100 + |byte(0x001234) * 100 + \n|100 * 1 + \nmeasured(101 == 333)|measured(1 == 333)")] public void TestDiff(string leftSerialized, string rightSerialized, string expected) { + var mockSettings = new Mock(); + mockSettings.Setup(s => s.HexValues).Returns(false); + ServiceRepository.Reset(); + ServiceRepository.Instance.RegisterInstance(mockSettings.Object); + var notes = new Dictionary(); var builder = new AchievementBuilder();