Esempio n. 1
0
            public void AssignsCorrectChainsMultiVersion()
            {
                var orderer = new FieldOrderer
                              (
                    WarcraftVersion.Wrath,
                    DBCInspector.GetVersionRelevantProperties(WarcraftVersion.Wrath, typeof(TestDBCRecordWithMultipleMovedFields))
                    .ToList()
                              );

                var propertyA = DBCInspector.GetRecordProperties(typeof(TestDBCRecordWithMultipleMovedFields))
                                .First(p => p.Name == nameof(TestDBCRecordWithMultipleMovedFields.FieldA));

                var propertyC = DBCInspector.GetRecordProperties(typeof(TestDBCRecordWithMultipleMovedFields))
                                .First(p => p.Name == nameof(TestDBCRecordWithMultipleMovedFields.FieldC));

                var propertyD = DBCInspector.GetRecordProperties(typeof(TestDBCRecordWithMultipleMovedFields))
                                .First(p => p.Name == nameof(TestDBCRecordWithMultipleMovedFields.FieldD));

                var propertyE = DBCInspector.GetRecordProperties(typeof(TestDBCRecordWithMultipleMovedFields))
                                .First(p => p.Name == nameof(TestDBCRecordWithMultipleMovedFields.FieldE));

                Assert.That(orderer.PrecedenceChains[propertyA].Select(p => p.Name), Is.EquivalentTo(MultiMoveBCDependencyChainFieldA));
                Assert.That(orderer.PrecedenceChains[propertyC].Select(p => p.Name), Is.EquivalentTo(MultiMoveBCDependencyChainFieldC));
                Assert.That(orderer.PrecedenceChains[propertyD].Select(p => p.Name), Is.EquivalentTo(MultiMoveWrathDependencyChainFieldD));
                Assert.That(orderer.PrecedenceChains[propertyE].Select(p => p.Name), Is.EquivalentTo(MultiMoveBCDependencyChainFieldE));
            }
Esempio n. 2
0
            public void IncludesArrayFieldsWhenMultipleVersionsArePresent()
            {
                var recordProperties = DBCInspector.GetVersionRelevantProperties(WarcraftVersion.Classic, typeof(TestDBCRecordWithVersionedArray));

                var recordPropertyNames = recordProperties.Select(p => p.Name);

                Assert.That(recordPropertyNames, Is.EquivalentTo(VersionedArrayRecordNames));
            }
Esempio n. 3
0
            public void GetsAValidVersionedPropertySetForRemovedProperties()
            {
                var recordProperties = DBCInspector.GetVersionRelevantProperties(WarcraftVersion.Cataclysm, typeof(TestDBCRecord));

                var recordPropertyNames = recordProperties.Select(p => p.Name);

                Assert.That(recordPropertyNames, Is.EquivalentTo(TestRecordCataPropertyNames));
            }
Esempio n. 4
0
            public void DoesNotThrowWhenThereAreNoCyclicalDependencies()
            {
                var orderer = new FieldOrderer
                              (
                    WarcraftVersion.BurningCrusade,
                    DBCInspector.GetVersionRelevantProperties(WarcraftVersion.BurningCrusade, typeof(TestDBCRecordWithMultipleMovedFields))
                    .ToList()
                              );

                Assert.DoesNotThrow(() => orderer.ReorderProperties());
            }
Esempio n. 5
0
            public void ThrowsWhenThereAreCyclicalDependencies()
            {
                var orderer = new FieldOrderer
                              (
                    WarcraftVersion.BurningCrusade,
                    DBCInspector.GetVersionRelevantProperties(WarcraftVersion.BurningCrusade, typeof(TestDBCRecordWithInvalidReentrantMovedFields))
                    .ToList()
                              );

                Assert.Throws <InvalidOperationException>(() => orderer.ReorderProperties());
            }
Esempio n. 6
0
            public void ReturnsCorrectOrderForMultiMove()
            {
                var orderer = new FieldOrderer
                              (
                    WarcraftVersion.BurningCrusade,
                    DBCInspector.GetVersionRelevantProperties(WarcraftVersion.BurningCrusade, typeof(TestDBCRecordWithMultipleMovedFields))
                    .ToList()
                              );

                Assert.That(orderer.ReorderProperties().Select(p => p.Name), Is.EquivalentTo(MultiMovedFieldsBCAfterMove));
            }
