// Code generated by protoc-gen-go. DO NOT EDIT.
// source: tests.proto

package google_cloud_conformance_bigtable_v2

import (
	fmt "fmt"
	math "math"

	proto "github.com/golang/protobuf/proto"
	v2 "google.golang.org/genproto/googleapis/bigtable/v2"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

type TestFile struct {
	ReadRowsTests        []*ReadRowsTest `protobuf:"bytes,1,rep,name=read_rows_tests,json=readRowsTests,proto3" json:"read_rows_tests,omitempty"`
	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
	XXX_unrecognized     []byte          `json:"-"`
	XXX_sizecache        int32           `json:"-"`
}

func (m *TestFile) Reset()         { *m = TestFile{} }
func (m *TestFile) String() string { return proto.CompactTextString(m) }
func (*TestFile) ProtoMessage()    {}
func (*TestFile) Descriptor() ([]byte, []int) {
	return fileDescriptor_e49b496f4919bda1, []int{0}
}

func (m *TestFile) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_TestFile.Unmarshal(m, b)
}
func (m *TestFile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_TestFile.Marshal(b, m, deterministic)
}
func (m *TestFile) XXX_Merge(src proto.Message) {
	xxx_messageInfo_TestFile.Merge(m, src)
}
func (m *TestFile) XXX_Size() int {
	return xxx_messageInfo_TestFile.Size(m)
}
func (m *TestFile) XXX_DiscardUnknown() {
	xxx_messageInfo_TestFile.DiscardUnknown(m)
}

var xxx_messageInfo_TestFile proto.InternalMessageInfo

func (m *TestFile) GetReadRowsTests() []*ReadRowsTest {
	if m != nil {
		return m.ReadRowsTests
	}
	return nil
}

