public void ProcProdSched_ReadInvalidQuantityValues() { // Testing reading an invalid quantity value var filepath = TestCommon.TestHelper.TestFileFolder + "\\Neg_ProcessProductionSchedule_InvalidQuantityValue.xml"; var xmlBytes = System.IO.File.ReadAllBytes(filepath); var testObject = new ProcessProductionSchedule(xmlBytes); MaterialRequirement materialReq = testObject.ProductionSchedules[0]. ProductionRequests[0].SegmentRequirements[0].MaterialRequirements[0]; QuantityValue quantityDouble = materialReq.Quantities[0]; QuantityValue quantityBoolean = materialReq.Quantities[1]; QuantityValue quantityInt = materialReq.Quantities[2]; // To make sure the raw values have been received as expected: Assert.AreEqual("41fs.9", quantityDouble.RawQuantityString); Assert.AreEqual("faflse", quantityBoolean.RawQuantityString); Assert.AreEqual("0r3", quantityInt.RawQuantityString); // Double TestCommon.TestHelper.AssertInvalidOperationException(() => { quantityDouble.TryParseValueAsXmlDouble(); }, "Failed to parse double"); // Boolean TestCommon.TestHelper.AssertInvalidOperationException(() => { quantityBoolean.TryParseValueAsXmlBoolean(); }, "Failed to parse boolean"); // Int32 (int) TestCommon.TestHelper.AssertInvalidOperationException(() => { quantityInt.TryParseValueAsXmlInt(); }, "Failed to parse int"); // Int64 (long) TestCommon.TestHelper.AssertInvalidOperationException(() => { // Parsing the same value as for Int32 quantityInt.TryParseValueAsXmlLong(); }, "Failed to parse long"); }
public void ProcProdSched_Write() { // Serialising, validating and deserialising byte[] xmlData = CreateObjectForTestWrite().ToXmlBytes(); Validate(xmlData); ProcessProductionSchedule testObject2 = new ProcessProductionSchedule(xmlData); // Assert creation time TestCommon.TestHelper.AssertDateTime(ParseDateTimeInUtc("2019-05-09T12:20:19Z"), testObject2.CreationDateTime); ProductionSchedule schedule = testObject2.ProductionSchedules[0]; // Assert request count Assert.AreEqual(2, schedule.ProductionRequests.Count); // Asserting a production request ProductionRequest request1 = schedule.ProductionRequests[0]; Assert.AreEqual(2, request1.SegmentRequirements.Count); // Asserting identifier Assert.AreEqual("some-id", request1.Identifier.Value); // Asserting a hierarchy scope Assert.AreEqual("psc3", request1.HierarchyScopeObj.EquipmentIdentifier.Value); Assert.AreEqual(EquipmentElementLevelType.ProcessCell, request1.HierarchyScopeObj.EquipmentElementLevel); // Asserting a segment requirement SegmentRequirement segReq = request1.SegmentRequirements[0]; Assert.AreEqual("1", segReq.ProcessSegmentIdentifier.Value); AssertDateTime(ParseDateTimeInUtc("2019-05-09T13:36:02Z"), segReq.EarliestStartTime.Value); AssertDateTime(ParseDateTimeInUtc("2019-05-09T13:37:02Z"), segReq.LatestEndTime.Value); Assert.AreEqual(1, segReq.MaterialRequirements.Count); Assert.AreEqual(1, segReq.EquipmentRequirements.Count); // Asserting nested segment requirement SegmentRequirement segReqNested = segReq.SegmentRequirements[0]; AssertDateTime(ParseDateTimeInUtc("2019-08-29T15:31:38Z"), segReqNested.EarliestStartTime.Value); // Asserting equipment requirement EquipmentRequirement eqReq = segReq.EquipmentRequirements[0]; Assert.AreEqual(1, eqReq.Quantities.Count); Assert.IsTrue(eqReq.Quantities[0].TryParseValueAsXmlBoolean()); MaterialRequirement matReq = segReq.MaterialRequirements[0]; // Asserting material definition ID Assert.AreEqual(1, matReq.MaterialDefinitionIdentifiers.Count); Assert.AreEqual("slag", matReq.MaterialDefinitionIdentifiers[0].Value); // Asserting a material lot ID Assert.AreEqual(1, matReq.MaterialLotIdentifiers.Count); Assert.AreEqual("my-lot-1", matReq.MaterialLotIdentifiers[0].Value); // Asserting material use Assert.AreEqual(MaterialUseType.Produced, matReq.MaterialUse.Value); // Asserting a material quantity Assert.AreEqual(1, matReq.Quantities.Count); QuantityValue quantity = matReq.Quantities[0]; Assert.AreEqual("12.2", quantity.RawQuantityString); Assert.AreEqual(12.2, quantity.TryParseValueAsXmlDouble(), 0.001); Assert.AreEqual("t", quantity.UnitOfMeasure); Assert.AreEqual(DataType.TypeType.doubleXml, quantity.DataType.Type); Assert.AreEqual("my-mat-key", quantity.Key.Value); // Asserting an assembly requirement Assert.AreEqual(1, matReq.AssemblyRequirements.Count); Assert.AreEqual("Ni", matReq.AssemblyRequirements[0].MaterialDefinitionIdentifiers[0].Value); }