github.com/hasnat/dolt/go@v0.0.0-20210628190320-9eb5d843fbb7/libraries/doltcore/ref/ref_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 ref 16 17 import ( 18 "encoding/json" 19 "testing" 20 ) 21 22 type TestMarshalStruct struct { 23 Test MarshalableRef `json:"test"` 24 } 25 26 func TestJsonMarshalAndUnmarshal(t *testing.T) { 27 tests := []struct { 28 dr DoltRef 29 str string 30 }{ 31 { 32 NewBranchRef("master"), 33 `{"test":"refs/heads/master"}`, 34 }, 35 { 36 NewRemoteRef("origin", "master"), 37 `{"test":"refs/remotes/origin/master"}`, 38 }, 39 { 40 NewInternalRef("create"), 41 `{"test":"refs/internal/create"}`, 42 }, 43 { 44 NewWorkspaceRef("newworkspace"), 45 `{"test":"refs/workspaces/newworkspace"}`, 46 }, 47 } 48 49 for _, test := range tests { 50 tms := TestMarshalStruct{MarshalableRef{test.dr}} 51 data, err := json.Marshal(tms) 52 actual := string(data) 53 54 if err != nil { 55 t.Error(err) 56 } else if test.str != actual { 57 t.Error(actual, "!=", test.str) 58 } 59 } 60 61 for _, test := range tests { 62 var tms TestMarshalStruct 63 err := json.Unmarshal([]byte(test.str), &tms) 64 65 if err != nil { 66 t.Error(err) 67 } else if !Equals(test.dr, tms.Test.Ref) { 68 t.Error(tms.Test, "!=", test.dr) 69 } 70 } 71 } 72 73 func TestEqualsStr(t *testing.T) { 74 om, _ := NewRemoteRefFromPathStr("origin/master") 75 rom, _ := NewRemoteRefFromPathStr("refs/remotes/origin/master") 76 tests := []struct { 77 dr DoltRef 78 cmp string 79 expected bool 80 }{ 81 { 82 NewBranchRef("master"), 83 "refs/heads/master", 84 true, 85 }, 86 { 87 NewBranchRef("refs/heads/master"), 88 "refs/heads/master", 89 true, 90 }, 91 { 92 NewBranchRef("master"), 93 "refs/heads/notmaster", 94 false, 95 }, 96 { 97 NewBranchRef("master"), 98 "refs/remotes/origin/master", 99 false, 100 }, 101 { 102 NewRemoteRef("origin", "master"), 103 "refs/remotes/origin/master", 104 true, 105 }, 106 { 107 om, 108 "refs/remotes/origin/master", 109 true, 110 }, 111 { 112 rom, 113 "refs/remotes/origin/master", 114 true, 115 }, 116 { 117 NewRemoteRef("origin", "master"), 118 "refs/remotes/borigin/master", 119 false, 120 }, 121 { 122 NewRemoteRef("origin", "master"), 123 "refs/remotes/origin/notmaster", 124 false, 125 }, 126 { 127 NewRemoteRef("origin", "master"), 128 "refs/notavalidtype/origin/notmaster", 129 false, 130 }, 131 { 132 NewInternalRef("create"), 133 "refs/internal/create", 134 true, 135 }, 136 { 137 NewInternalRef("refs/internal/create"), 138 "refs/internal/create", 139 true, 140 }, 141 { 142 NewWorkspaceRef("newworkspace"), 143 "refs/workspaces/newworkspace", 144 true, 145 }, 146 { 147 NewWorkspaceRef("refs/workspaces/newworkspace"), 148 "refs/workspaces/newworkspace", 149 true, 150 }, 151 { 152 NewWorkspaceRef("newworkspace"), 153 "refs/workspaces/notnewworkspace", 154 false, 155 }, 156 { 157 NewWorkspaceRef("newworkspace"), 158 "refs/remotes/origin/newworkspace", 159 false, 160 }, 161 } 162 163 for _, test := range tests { 164 actual := EqualsStr(test.dr, test.cmp) 165 166 if actual != test.expected { 167 t.Error("for input:", test.cmp, "error comparing", test.dr, "to", test.cmp) 168 } 169 } 170 }