type ReadRowsTest struct {
	Description          string                           `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"`
	Chunks               []*v2.ReadRowsResponse_CellChunk `protobuf:"bytes,2,rep,name=chunks,proto3" json:"chunks,omitempty"`
	Results              []*ReadRowsTest_Result           `protobuf:"bytes,3,rep,name=results,proto3" json:"results,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                         `json:"-"`
	XXX_unrecognized     []byte                           `json:"-"`
	XXX_sizecache        int32                            `json:"-"`
}

func (m *ReadRowsTest) Reset()         { *m = ReadRowsTest{} }
func (m *ReadRowsTest) String() string { return proto.CompactTextString(m) }
func (*ReadRowsTest) ProtoMessage()    {}
func (*ReadRowsTest) Descriptor() ([]byte, []int) {
	return fileDescriptor_e49b496f4919bda1, []int{1}
}

func (m *ReadRowsTest) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ReadRowsTest.Unmarshal(m, b)
}
func (m *ReadRowsTest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ReadRowsTest.Marshal(b, m, deterministic)
}
func (m *ReadRowsTest) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ReadRowsTest.Merge(m, src)
}
func (m *ReadRowsTest) XXX_Size() int {
	return xxx_messageInfo_ReadRowsTest.Size(m)
}
func (m *ReadRowsTest) XXX_DiscardUnknown() {
	xxx_messageInfo_ReadRowsTest.DiscardUnknown(m)
}

var xxx_messageInfo_ReadRowsTest proto.InternalMessageInfo

func (m *ReadRowsTest) GetDescription() string {
	if m != nil {
		return m.Description
	}
	return ""
}

func (m *ReadRowsTest) GetChunks() []*v2.ReadRowsResponse_CellChunk {
	if m != nil {
		return m.Chunks
	}
	return nil
}

func (m *ReadRowsTest) GetResults() []*ReadRowsTest_Result {
	if m != nil {
		return m.Results
	}
	return nil
}

// Expected results of reading the row.
// Only the last result can be an error.
type ReadRowsTest_Result struct {
	RowKey               string   `protobuf:"bytes,1,opt,name=row_key,json=rowKey,proto3" json:"row_key,omitempty"`
	FamilyName           string   `protobuf:"bytes,2,opt,name=family_name,json=familyName,proto3" json:"family_name,omitempty"`
	Qualifier            string   `protobuf:"bytes,3,opt,name=qualifier,proto3" json:"qualifier,omitempty"`
	TimestampMicros      int64    `protobuf:"varint,4,opt,name=timestamp_micros,json=timestampMicros,proto3" json:"timestamp_micros,omitempty"`
	Value                string   `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"`
	Label                string   `protobuf:"bytes,6,opt,name=label,proto3" json:"label,omitempty"`
	Error                bool     `protobuf:"varint,7,opt,name=error,proto3" json:"error,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ReadRowsTest_Result) Reset()         { *m = ReadRowsTest_Result{} }
func (m *ReadRowsTest_Result) String() string { return proto.CompactTextString(m) }
func (*ReadRowsTest_Result) ProtoMessage()    {}
func (*ReadRowsTest_Result) Descriptor() ([]byte, []int) {
	return fileDescriptor_e49b496f4919bda1, []int{1, 0}
}

func (m *ReadRowsTest_Result) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ReadRowsTest_Result.Unmarshal(m, b)
}
func (m *ReadRowsTest_Result) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ReadRowsTest_Result.Marshal(b, m, deterministic)
}
func (m *ReadRowsTest_Result) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ReadRowsTest_Result.Merge(m, src)
}
func (m *ReadRowsTest_Result) XXX_Size() int {
	return xxx_messageInfo_ReadRowsTest_Result.Size(m)
}
func (m *ReadRowsTest_Result) XXX_DiscardUnknown() {
	xxx_messageInfo_ReadRowsTest_Result.DiscardUnknown(m)
}

var xxx_messageInfo_ReadRowsTest_Result proto.InternalMessageInfo

func (m *ReadRowsTest_Result) GetRowKey() string {
	if m != nil {
		return m.RowKey
	}
	return ""
}

func (m *ReadRowsTest_Result) GetFamilyName() string {
	if m != nil {
		return m.FamilyName
	}
	return ""
}

func (m *ReadRowsTest_Result) GetQualifier() string {
	if m != nil {
		return m.Qualifier
	}
	return ""
}

func (m *ReadRowsTest_Result) GetTimestampMicros() int64 {
	if m != nil {
		return m.TimestampMicros
	}
	return 0
}

func (m *ReadRowsTest_Result) GetValue() string {
	if m != nil {
		return m.Value
	}
	return ""
}

func (m *ReadRowsTest_Result) GetLabel() string {
	if m != nil {
		return m.Label
	}
	return ""
}

func (m *ReadRowsTest_Result) GetError() bool {
	if m != nil {
		return m.Error
	}
	return false
}

func init() {
	proto.RegisterType((*TestFile)(nil), "google.cloud.conformance.bigtable.v2.TestFile")
	proto.RegisterType((*ReadRowsTest)(nil), "google.cloud.conformance.bigtable.v2.ReadRowsTest")
	proto.RegisterType((*ReadRowsTest_Result)(nil), "google.cloud.conformance.bigtable.v2.ReadRowsTest.Result")
}

func init() { proto.RegisterFile("tests.proto", fileDescriptor_e49b496f4919bda1) }

var fileDescriptor_e49b496f4919bda1 = []byte{
	// 404 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x92, 0xc1, 0x6e, 0xd4, 0x30,
	0x10, 0x86, 0x95, 0x0d, 0xcd, 0xb6, 0x5e, 0xa0, 0xc8, 0x42, 0xc2, 0xaa, 0x90, 0x08, 0x15, 0x87,
	0xc0, 0xc1, 0x95, 0xc2, 0x89, 0xeb, 0x2e, 0x2a, 0x07, 0x04, 0x07, 0x83, 0x38, 0x70, 0x89, 0xbc,
	0xd9, 0xc9, 0x62, 0xd5, 0xce, 0x04, 0xdb, 0xd9, 0x68, 0x1f, 0x86, 0x17, 0xe0, 0x5d, 0x78, 0x27,
	0x14, 0xbb, 0x69, 0xf7, 0xc0, 0x61, 0xb9, 0xe5, 0xff, 0xc6, 0xff, 0x3f, 0xf6, 0x4c, 0xc8, 0xc2,
	0x83, 0xf3, 0x8e, 0x77, 0x16, 0x3d, 0xd2, 0x57, 0x5b, 0xc4, 0xad, 0x06, 0x5e, 0x6b, 0xec, 0x37,
	0xbc, 0xc6, 0xb6, 0x41, 0x6b, 0x64, 0x5b, 0x03, 0x5f, 0xab, 0xad, 0x97, 0x6b, 0x0d, 0x7c, 0x57,
	0x5e, 0xbc, 0x8c, 0xa7, 0xae, 0x26, 0x76, 0xb5, 0x2b, 0xef, 0xbe, 0x63, 0xd0, 0x65, 0x43, 0x4e,
	0xbf, 0x82, 0xf3, 0xd7, 0x4a, 0x03, 0xfd, 0x4e, 0xce, 0x2d, 0xc8, 0x4d, 0x65, 0x71, 0x70, 0x55,
	0xe8, 0xc6, 0x92, 0x3c, 0x2d, 0x16, 0x65, 0xc9, 0x8f, 0x69, 0xc7, 0x05, 0xc8, 0x8d, 0xc0, 0xc1,
	0x8d, 0x81, 0xe2, 0x91, 0x3d, 0x50, 0xee, 0xf2, 0x57, 0x4a, 0x1e, 0x1e, 0xd6, 0x69, 0x4e, 0x16,
	0x1b, 0x70, 0xb5, 0x55, 0x9d, 0x57, 0xd8, 0xb2, 0x24, 0x4f, 0x8a, 0x33, 0x71, 0x88, 0xe8, 0x35,
	0xc9, 0xea, 0x1f, 0x7d, 0x7b, 0xe3, 0xd8, 0x2c, 0xdc, 0x82, 0x4f, 0xb7, 0xf8, 0x57, 0x4f, 0x01,
	0xae, 0xc3, 0xd6, 0x01, 0x5f, 0x81, 0xd6, 0xab, 0xd1, 0x26, 0x6e, 0xdd, 0xf4, 0x0b, 0x99, 0x5b,
	0x70, 0xbd, 0xf6, 0x8e, 0xa5, 0x21, 0xe8, 0xdd, 0xff, 0x3f, 0x87, 0x8b, 0x90, 0x20, 0xa6, 0xa4,
	0x8b, 0x3f, 0x09, 0xc9, 0x22, 0xa3, 0xcf, 0xc8, 0xdc, 0xe2, 0x50, 0xdd, 0xc0, 0xfe, 0xf6, 0x15,
	0x99, 0xc5, 0xe1, 0x23, 0xec, 0xe9, 0x0b, 0xb2, 0x68, 0xa4, 0x51, 0x7a, 0x5f, 0xb5, 0xd2, 0x00,
	0x9b, 0x85, 0x22, 0x89, 0xe8, 0xb3, 0x34, 0x40, 0x9f, 0x93, 0xb3, 0x9f, 0xbd, 0xd4, 0xaa, 0x51,
	0x60, 0x59, 0x1a, 0xca, 0xf7, 0x80, 0xbe, 0x26, 0x4f, 0xbc, 0x32, 0xe0, 0xbc, 0x34, 0x5d, 0x65,
	0x54, 0x6d, 0xd1, 0xb1, 0x07, 0x79, 0x52, 0xa4, 0xe2, 0xfc, 0x8e, 0x7f, 0x0a, 0x98, 0x3e, 0x25,
	0x27, 0x3b, 0xa9, 0x7b, 0x60, 0x27, 0x21, 0x24, 0x8a, 0x91, 0x6a, 0xb9, 0x06, 0xcd, 0xb2, 0x48,
	0x83, 0x18, 0x29, 0x58, 0x8b, 0x96, 0xcd, 0xf3, 0xa4, 0x38, 0x15, 0x51, 0x2c, 0xb7, 0xa4, 0xa8,
	0xd1, 0x1c, 0x35, 0x98, 0xe5, 0xe3, 0x71, 0x22, 0xef, 0xa1, 0x51, 0xad, 0x1a, 0x17, 0xf5, 0x7b,
	0xf6, 0xe6, 0x43, 0xb4, 0xad, 0x82, 0x6d, 0x39, 0x1d, 0xfd, 0x56, 0xf2, 0xb0, 0x7c, 0xbe, 0xba,
	0x0f, 0x5a, 0x67, 0xe1, 0xbf, 0x7b, 0xfb, 0x37, 0x00, 0x00, 0xff, 0xff, 0x51, 0xe2, 0xc6, 0xe8,
	0xcf, 0x02, 0x00, 0x00,
}
