File: helperV2_test.go

package info (click to toggle)
golang-github-linkedin-goavro 2.10.1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 944 kB
  • sloc: makefile: 8
file content (103 lines) | stat: -rw-r--r-- 2,726 bytes parent folder | download
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// Copyright [2019] LinkedIn Corp. Licensed under the Apache License, Version
// 2.0 (the "License"); you may not use this file except in compliance with the
// License.  You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

package goavro

import (
	"bytes"
	"testing"
)

func newCodecUsingV2(tb testing.TB, schema string) *Codec {
	tb.Helper()
	codec, err := NewCodec(schema)
	if err != nil {
		tb.Fatal(err)
	}
	return codec
}

func nativeFromAvroUsingV2(tb testing.TB, avroBlob []byte) ([]interface{}, *Codec) {
	tb.Helper()
	ocf, err := NewOCFReader(bytes.NewReader(avroBlob))
	if err != nil {
		tb.Fatal(err)
	}

	var nativeData []interface{}
	for ocf.Scan() {
		datum, err := ocf.Read()
		if err != nil {
			break // Read error sets OCFReader error
		}
		nativeData = append(nativeData, datum)
	}
	if err := ocf.Err(); err != nil {
		tb.Fatal(err)
	}
	return nativeData, ocf.Codec()
}

func binaryFromNativeUsingV2(tb testing.TB, codec *Codec, nativeData []interface{}) [][]byte {
	tb.Helper()
	binaryData := make([][]byte, len(nativeData))
	for i, datum := range nativeData {
		binaryDatum, err := codec.BinaryFromNative(nil, datum)
		if err != nil {
			tb.Fatal(err)
		}
		binaryData[i] = binaryDatum
	}
	return binaryData
}

func textFromNativeUsingV2(tb testing.TB, codec *Codec, nativeData []interface{}) [][]byte {
	tb.Helper()
	textData := make([][]byte, len(nativeData))
	for i, nativeDatum := range nativeData {
		textDatum, err := codec.TextualFromNative(nil, nativeDatum)
		if err != nil {
			tb.Fatal(err)
		}
		textData[i] = textDatum
	}
	return textData
}

func nativeFromBinaryUsingV2(tb testing.TB, codec *Codec, binaryData [][]byte) []interface{} {
	tb.Helper()
	nativeData := make([]interface{}, len(binaryData))
	for i, binaryDatum := range binaryData {
		nativeDatum, buf, err := codec.NativeFromBinary(binaryDatum)
		if err != nil {
			tb.Fatal(err)
		}
		if len(buf) > 0 {
			tb.Fatalf("BinaryDecode ought to have returned nil buffer: %v", buf)
		}
		nativeData[i] = nativeDatum
	}
	return nativeData
}

func nativeFromTextUsingV2(tb testing.TB, codec *Codec, textData [][]byte) []interface{} {
	tb.Helper()
	nativeData := make([]interface{}, len(textData))
	for i, textDatum := range textData {
		nativeDatum, buf, err := codec.NativeFromTextual(textDatum)
		if err != nil {
			tb.Fatal(err)
		}
		if len(buf) > 0 {
			tb.Fatalf("TextDecode ought to have returned nil buffer: %v", buf)
		}
		nativeData[i] = nativeDatum
	}
	return nativeData
}