public void FahClientUnitRunData_CopyConstructor_Test() { // Arrange var data = new FahClientUnitRunData { FramesObserved = 50, CoreVersion = "1.23", ProjectID = 1, ProjectRun = 2, ProjectClone = 3, ProjectGen = 4, WorkUnitResult = WorkUnitResult.FINISHED_UNIT, FrameDataDictionary = new Dictionary <int, WorkUnitFrameData> { { 1, new WorkUnitFrameData { ID = 1 } } } }; // Act var copy = new FahClientUnitRunData(data); // Assert Assert.AreEqual(data.FramesObserved, copy.FramesObserved); Assert.AreEqual(data.CoreVersion, copy.CoreVersion); Assert.AreEqual(data.ProjectID, copy.ProjectID); Assert.AreEqual(data.ProjectRun, copy.ProjectRun); Assert.AreEqual(data.ProjectClone, copy.ProjectClone); Assert.AreEqual(data.ProjectGen, copy.ProjectGen); Assert.AreEqual(data.WorkUnitResult, copy.WorkUnitResult); Assert.AreNotSame(data.FrameDataDictionary, copy.FrameDataDictionary); Assert.AreNotSame(data.FrameDataDictionary[1], copy.FrameDataDictionary[1]); Assert.AreEqual(data.FrameDataDictionary[1].ID, copy.FrameDataDictionary[1].ID); }
/// <summary> /// Creates a new <see cref="UnitRunData"/> object from the information contained in the <see cref="UnitRun"/> object. /// </summary> protected override UnitRunData OnGetUnitRunData(UnitRun unitRun) { var unitRunData = new FahClientUnitRunData(); var frameDataDictionary = new Dictionary <int, WorkUnitFrameData>(); foreach (var line in unitRun.LogLines) { switch (line.LineType) { case LogLineType.WorkUnitWorking: unitRunData.UnitStartTimeStamp = line.TimeStamp; unitRunData.WorkUnitResult = Internal.WorkUnitResult.None; break; case LogLineType.WorkUnitFrame: if (unitRunData.UnitStartTimeStamp == null) { unitRunData.UnitStartTimeStamp = line.TimeStamp; } if (line.Data != null && !(line.Data is LogLineDataParserError)) { unitRunData.FramesObserved++; if (line.Data is WorkUnitFrameData frameData) { // Make a copy so UnitRunData is not holding a reference to the same // WorkUnitFrameData instance as the LogLine it was sourced from. frameDataDictionary.TryAdd(frameData.ID, new WorkUnitFrameData(frameData)); } } break; case LogLineType.WorkUnitCoreVersion: if (line.Data != null && !(line.Data is LogLineDataParserError)) { unitRunData.CoreVersion = (string)line.Data; } break; case LogLineType.WorkUnitProject: var projectData = (WorkUnitProjectData)line.Data; unitRunData.ProjectID = projectData.ProjectID; unitRunData.ProjectRun = projectData.ProjectRun; unitRunData.ProjectClone = projectData.ProjectClone; unitRunData.ProjectGen = projectData.ProjectGen; break; case LogLineType.WorkUnitCoreReturn: unitRunData.WorkUnitResult = (string)line.Data; if (unitRunData.WorkUnitResult == Internal.WorkUnitResult.INTERRUPTED || unitRunData.WorkUnitResult == Internal.WorkUnitResult.UNKNOWN_ENUM) { unitRunData.FramesObserved = 0; } break; } } Internal.CommonRunDataAggregator.CalculateFrameDataDurations(frameDataDictionary); unitRunData.FrameDataDictionary = frameDataDictionary; return(unitRunData); }
public void FahClientUnitRunData_CopyConstructor_OtherIsNull_Test() { // Act var copy = new FahClientUnitRunData(null); // Assert Assert.AreEqual(0, copy.FramesObserved); Assert.AreEqual(null, copy.CoreVersion); Assert.AreEqual(0, copy.ProjectID); Assert.AreEqual(0, copy.ProjectRun); Assert.AreEqual(0, copy.ProjectClone); Assert.AreEqual(0, copy.ProjectGen); Assert.AreEqual(null, copy.WorkUnitResult); Assert.AreEqual(null, copy.FrameDataDictionary); }
/// <summary> /// Initializes a new instance of the <see cref="FahClientUnitRunData"/> class. /// </summary> /// <param name="other">The other instance from which data will be copied.</param> public FahClientUnitRunData(FahClientUnitRunData other) : base(other) { //if (other == null) return; }
/// <summary> /// Initializes a new instance of the <see cref="FahClientUnitRunData"/> class. /// </summary> /// <param name="other">The other instance from which data will be copied.</param> public FahClientUnitRunData(FahClientUnitRunData other) : base(other) { }