File size: 5,129 Bytes
18a519f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | using NUnit.Framework;
using UnityEditor.Performance.ProfileAnalyzer;
using UnityEngine;
public class ProfileAnalysisAPITests : ProfileAnalyzerBaseTest
{
[Test]
public void ProfileAnalysis_SetRange_ModifiesFirstLastIndices([Values(0, 2)] int first, [Values(150, 300)] int last)
{
var analysis = new ProfileAnalysis();
analysis.SetRange(first, last);
Assert.IsTrue(first == analysis.GetFrameSummary().first);
Assert.IsTrue(first == analysis.GetFrameSummary().minFrameIndex);
Assert.IsTrue(first == analysis.GetFrameSummary().maxFrameIndex);
Assert.IsTrue(last == analysis.GetFrameSummary().last);
}
[Test]
public void ProfileAnalysis_UpdateSummary_AddsFramesToSummary()
{
var analysis = new ProfileAnalysis();
var frameSummary = analysis.GetFrameSummary();
Assert.IsTrue(0 == frameSummary.frames.Count);
analysis.UpdateSummary(0, 0.1f);
Assert.IsTrue(1 == frameSummary.frames.Count);
}
[Test]
public void ProfileAnalysis_SetupMarkers_GeneratesExpectedValues()
{
var analysis = new ProfileAnalysis();
var marker = new MarkerData("Test Marker");
marker.presentOnFrameCount = 1;
for (int i = 0; i < 10; ++i)
{
var frameTime = new FrameTime(i, 0.1f * i, 1);
marker.frames.Add(frameTime);
}
analysis.AddMarker(marker);
analysis.SetupMarkers();
Assert.IsTrue(marker.count == 0);
Assert.IsTrue(marker.firstFrameIndex == -1);
Assert.IsTrue(marker.frames.Count == 10);
Assert.IsTrue(marker.lastFrame == -1);
Assert.IsTrue(marker.maxDepth == 0);
Assert.IsTrue(marker.maxFrameIndex == 9);
Assert.IsTrue(marker.maxIndividualFrameIndex == 0);
Assert.IsTrue(marker.medianFrameIndex == 4);
Assert.IsTrue(marker.minDepth == 0);
Assert.IsTrue(marker.minFrameIndex == 0);
Assert.IsTrue(marker.minIndividualFrameIndex == 0);
Assert.IsTrue(marker.msAtMedian == 0);
Assert.IsTrue(marker.msMean == 0);
Assert.IsTrue(marker.msMinIndividual == float.MaxValue);
Assert.IsTrue(marker.msMaxIndividual == float.MinValue);
Assert.IsTrue(marker.msMin == 0);
Assert.IsTrue(marker.msTotal == 0);
Assert.IsTrue(marker.name == "Test Marker");
Assert.IsTrue(marker.presentOnFrameCount == 1);
//Handle floats "approximately"
Assert.IsTrue(Mathf.Approximately(marker.msLowerQuartile, 0.2f));
Assert.IsTrue(Mathf.Approximately(marker.msMax, 0.9f));
Assert.IsTrue(Mathf.Approximately(marker.msUpperQuartile, 0.6f));
Assert.IsTrue(Mathf.Approximately(marker.msMedian, 0.4f));
}
[Test]
public void ProfileAnalysis_SetupMarkerBuckets_GeneratesExpectedValues()
{
var analysis = new ProfileAnalysis();
var marker = new MarkerData("Test Marker");
marker.presentOnFrameCount = 1;
int range = 10;
float offset = 0.000001f; // Without the offset rounding errors can shift a value into the preceeding bucket
for (int i = 0; i <= range; ++i)
{
float value = ((float)i / (float)range);
if (i != 0 && i != range)
value += offset;
var frameTime = new FrameTime(i, value, 1);
marker.frames.Add(frameTime);
}
analysis.AddMarker(marker);
analysis.SetupMarkers();
analysis.SetupMarkerBuckets();
Assert.IsTrue(marker.buckets[0] == 1);
Assert.IsTrue(marker.buckets[1] == 0);
Assert.IsTrue(marker.buckets[2] == 1);
Assert.IsTrue(marker.buckets[3] == 0);
Assert.IsTrue(marker.buckets[4] == 1);
Assert.IsTrue(marker.buckets[5] == 0);
Assert.IsTrue(marker.buckets[6] == 1);
Assert.IsTrue(marker.buckets[7] == 0);
Assert.IsTrue(marker.buckets[8] == 1);
Assert.IsTrue(marker.buckets[9] == 0);
Assert.IsTrue(marker.buckets[10] == 1);
Assert.IsTrue(marker.buckets[11] == 0);
Assert.IsTrue(marker.buckets[12] == 1);
Assert.IsTrue(marker.buckets[13] == 0);
Assert.IsTrue(marker.buckets[14] == 1);
Assert.IsTrue(marker.buckets[15] == 0);
Assert.IsTrue(marker.buckets[16] == 1);
Assert.IsTrue(marker.buckets[17] == 0);
Assert.IsTrue(marker.buckets[18] == 1);
Assert.IsTrue(marker.buckets[19] == 1); // max value would fall into the next bucket but is clamped to here.
}
[Test]
public void ProfileAnalysis_SetupFrameBuckets_GeneratesExpectedValues()
{
var analysis = new ProfileAnalysis();
var marker = new MarkerData("Test Marker");
marker.presentOnFrameCount = 1;
for (int i = 0; i < 20; ++i)
{
analysis.UpdateSummary(i, 1.0f * i);
}
analysis.SetupFrameBuckets(20);
var summary = analysis.GetFrameSummary();
for (int i = 0; i < summary.buckets.Length; ++i)
{
Assert.IsTrue(1 == summary.buckets[i]);
}
}
}
|