예제 #1
0
        public void AppendToStream(BinaryStream stream)
        {
            stream.AppendInt(Id);
            stream.AppendInt((int)Type);
            stream.AppendLong(Owner.Eid);

            var sourceEid = Source?.Eid ?? 0L;

            stream.AppendLong(sourceEid);

            var timer = Timer;

            if (timer != null)
            {
                stream.AppendInt((int)timer.Interval.TotalMilliseconds);
                stream.AppendInt((int)timer.Elapsed.TotalMilliseconds);
            }
            else
            {
                stream.AppendInt(0);
                stream.AppendInt(0);
            }

            stream.AppendInt(PropertyModifiers.Count());

            foreach (var property in PropertyModifiers)
            {
                property.AppendToPacket(stream);
            }
        }
예제 #2
0
        public void CalculateChangeHandlesAllPossibleValues(PropertyModifiers oldValue, PropertyModifiers newValue)
        {
            var sut = new PropertyModifiersChangeTable();

            Action action = () => sut.CalculateChange(oldValue, newValue);

            action.Should().NotThrow();
        }
예제 #3
0
        public void ApplyRobotPropertyModifiers(ref ItemPropertyModifier modifier)
        {
            var modifiers = PropertyModifiers.GetOrEmpty(modifier.Field);

            foreach (var m in modifiers)
            {
                ParentRobot?.GetPropertyModifier(m).Modify(ref modifier);
            }
        }
예제 #4
0
        // @formatter:on — enable formatter after this line
        public void CalculateChangeReturnsExpectedValue(
            PropertyModifiers oldModifiers,
            PropertyModifiers newModifiers,
            SemVerChangeType expected)
        {
            var sut = new PropertyModifiersChangeTable();

            var actual = sut.CalculateChange(oldModifiers, newModifiers);

            actual.Should().Be(expected);
        }
예제 #5
0
        public async Task ModifiersReturnsExpectedValue(string modifiers, PropertyModifiers expected)
        {
            var declaringType = Substitute.For <IClassDefinition>();

            var node = await TestNode
                       .FindNode <PropertyDeclarationSyntax>(PropertyDefinitionCode.BuildClassPropertyWithModifiers(modifiers))
                       .ConfigureAwait(false);

            var sut = new PropertyDefinition(declaringType, node);

            sut.Modifiers.Should().Be(expected);
        }
예제 #6
0
        public void ApplyTo(ref ItemPropertyModifier propertyModifier, AggregateField modifierField)
        {
            if (!EnableModifiers)
            {
                return;
            }

            foreach (var modifier in PropertyModifiers.Where(pp => pp.Field == modifierField))
            {
                modifier.Modify(ref propertyModifier);
            }
        }
        public void CalculateChangesReturnsResultsForAddedElementDefinitions(PropertyModifiers modifiers,
                                                                             SemVerChangeType expected)
        {
            var oldItems = Array.Empty <IPropertyDefinition>();
            var newItem  = new TestPropertyDefinition().Set(x =>
            {
                x.IsVisible = true;
                x.Modifiers = modifiers;
            });
            var newItems = new List <IPropertyDefinition>
            {
                newItem
            };
            var options      = ComparerOptions.Default;
            var matchResults = new MatchResults <IPropertyDefinition>(Array.Empty <IPropertyDefinition>(),
                                                                      newItems);

            Service <IPropertyEvaluator>().FindMatches(oldItems, newItems).Returns(matchResults);

            var actual = SUT.CalculateChanges(oldItems, newItems, options).ToList();

            actual.Should().HaveCount(1);
            actual[0].ChangeType.Should().Be(expected);
        }
예제 #8
0
 /// <summary>
 /// Instantiates a new PropertyValue with the specified value and prefix modifier.
 /// </summary>
 public PropertyValue(object value, PropertyModifiers modifier)
 {
     Value    = value;
     Modifier = modifier;
 }
예제 #9
0
 public IEnumerable <AggregateField> GetPropertyModifiers()
 {
     return(PropertyModifiers.SelectMany(g => g));
 }