Open HenryVolkmer opened 8 months ago
Hi @HenryVolkmer, you are encodig with default precision (nanosecond) but trying to decode with other precisions. Using SetPrecision to encode and calling decoder.Next() before decoding makes the code not to fail:
package main
import (
"testing"
"time"
"github.com/influxdata/line-protocol/v2/lineprotocol"
)
func TestTime(t *testing.T) {
tests := map[string]lineprotocol.Precision{
"nano": lineprotocol.Nanosecond,
"micro": lineprotocol.Microsecond,
"second": lineprotocol.Second,
}
for label, p := range tests {
enc := lineprotocol.Encoder{}
enc.SetPrecision(p)
enc.StartLine("a_measurement")
enc.AddField("temp", lineprotocol.MustNewValue(int64(10)))
enc.EndLine(time.Now())
// explicite from bytes to string and from string to bytes
str := string(enc.Bytes())
dec := lineprotocol.NewDecoderWithBytes([]byte(str))
dec.Next()
ti, err := dec.Time(p, time.Time{})
if err != nil {
panic(err)
}
if ti.IsZero() {
t.Errorf("decoder.Time for precision %s should not be zero", label)
}
}
}
hi,
this test fails, any ideas?