77 using Microsoft . ApplicationInsights . Extensibility . Implementation ;
88 using Microsoft . VisualStudio . TestTools . UnitTesting ;
99 using Assert = Xunit . Assert ;
10-
1110
1211 [ TestClass ]
1312 public class MetricTelemetryTest
@@ -32,18 +31,24 @@ public void EventTelemetryReturnsNonNullContext()
3231 Assert . NotNull ( item . Context ) ;
3332 }
3433
34+ #pragma warning disable CS0618
3535 [ TestMethod ]
3636 public void MetricTelemetrySuppliesConstructorThatTakesNameAndValueToSimplifyAdvancedScenarios ( )
3737 {
3838 var instance = new MetricTelemetry ( "Test Metric" , 4.2 ) ;
39+
3940 Assert . Equal ( "Test Metric" , instance . Name ) ;
4041 Assert . Equal ( 4.2 , instance . Value ) ;
4142 }
43+ #pragma warning restore CS0618
4244
4345 [ TestMethod ]
4446 public void MetricTelemetrySuppliesPropertiesForCustomerToSendAggregatedMetric ( )
4547 {
48+ #pragma warning disable CS0618
4649 var instance = new MetricTelemetry ( "Test Metric" , 4.2 ) ;
50+ #pragma warning restore CS0618
51+
4752 instance . Count = 5 ;
4853 instance . Min = 1.2 ;
4954 instance . Max = 6.4 ;
@@ -54,38 +59,15 @@ public void MetricTelemetrySuppliesPropertiesForCustomerToSendAggregatedMetric()
5459 Assert . Equal ( 0.5 , instance . StandardDeviation ) ;
5560 }
5661
57- [ TestMethod ]
58- public void MeasurementMetricTelemetrySerializesToJsonCorrectly ( )
59- {
60- var expected = new MetricTelemetry ( ) ;
61- expected . Name = "My Page" ;
62- expected . Value = 42 ;
63- expected . Properties . Add ( "Property1" , "Value1" ) ;
64-
65- var item = TelemetryItemTestHelper . SerializeDeserializeTelemetryItem < MetricTelemetry , AI . MetricData > ( expected ) ;
66-
67- // NOTE: It's correct that we use the v1 name here, and therefore we test against it.
68- Assert . Equal ( item . name , AI . ItemType . Metric ) ;
69-
70- Assert . Equal ( typeof ( AI . MetricData ) . Name , item . data . baseType ) ;
71- Assert . Equal ( 2 , item . data . baseData . ver ) ;
72- Assert . Equal ( 1 , item . data . baseData . metrics . Count ) ;
73- Assert . Equal ( expected . Name , item . data . baseData . metrics [ 0 ] . name ) ;
74- Assert . Equal ( AI . DataPointType . Measurement , item . data . baseData . metrics [ 0 ] . kind ) ;
75- Assert . Equal ( expected . Value , item . data . baseData . metrics [ 0 ] . value ) ;
76- Assert . False ( item . data . baseData . metrics [ 0 ] . count . HasValue ) ;
77- Assert . False ( item . data . baseData . metrics [ 0 ] . min . HasValue ) ;
78- Assert . False ( item . data . baseData . metrics [ 0 ] . max . HasValue ) ;
79- Assert . False ( item . data . baseData . metrics [ 0 ] . stdDev . HasValue ) ;
80- Assert . Equal ( expected . Properties . ToArray ( ) , item . data . baseData . properties . ToArray ( ) ) ;
81- }
82-
8362 [ TestMethod ]
8463 public void AggregateMetricTelemetrySerializesToJsonCorrectly ( )
8564 {
8665 var expected = new MetricTelemetry ( ) ;
66+
8767 expected . Name = "My Page" ;
68+ #pragma warning disable CS0618
8869 expected . Value = 42 ;
70+ #pragma warning restore CS0618
8971 expected . Count = 5 ;
9072 expected . Min = 1.2 ;
9173 expected . Max = 6.4 ;
@@ -100,7 +82,9 @@ public void AggregateMetricTelemetrySerializesToJsonCorrectly()
10082 Assert . Equal ( 1 , item . data . baseData . metrics . Count ) ;
10183 Assert . Equal ( expected . Name , item . data . baseData . metrics [ 0 ] . name ) ;
10284 Assert . Equal ( AI . DataPointType . Aggregation , item . data . baseData . metrics [ 0 ] . kind ) ;
85+ #pragma warning disable CS0618
10386 Assert . Equal ( expected . Value , item . data . baseData . metrics [ 0 ] . value ) ;
87+ #pragma warning restore CS0618
10488 Assert . Equal ( expected . Count . Value , item . data . baseData . metrics [ 0 ] . count . Value ) ;
10589 Assert . Equal ( expected . Min . Value , item . data . baseData . metrics [ 0 ] . min . Value ) ;
10690 Assert . Equal ( expected . Max . Value , item . data . baseData . metrics [ 0 ] . max . Value ) ;
@@ -109,6 +93,45 @@ public void AggregateMetricTelemetrySerializesToJsonCorrectly()
10993 Assert . Equal ( expected . Properties . ToArray ( ) , item . data . baseData . properties . ToArray ( ) ) ;
11094 }
11195
96+ [ TestMethod ]
97+ public void MetricTelemetrySuppliesConstructorThatAllowsToFullyPopulateAggregationData ( )
98+ {
99+ var instance = new MetricTelemetry (
100+ name : "Test Metric" ,
101+ count : 4 ,
102+ sum : 40 ,
103+ min : 5 ,
104+ max : 15 ,
105+ standardDeviation : 4.2 ) ;
106+
107+ Assert . Equal ( "Test Metric" , instance . Name ) ;
108+ Assert . Equal ( 4 , instance . Count ) ;
109+ Assert . Equal ( 40 , instance . Sum ) ;
110+ Assert . Equal ( 5 , instance . Min ) ;
111+ Assert . Equal ( 15 , instance . Max ) ;
112+ Assert . Equal ( 4.2 , instance . StandardDeviation ) ;
113+ }
114+
115+ [ TestMethod ]
116+ public void MetricTelemetrySuppliesPropertiesForCustomerToSendAggregionData ( )
117+ {
118+ var instance = new MetricTelemetry ( ) ;
119+
120+ instance . Name = "Test Metric" ;
121+ instance . Count = 4 ;
122+ instance . Sum = 40 ;
123+ instance . Min = 5.0 ;
124+ instance . Max = 15.0 ;
125+ instance . StandardDeviation = 4.2 ;
126+
127+ Assert . Equal ( "Test Metric" , instance . Name ) ;
128+ Assert . Equal ( 4 , instance . Count ) ;
129+ Assert . Equal ( 40 , instance . Sum ) ;
130+ Assert . Equal ( 5 , instance . Min ) ;
131+ Assert . Equal ( 15 , instance . Max ) ;
132+ Assert . Equal ( 4.2 , instance . StandardDeviation ) ;
133+ }
134+
112135 [ TestMethod ]
113136 public void MetricTelemetrySerializesStructuredIKeyCorrectlyPreservingCaseOfPrefix ( )
114137 {
@@ -165,17 +188,19 @@ public void SerializeWritesNullValuesAsExpectedByEndpoint()
165188 Assert . Equal ( 2 , item . data . baseData . ver ) ;
166189 }
167190
191+ #pragma warning disable CS0618
168192 [ TestMethod ]
169- public void SerializeReplacesNaNValueOn0 ( )
193+ public void SanitizeReplacesNaNValueOn0 ( )
170194 {
171195 MetricTelemetry original = new MetricTelemetry ( "test" , double . NaN ) ;
172196 ( ( ITelemetry ) original ) . Sanitize ( ) ;
173197
174198 Assert . Equal ( 0 , original . Value ) ;
175199 }
200+ #pragma warning restore CS0618
176201
177202 [ TestMethod ]
178- public void SerializeReplacesNaNMinOn0 ( )
203+ public void SanitizeReplacesNaNMinOn0 ( )
179204 {
180205 MetricTelemetry original = new MetricTelemetry { Min = double . NaN } ;
181206 ( ( ITelemetry ) original ) . Sanitize ( ) ;
@@ -184,7 +209,7 @@ public void SerializeReplacesNaNMinOn0()
184209 }
185210
186211 [ TestMethod ]
187- public void SerializeReplacesNaNMaxOn0 ( )
212+ public void SanitizeReplacesNaNMaxOn0 ( )
188213 {
189214 MetricTelemetry original = new MetricTelemetry { Max = double . NaN } ;
190215 ( ( ITelemetry ) original ) . Sanitize ( ) ;
@@ -193,12 +218,55 @@ public void SerializeReplacesNaNMaxOn0()
193218 }
194219
195220 [ TestMethod ]
196- public void SerializeReplacesNaNStandardDeviationOn0 ( )
221+ public void SanitizeReplacesNaNStandardDeviationOn0 ( )
197222 {
198223 MetricTelemetry original = new MetricTelemetry { StandardDeviation = double . NaN } ;
199224 ( ( ITelemetry ) original ) . Sanitize ( ) ;
200225
201226 Assert . Equal ( 0 , original . StandardDeviation . Value ) ;
202227 }
228+
229+ [ TestMethod ]
230+ public void SanitizeReplacesNaNSumOn0 ( )
231+ {
232+ MetricTelemetry original = new MetricTelemetry ( ) ;
233+ original . Name = "Test" ;
234+ original . Sum = double . NaN ;
235+
236+ ( ( ITelemetry ) original ) . Sanitize ( ) ;
237+
238+ Assert . Equal ( 0 , original . Sum ) ;
239+ }
240+
241+ [ TestMethod ]
242+ public void SanitizeReplacesNegativeCountOn1 ( )
243+ {
244+ MetricTelemetry original = new MetricTelemetry ( ) ;
245+ original . Name = "Test" ;
246+ original . Count = - 5 ; ;
247+
248+ ( ( ITelemetry ) original ) . Sanitize ( ) ;
249+
250+ Assert . Equal ( 1 , original . Count ) ;
251+ }
252+
253+ [ TestMethod ]
254+ public void SanitizeReplacesZeroCountOn1 ( )
255+ {
256+ MetricTelemetry original = new MetricTelemetry ( ) ;
257+ original . Name = "Test" ;
258+
259+ ( ( ITelemetry ) original ) . Sanitize ( ) ;
260+
261+ Assert . Equal ( 1 , original . Count ) ;
262+ }
263+
264+ [ TestMethod ]
265+ public void CountPropertyGetterReturnsOneIfNoValueIsSet ( )
266+ {
267+ MetricTelemetry telemetry = new MetricTelemetry ( ) ;
268+
269+ Assert . Equal ( 1 , telemetry . Count ) ;
270+ }
203271 }
204272}
0 commit comments