Exemple #1
0
        /// <summary>
        /// Determines whether this Spot instance can be placed within the requested
        /// break or container.
        /// </summary>
        /// <param name="spot">The spot.</param>
        /// <param name="progSmoothBreaks">The prog smooth breaks.</param>
        /// <param name="breakPositionRules">The break position rules.</param>
        /// <param name="respectSpotTime">if set to <c>true</c>, respect spot time.</param>
        /// <param name="validBreaksForSpotTime">The valid breaks for spot time.</param>
        /// <param name="isRestrictedSpotTime">if set to <c>true</c>, is restricted spot time.</param>
        /// <param name="progSmoothBreak">The prog smooth break.</param>
        /// <returns>
        ///   <c>true</c> if this Spot instance can be placed within the break or container requested; otherwise, <c>false</c>.
        /// </returns>
        public static bool CanSpotBePlacedInRequestedBreakOrContainer(
            Spot spot,
            IReadOnlyList <SmoothBreak> progSmoothBreaks,
            SpotPositionRules breakPositionRules,
            bool respectSpotTime,
            IOrderedEnumerable <SmoothBreak> validBreaksForSpotTime,
            bool isRestrictedSpotTime,
            SmoothBreak progSmoothBreak)
        {
            var canAddSpotService = CanAddSpotService.Factory(progSmoothBreak);

            string spotBreakOrContainerRequest = spot.BreakRequest;

            if (ContainerReference.TryParse(spotBreakOrContainerRequest, out ContainerReference cr))
            {
                spotBreakOrContainerRequest = cr.ToString();
            }

            if (canAddSpotService.CanAddSpotWithBreakRequest(spotBreakOrContainerRequest, progSmoothBreaks, breakPositionRules))
            {
                return(true);
            }
            else if (IsBreakWithinSpotTimeRestriction(respectSpotTime, isRestrictedSpotTime, validBreaksForSpotTime, progSmoothBreak))
            {
                return(true);
            }

            return(false);
        }
        public void InvalidContainerReferenceValueThrows(string value)
        {
            // Arrange

            // Act
            Action act = () => { ContainerReference labrat = value; };

            // Assert
            _ = act.Should().Throw <ArgumentException>(null);
        }
        public void AssigningAStringToAContainerReference(string value, string expected)
        {
            // Arrange

            // Act
            ContainerReference result = value;

            // Assert
            _ = result.ToString().Should().BeEquivalentTo(expected, becauseArgs: null);
        }
        public void TryParse_BreakExternalReferenceIsNotContainer_ReturnsFalse(string breakExternalReference)
        {
            // Arrange

            // Act
            bool result = ContainerReference.TryParse(breakExternalReference, out ContainerReference _);

            // Assert
            _ = result.Should().BeFalse(null);
        }
        public void TryParse_BreakExternalReferenceIsContainer_ReturnsTrue(string breakExternalReference)
        {
            // Arrange

            // Act
            bool result = ContainerReference.TryParse(breakExternalReference, out ContainerReference cr);

            // Assert
            _ = result.Should().BeTrue(null);
            _ = cr.ToString().Should().Be("break-1", null);
        }
        public void PositionProperty(string value, int expectedValue)
        {
            // Arrange
            ContainerReference labrat = value;

            // Act
            var result = labrat.ContainerNumber;

            // Assert
            _ = result.Should().Be(expectedValue, null);
        }
        public void StringToContainerReference_InequalityOperator(string value)
        {
            // Arrange
            ContainerReference subject = value;

            // Act
            bool result = subject != "break-99-98";

            // Assert
            _ = result.Should().BeTrue(becauseArgs: null);
        }
        public void AssigningContainerReferenceToAString(string value, string expected)
        {
            // Arrange
            ContainerReference subject = value;

            // Act
            string result = subject;

            // Assert
            _ = result.Should().BeEquivalentTo(expected, becauseArgs: null);
        }
        public void ContainerReferenceToString_EqualityMethod(string value, string expected)
        {
            // Arrange
            ContainerReference subject = value;

            // Act
            bool result = subject.Equals(expected);

            // Assert
            _ = result.Should().BeTrue(becauseArgs: null);
        }
