public void CalculateSignatureSizeValue_IFArgumentSatisfied_SignatureSizeLengthAndWidthEqualReturnValuesFromManager() { _mockView.SetupProperty(r => r.PageCount, 2); _mockView.SetupProperty(r => r.PagesPerSignature, "2pg"); _mockView.SetupProperty(r => r.PageSizeLength, 5); _mockView.SetupProperty(r => r.PageSizeWidth, 10); _mockView.SetupProperty(r => r.SignatureSizeWidth); _mockView.SetupProperty(r => r.Bleeds); _mockView.SetupProperty(r => r.SignatureSizeLength);; SignatureSizeLength sigLength = new SignatureSizeLength("2pg", 4, 5, 5); SignatureSizeWidth sigWidth = new SignatureSizeWidth("2pg", 4, 5, 5); _mockSystemVariablesManager.Setup(r => r.ReturnNudVariables()) .Returns(new PrintingAppRepository.SystemVariables.Models.SystemVariables()); _mockImpositionCalculatorManager.Setup(r => r.ReturnSignatureSizeLength(It.IsAny <SignatureSizeLength>())) .Returns(5); _mockImpositionCalculatorManager.Setup(r => r.ReturnSignatureSizeWidth(It.IsAny <SignatureSizeWidth>())) .Returns(15.2F); _mockView.Raise(r => r.CalculateSignatureSize += null, new EventArgs()); Assert.IsTrue(_mockView.Object.SignatureSizeLength == _mockImpositionCalculatorManager.Object.ReturnSignatureSizeLength(sigLength) && _mockView.Object.SignatureSizeWidth == _mockImpositionCalculatorManager.Object.ReturnSignatureSizeWidth(sigWidth)); }
/// <summary> /// Calculate the SignatureSizeLength. Depending on the PagesPerSignature variables, it can /// either be calculated via an automatic multiplier or it can be manually set. Please see /// below for more information /// /// The default is set to'2pg', this is set in the model when null is passed through /// as the multiplier in lengthParameters. /// If the PagesPerSignature is either a 'right angle' or 'right angle album', then it must /// be set manually as there are no correlation between the lengths. /// If the PagesPerSignature is equal to 'tear apart one', the multipliers can be calculated /// as it is the page / 4 /// If PagerPerSignature is either 'parallel' or 'standard', then the default multipliers /// will work fine. /// </summary> /// <param name="lengthParamaters"></param> /// <returns></returns> public float ReturnSignatureSizeLength(SignatureSizeLength lengthParamaters) { if (lengthParamaters.PagesPerSignature.Contains("right angle")) { //No need for the 8pg right angle as the default will work switch (lengthParamaters.PagesPerSignature.ToLower()) { case "12pg right angle": case "32pg right angle": lengthParamaters.ValueOneMultiplier = 3; lengthParamaters.ValueTwoMultiplier = 3; lengthParamaters.ValueThreeMultipler = 3; break; case "16pg right angle": case "24pg right angle": lengthParamaters.ValueOneMultiplier = 2; lengthParamaters.ValueTwoMultiplier = 2; lengthParamaters.ValueThreeMultipler = 2; break; case "16pg right angle album": lengthParamaters.ValueOneMultiplier = 4; lengthParamaters.ValueTwoMultiplier = 4; lengthParamaters.ValueThreeMultipler = 4; break; } } else if (lengthParamaters.PagesPerSignature.Contains("tear apart")) { //Regex only pulls ints int amountOfPages = int.Parse(Regex.Match(lengthParamaters.PagesPerSignature, "\\d+") .Value); int allMultipliers = amountOfPages / 4; lengthParamaters.ValueOneMultiplier = allMultipliers; lengthParamaters.ValueTwoMultiplier = allMultipliers; lengthParamaters.ValueThreeMultipler = allMultipliers; } return((lengthParamaters.Length * lengthParamaters.ValueOneMultiplier) + (lengthParamaters.HeadTrim * lengthParamaters.ValueTwoMultiplier) + (lengthParamaters.FootTrim * lengthParamaters.ValueThreeMultipler)); }