github.com/hasnat/dolt/go@v0.0.0-20210628190320-9eb5d843fbb7/libraries/doltcore/schema/constraint_test.go (about) 1 // Copyright 2019 Dolthub, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package schema 16 17 import ( 18 "testing" 19 20 "github.com/dolthub/dolt/go/store/types" 21 ) 22 23 type TestConstraint struct { 24 params map[string]string 25 } 26 27 func (tc TestConstraint) SatisfiesConstraint(value types.Value) bool { 28 return true 29 } 30 31 func (tc TestConstraint) GetConstraintType() string { 32 return "test" 33 } 34 35 func (tc TestConstraint) GetConstraintParams() map[string]string { 36 return tc.params 37 } 38 39 func (tc TestConstraint) String() string { 40 return "" 41 } 42 43 func TestColConstraintsAreEqual(t *testing.T) { 44 tests := []struct { 45 constraints1 []ColConstraint 46 constraints2 []ColConstraint 47 expectedEq bool 48 }{ 49 {nil, nil, true}, 50 {nil, []ColConstraint{}, true}, 51 {[]ColConstraint{}, []ColConstraint{}, true}, 52 {[]ColConstraint{NotNullConstraint{}}, []ColConstraint{NotNullConstraint{}}, true}, 53 {[]ColConstraint{NotNullConstraint{}}, []ColConstraint{TestConstraint{}}, false}, 54 {[]ColConstraint{TestConstraint{map[string]string{"a": "1", "b": "2"}}}, []ColConstraint{TestConstraint{}}, false}, 55 {[]ColConstraint{TestConstraint{map[string]string{"a": "1", "b": "2"}}}, []ColConstraint{TestConstraint{map[string]string{"a": "1", "b": "2"}}}, true}, 56 {[]ColConstraint{}, []ColConstraint{NotNullConstraint{}}, false}, 57 {nil, []ColConstraint{NotNullConstraint{}}, false}, 58 } 59 60 for i, test := range tests { 61 actualEq := ColConstraintsAreEqual(test.constraints1, test.constraints2) 62 63 if actualEq != test.expectedEq { 64 t.Error("test number:", i, "expected equality:", test.expectedEq, "actual equality:", actualEq) 65 } 66 } 67 }