Exemple #10
0
        public IContainerReference From(MapCoordinate mc)
        {
            if (mapCache.TryGet(mc, out IContainerReference retval))
            {
                return(retval);
            }

            var r = new ContainerReference <MapCoordinate>(ContainerReferenceType.Map, mc, ContainerType.Unlimited);

            mapCache.Add(mc, r);
            return(r);
        }
        public void AssignmentIsNewInstance(string value)
        {
            // Arrange
            ContainerReference left  = value;
            ContainerReference right = value;

            // Act
            /* Empty */

            // Assert
            _ = left.Should().NotBeSameAs(right, becauseArgs: null);
        }
        public static Recommendation InContainer(
            this Recommendation recommendation,
            ContainerReference value
            )
        {
            ContainerReference expected = recommendation.ExternalBreakNo;

            _ = expected.Should()
                .Be(value, becauseArgs: null);

            return(recommendation);
        }
Exemple #13
0
        public IContainerReference From(IItem item)
        {
            var key = Tuple.Create(item.Id, item.ItemType.Container);

            if (itemCache.TryGet(key, out IContainerReference retval))
            {
                return(retval);
            }

            var r = new ContainerReference <int>(ContainerReferenceType.Item, item.Id, item.ItemType.Container);

            itemCache.Add(key, r);
            return(r);
        }
Exemple #14
0
            public bool Equals(ContainerReference <T> other)
            {
                if (ReferenceEquals(null, other))
                {
                    return(false);
                }

                if (ReferenceEquals(this, other))
                {
                    return(true);
                }

                return(entityId.Equals(other.entityId) && ReferenceType == other.ReferenceType);
            }
        public void ContainerReferenceToStringAsObject_EqualityMethod(
            string left,
            string right
            )
        {
            // Arrange
            ContainerReference subjectLeft  = left;
            object             subjectRight = right;

            // Act
            bool result = subjectLeft.Equals(subjectRight);

            // Assert
            _ = result.Should().BeTrue(becauseArgs: null);
        }
Exemple #16
0
        /// <inheritdoc/>
        public override bool CanAddSpotWithBreakRequest(
            string spotPositionRequest,
            IReadOnlyList <SmoothBreak> programmeBreaks,
            SpotPositionRules breakPositionRules)
        {
            if (String.IsNullOrWhiteSpace(spotPositionRequest))
            {
                return(true);
            }

            if (ContainerReference.TryParse(
                    _smoothBreak.TheBreak.ExternalBreakRef,
                    out ContainerReference breakContainerReference))
            {
                if (breakContainerReference.Equals(spotPositionRequest))
                {
                    return(true);
                }
            }

            if (!Int32.TryParse(spotPositionRequest, out int requestedContainerNumber))
            {
                return(false);
            }

            // Note: this should never happen but it's better to check to stop
            // index out of range exceptions.
            if (programmeBreaks.Count == 0)
            {
                return(false);
            }

            // All smooth breaks have a link back to their smooth programme, so
            // just use the first one.
            var breakContainer = programmeBreaks[0].SmoothProgramme.BreakContainers;

            requestedContainerNumber = GetActualBreakPositionFromRelativePosition(
                requestedContainerNumber,
                breakContainer.Count);

            return(CanAddSpotAtBreakPosition(
                       requestedContainerNumber,
                       breakContainerReference.ContainerNumber,
                       breakPositionRules));
        }
Exemple #17
0
    public void AddContainer(StoreObjectReference container)
    {
        bool inList = false;

        foreach (ContainerReference reference in containersInStorage)
        {
            if (reference.container.objectID == container.objectID)
            {
                reference.quantity++;
                inList = true;
            }
        }
        if (!inList)
        {
            ContainerReference newReference = new ContainerReference(container);
            containersInStorage.Add(newReference);
        }
    }
Exemple #18
0
 public ContainerReference_s(ContainerReference reference)
 {
     containerID    = reference.container.objectID;
     containerSubID = reference.container.subID;
     quantity       = reference.quantity;
 }
 public static bool IsContainerReference(BreakExternalReference breakExternalReference) =>
 ContainerReference.TryParse(breakExternalReference, out var _);