Esempio n. 7
0
            public void AssignsMovingProperties()
            {
                var orderer = new FieldOrderer
                              (
                    WarcraftVersion.BurningCrusade,
                    DBCInspector.GetVersionRelevantProperties(WarcraftVersion.BurningCrusade, typeof(TestDBCRecordWithSingleMovedField))
                    .ToList()
                              );

                var assignedPropertyNames = orderer.MovingProperties.Select(p => p.Key.Name);

                Assert.That(assignedPropertyNames, Is.EquivalentTo(SingleMovedFieldRecordNamesMovingFields));
            }
Esempio n. 8
0
            public void AssignsOriginalProperties()
            {
                var orderer = new FieldOrderer
                              (
                    WarcraftVersion.Classic,
                    DBCInspector.GetVersionRelevantProperties(WarcraftVersion.Classic, typeof(TestDBCRecordWithSingleMovedField))
                    .ToList()
                              );

                var assignedPropertyNames = orderer.OriginalProperties.Select(p => p.Name);

                Assert.That(assignedPropertyNames, Is.EquivalentTo(SingleMovedFieldNamesBeforeMove));
            }
Esempio n. 9
0
            public void ReturnsFalseForNonMoved()
            {
                var orderer = new FieldOrderer
                              (
                    WarcraftVersion.BurningCrusade,
                    DBCInspector.GetVersionRelevantProperties(WarcraftVersion.BurningCrusade, typeof(TestDBCRecordWithInvalidReentrantMovedFields))
                    .ToList()
                              );

                var propertyB = DBCInspector.GetRecordProperties(typeof(TestDBCRecordWithInvalidReentrantMovedFields))
                                .First(p => p.Name == nameof(TestDBCRecordWithInvalidReentrantMovedFields.FieldB));

                Assert.IsFalse(orderer.HasCyclicMoveDependency(propertyB));
            }
Esempio n. 10
0
            public void GetsCorrectChainForMultiVersionMove()
            {
                var orderer = new FieldOrderer
                              (
                    WarcraftVersion.Wrath,
                    DBCInspector.GetVersionRelevantProperties(WarcraftVersion.Wrath, typeof(TestDBCRecordWithMultipleMovedFields))
                    .ToList()
                              );

                var movedProperty = DBCInspector.GetRecordProperties(typeof(TestDBCRecordWithMultipleMovedFields))
                                    .First(p => p.Name == nameof(TestDBCRecordWithMultipleMovedFields.FieldD));

                var moveAttribute = DBCInspector.GetMostRecentPropertyMove(WarcraftVersion.Wrath, movedProperty);

                var chain = orderer.GetPrecendenceChain(moveAttribute, new List <PropertyInfo>()).Select(p => p.Name);

                Assert.That(MultiVersionDependencyChainFieldE, Is.EquivalentTo(chain));
            }
Esempio n. 11
0
            public void GetsCorrectChainForSimpleMove()
            {
                var orderer = new FieldOrderer
                              (
                    WarcraftVersion.BurningCrusade,
                    DBCInspector.GetVersionRelevantProperties(WarcraftVersion.BurningCrusade, typeof(TestDBCRecordWithSingleMovedField))
                    .ToList()
                              );

                var movedProperty = DBCInspector.GetRecordProperties(typeof(TestDBCRecordWithSingleMovedField))
                                    .First(p => p.Name == nameof(TestDBCRecordWithSingleMovedField.FieldC));

                var moveAttribute = DBCInspector.GetMostRecentPropertyMove(WarcraftVersion.BurningCrusade, movedProperty);

                var chain = orderer.GetPrecendenceChain(moveAttribute, new List <PropertyInfo>()).Select(p => p.Name);

                Assert.That(SimpleMoveDependencyChainFieldC, Is.EquivalentTo(chain));
            }
Esempio n. 12
0
            public void ReturnsCorrectOrderForMultiVersionMove()
            {
                var ordererBC = new FieldOrderer
                                (
                    WarcraftVersion.BurningCrusade,
                    DBCInspector.GetVersionRelevantProperties(WarcraftVersion.BurningCrusade, typeof(TestDBCRecordWithSingleMovedFieldMultipleVersions))
                    .ToList()
                                );

                var ordererWrath = new FieldOrderer
                                   (
                    WarcraftVersion.Wrath,
                    DBCInspector.GetVersionRelevantProperties(WarcraftVersion.Wrath, typeof(TestDBCRecordWithSingleMovedFieldMultipleVersions))
                    .ToList()
                                   );

                Assert.That(ordererBC.ReorderProperties().Select(p => p.Name), Is.EquivalentTo(SingleMovedFieldBCAfterMove));
                Assert.That(ordererWrath.ReorderProperties().Select(p => p.Name), Is.EquivalentTo(SingleMovedFieldWrathAfterMove));
            }