testutil

package
v2.35.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 24, 2021 License: Apache-2.0, BSD-3-Clause, MIT Imports: 6 Imported by: 0

Documentation

Overview

Package testutil contains helpers to test and validate custom Beam Schema coders.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type SchemaCoder

type SchemaCoder struct {

	// CmpOptions to pass into the round trip comparison
	CmpOptions cmp.Options
	// contains filtered or unexported fields
}

SchemaCoder helps validate custom schema coders.

func (*SchemaCoder) Register

func (v *SchemaCoder) Register(rt reflect.Type, encF, decF interface{})

Register adds additional custom types not under test to both the under test and default schema coders.

func (*SchemaCoder) Validate

func (v *SchemaCoder) Validate(t T, rt reflect.Type, encF, decF, schema interface{}, values interface{})

Validate is a test utility to validate custom schema coders generate beam schema encoded bytes.

Validate accepts the reflect.Type to register, factory functions for encoding and decoding, an anonymous struct type equivalent to the encoded format produced and consumed by the factory produced functions and test values. Test values must be either a struct, pointer to struct, or a slice where each element is a struct or pointer to struct.

TODO(lostluck): Improve documentation. TODO(lostluck): Abstract into a configurable struct, to handle

Validate will register the under test factories and generate an encoder and decoder function. These functions will be re-used for all test values. This emulates coders being re-used for all elements within a bundle.

Validate mutates the SchemaCoderValidator, so the SchemaCoderValidator may not be used more than once.

type T

type T interface {
	Helper()
	Run(string, func(*testing.T)) bool
	Errorf(string, ...interface{})
	Failed() bool
	FailNow()
}

T is an interface to facilitate testing the tester. The methods need to match the one's we're using of *testing.T.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL