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);
        }
Пример #2
0
            /// <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);
        }
Пример #4
0
 /// <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;
 }
Пример #5
0
 /// <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)
 {
 }