Skip to content

Commit

Permalink
add report tests (#500)
Browse files Browse the repository at this point in the history
  • Loading branch information
johnfercher authored Dec 10, 2024
1 parent 0640af4 commit 6923857
Show file tree
Hide file tree
Showing 2 changed files with 121 additions and 1 deletion.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,6 @@ ignore.sh

.vscode

node_modules/*
node_modules/*

report-test-demo.txt
118 changes: 118 additions & 0 deletions pkg/metrics/metrics_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -264,3 +264,121 @@ func TestSizeMetric_String(t *testing.T) {
// Assert
assert.Equal(t, "keyMetric -> 2000.00b", s)
}

func TestReport_String(t *testing.T) {
t.Run("when formating, then do it correctly", func(t *testing.T) {
// Arrange
report := &metrics.Report{
TimeMetrics: []metrics.TimeMetric{
{
Key: "keyMetric",
Times: []*metrics.Time{
{
Value: 60,
Scale: metrics.Nano,
},
{
Value: 100,
Scale: metrics.Milli,
},
},
Avg: &metrics.Time{
Value: 100,
Scale: metrics.Milli,
},
},
},
}

// Act
s := report.String()

// Assert
assert.Equal(t, "keyMetric -> avg: 100.00ms, executions: [60.00ns, 100.00ms]", s)
})
}

func TestReport_Normalize(t *testing.T) {
t.Run("when normalize, do it correctly", func(t *testing.T) {
// Arrange
report := &metrics.Report{
TimeMetrics: []metrics.TimeMetric{
{
Key: "keyMetric",
Times: []*metrics.Time{
{
Value: 6000,
Scale: metrics.Nano,
},
{
Value: 2000,
Scale: metrics.Micro,
},
},
Avg: &metrics.Time{
Value: 100,
Scale: metrics.Milli,
},
},
},
SizeMetric: metrics.SizeMetric{
Key: "keyMetric",
Size: metrics.Size{
Value: 2000,
Scale: metrics.Byte,
},
},
}

// Act
normalized := report.Normalize()

// Assert
assert.Equal(t, 2.0, normalized.SizeMetric.Size.Value)
assert.Equal(t, metrics.KiloByte, normalized.SizeMetric.Size.Scale)
assert.Equal(t, 6.0, normalized.TimeMetrics[0].Times[0].Value)
assert.Equal(t, metrics.Micro, normalized.TimeMetrics[0].Times[0].Scale)
assert.Equal(t, 2.0, normalized.TimeMetrics[0].Times[1].Value)
assert.Equal(t, metrics.Milli, normalized.TimeMetrics[0].Times[1].Scale)
})
}

func TestReport_Save(t *testing.T) {
t.Run("when saving, then do it correctly", func(t *testing.T) {
// Arrange
report := &metrics.Report{
TimeMetrics: []metrics.TimeMetric{
{
Key: "keyMetric",
Times: []*metrics.Time{
{
Value: 6000,
Scale: metrics.Nano,
},
{
Value: 2000,
Scale: metrics.Micro,
},
},
Avg: &metrics.Time{
Value: 100,
Scale: metrics.Milli,
},
},
},
SizeMetric: metrics.SizeMetric{
Key: "keyMetric",
Size: metrics.Size{
Value: 2000,
Scale: metrics.Byte,
},
},
}

// Act
err := report.Save("report-test-demo.txt")

// Assert
assert.NoError(t, err)
})
}

0 comments on commit 6923857

Please sign in to comment.