github.com/kaleido-io/firefly@v0.0.0-20210622132723-8b4b6aacb971/pkg/fftypes/namearray_test.go (about) 1 // Copyright © 2021 Kaleido, Inc. 2 // 3 // SPDX-License-Identifier: Apache-2.0 4 // 5 // Licensed under the Apache License, Version 2.0 (the "License"); 6 // you may not use this file except in compliance with the License. 7 // You may obtain a copy of the License at 8 // 9 // http://www.apache.org/licenses/LICENSE-2.0 10 // 11 // Unless required by applicable law or agreed to in writing, software 12 // distributed under the License is distributed on an "AS IS" BASIS, 13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 // See the License for the specific language governing permissions and 15 // limitations under the License. 16 17 package fftypes 18 19 import ( 20 "context" 21 "fmt" 22 "testing" 23 24 "github.com/stretchr/testify/assert" 25 ) 26 27 func TestFFNameArrayVerifyTooLong(t *testing.T) { 28 na := make(FFNameArray, 16) 29 for i := 0; i < 16; i++ { 30 na[i] = fmt.Sprintf("item_%d", i) 31 } 32 err := na.Validate(context.Background(), "field1") 33 assert.Regexp(t, `FF10227.*field1`, err) 34 } 35 36 func TestFFNameArrayVerifyDuplicate(t *testing.T) { 37 na := FFNameArray{"value1", "value2", "value1"} 38 err := na.Validate(context.Background(), "field1") 39 assert.Regexp(t, `FF10228.*field1`, err) 40 } 41 42 func TestFFNameArrayVerifyBadName(t *testing.T) { 43 na := FFNameArray{"!valid"} 44 err := na.Validate(context.Background(), "field1") 45 assert.Regexp(t, `FF10131.*field1\[0\]`, err) 46 } 47 48 func TestFFNameArrayScanValue(t *testing.T) { 49 50 na1 := FFNameArray{"name1", "name2"} 51 v, err := na1.Value() 52 assert.NoError(t, err) 53 assert.Equal(t, "name1,name2", v) 54 55 var na2 FFNameArray 56 assert.Equal(t, "", na2.String()) 57 v, err = na2.Value() 58 assert.Equal(t, "", v) 59 err = na2.Scan("name1,name2") 60 assert.NoError(t, err) 61 assert.Equal(t, "name1,name2", na2.String()) 62 63 var na3 FFNameArray 64 err = na3.Scan([]byte("name1,name2")) 65 assert.NoError(t, err) 66 assert.Equal(t, "name1,name2", na3.String()) 67 68 var na4 FFNameArray 69 err = na4.Scan([]byte(nil)) 70 assert.NoError(t, err) 71 assert.Equal(t, "", na4.String()) 72 err = na4.Scan(nil) 73 assert.NoError(t, err) 74 assert.Equal(t, "", na4.String()) 75 v, err = na4.Value() 76 assert.NoError(t, err) 77 assert.Equal(t, "", v) 78 79 var na5 FFNameArray 80 err = na5.Scan("") 81 assert.NoError(t, err) 82 assert.Equal(t, FFNameArray{}, na5) 83 assert.Equal(t, "", na5.String()) 84 85 var na6 FFNameArray 86 err = na6.Scan(42) 87 assert.Regexp(t, "FF10125", err) 88 89 var na7 FFNameArray 90 err = na7.Scan(FFNameArray{"test1", "test2"}) 91 assert.Equal(t, FFNameArray{"test1", "test2"}, na7) 92 93 }