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)); }
public void IncludesArrayFieldsWhenMultipleVersionsArePresent() { var recordProperties = DBCInspector.GetVersionRelevantProperties(WarcraftVersion.Classic, typeof(TestDBCRecordWithVersionedArray)); var recordPropertyNames = recordProperties.Select(p => p.Name); Assert.That(recordPropertyNames, Is.EquivalentTo(VersionedArrayRecordNames)); }
public void GetsAValidVersionedPropertySetForRemovedProperties() { var recordProperties = DBCInspector.GetVersionRelevantProperties(WarcraftVersion.Cataclysm, typeof(TestDBCRecord)); var recordPropertyNames = recordProperties.Select(p => p.Name); Assert.That(recordPropertyNames, Is.EquivalentTo(TestRecordCataPropertyNames)); }
public void DoesNotThrowWhenThereAreNoCyclicalDependencies() { var orderer = new FieldOrderer ( WarcraftVersion.BurningCrusade, DBCInspector.GetVersionRelevantProperties(WarcraftVersion.BurningCrusade, typeof(TestDBCRecordWithMultipleMovedFields)) .ToList() ); Assert.DoesNotThrow(() => orderer.ReorderProperties()); }
public void ThrowsWhenThereAreCyclicalDependencies() { var orderer = new FieldOrderer ( WarcraftVersion.BurningCrusade, DBCInspector.GetVersionRelevantProperties(WarcraftVersion.BurningCrusade, typeof(TestDBCRecordWithInvalidReentrantMovedFields)) .ToList() ); Assert.Throws <InvalidOperationException>(() => orderer.ReorderProperties()); }
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)); }
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)); }
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)); }
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)); }
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)); }
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)); }
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)); }