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
|
package input
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/johnkerl/miller/v6/pkg/cli"
)
func TestRecordFromDKVPLine(t *testing.T) {
readerOptions := cli.DefaultReaderOptions()
cli.FinalizeReaderOptions(&readerOptions) // compute IPS, IFS -> IPSRegex, IFSRegex
reader, err := NewRecordReaderDKVP(&readerOptions, 1)
assert.NotNil(t, reader)
assert.Nil(t, err)
line := ""
record, err := recordFromDKVPLine(reader, line)
assert.NotNil(t, record)
assert.Nil(t, err)
assert.Equal(t, int64(0), record.FieldCount)
line = "a=1,b=2,c=3"
record, err = recordFromDKVPLine(reader, line)
assert.NotNil(t, record)
assert.Nil(t, err)
assert.Equal(t, int64(3), record.FieldCount)
assert.NotNil(t, record.Head)
assert.NotNil(t, record.Head.Next)
assert.NotNil(t, record.Head.Next.Next)
assert.Nil(t, record.Head.Next.Next.Next)
assert.Equal(t, record.Head.Key, "a")
assert.Equal(t, record.Head.Next.Key, "b")
assert.Equal(t, record.Head.Next.Next.Key, "c")
// Default is to dedupe to a=1,b=2,b_2=3
line = "a=1,b=2,b=3"
record, err = recordFromDKVPLine(reader, line)
assert.NotNil(t, record)
assert.Nil(t, err)
assert.Equal(t, int64(3), record.FieldCount)
assert.NotNil(t, record.Head)
assert.NotNil(t, record.Head.Next)
assert.NotNil(t, record.Head.Next.Next)
assert.Nil(t, record.Head.Next.Next.Next)
assert.Equal(t, record.Head.Key, "a")
assert.Equal(t, record.Head.Next.Key, "b")
assert.Equal(t, record.Head.Next.Next.Key, "b_2")
line = "a,b,c"
record, err = recordFromDKVPLine(reader, line)
assert.NotNil(t, record)
assert.Nil(t, err)
assert.Equal(t, int64(3), record.FieldCount)
assert.NotNil(t, record.Head)
assert.NotNil(t, record.Head.Next)
assert.NotNil(t, record.Head.Next.Next)
assert.Nil(t, record.Head.Next.Next.Next)
assert.Equal(t, record.Head.Key, "1")
assert.Equal(t, record.Head.Next.Key, "2")
assert.Equal(t, record.Head.Next.Next.Key, "3")
}
|