mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-11 14:53:49 +00:00
0078399788
This makes test code more clear and reduces the number of code lines by 500.
This also simplifies debugging tests. See https://itnext.io/f-tests-as-a-replacement-for-table-driven-tests-in-go-8814a8b19e9e
While at it, consistently use t.Fatal* instead of t.Error* across tests, since t.Error*
requires more boilerplate code, which can result in additional bugs inside tests.
While t.Error* allows writing logging errors for the same, this doesn't simplify fixing
broken tests most of the time.
This is a follow-up for a9525da8a4
66 lines
1.8 KiB
Go
66 lines
1.8 KiB
Go
package unittest
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/decimal"
|
|
)
|
|
|
|
func TestParseInputValue_Failure(t *testing.T) {
|
|
f := func(input string) {
|
|
t.Helper()
|
|
|
|
_, err := parseInputValue(input, true)
|
|
if err == nil {
|
|
t.Fatalf("expecting non-nil error")
|
|
}
|
|
}
|
|
|
|
f("")
|
|
f("testfailed")
|
|
|
|
// stale doesn't support operations
|
|
f("stalex3")
|
|
}
|
|
|
|
func TestParseInputValue_Success(t *testing.T) {
|
|
f := func(input string, outputExpected []sequenceValue) {
|
|
t.Helper()
|
|
|
|
output, err := parseInputValue(input, true)
|
|
if err != nil {
|
|
t.Fatalf("unexpected error in parseInputValue: %s", err)
|
|
}
|
|
|
|
if len(outputExpected) != len(output) {
|
|
t.Fatalf("unexpected output length; got %d; want %d", len(outputExpected), len(output))
|
|
}
|
|
for i := 0; i < len(outputExpected); i++ {
|
|
if outputExpected[i].Omitted != output[i].Omitted {
|
|
t.Fatalf("unexpected Omitted field in the output\ngot\n%v\nwant\n%v", output, outputExpected)
|
|
}
|
|
if outputExpected[i].Value != output[i].Value {
|
|
if decimal.IsStaleNaN(outputExpected[i].Value) && decimal.IsStaleNaN(output[i].Value) {
|
|
continue
|
|
}
|
|
t.Fatalf("unexpeccted Value field in the output\ngot\n%v\nwant\n%v", output, outputExpected)
|
|
}
|
|
}
|
|
}
|
|
|
|
f("-4", []sequenceValue{{Value: -4}})
|
|
|
|
f("_", []sequenceValue{{Omitted: true}})
|
|
|
|
f("stale", []sequenceValue{{Value: decimal.StaleNaN}})
|
|
|
|
f("-4x1", []sequenceValue{{Value: -4}, {Value: -4}})
|
|
|
|
f("_x1", []sequenceValue{{Omitted: true}})
|
|
|
|
f("1+1x2 0.1 0.1+0.3x2 3.14", []sequenceValue{{Value: 1}, {Value: 2}, {Value: 3}, {Value: 0.1}, {Value: 0.1}, {Value: 0.4}, {Value: 0.7}, {Value: 3.14}})
|
|
|
|
f("2-1x4", []sequenceValue{{Value: 2}, {Value: 1}, {Value: 0}, {Value: -1}, {Value: -2}})
|
|
|
|
f("1+1x1 _ -4 stale 3+20x1", []sequenceValue{{Value: 1}, {Value: 2}, {Omitted: true}, {Value: -4}, {Value: decimal.StaleNaN}, {Value: 3}, {Value: 23}})
|
|
}
|