1*1fa6dee9SAndroid Build Coastguard Worker// Copyright 2018 Google Inc. All rights reserved. 2*1fa6dee9SAndroid Build Coastguard Worker// 3*1fa6dee9SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*1fa6dee9SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*1fa6dee9SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*1fa6dee9SAndroid Build Coastguard Worker// 7*1fa6dee9SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*1fa6dee9SAndroid Build Coastguard Worker// 9*1fa6dee9SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*1fa6dee9SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*1fa6dee9SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*1fa6dee9SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*1fa6dee9SAndroid Build Coastguard Worker// limitations under the License. 14*1fa6dee9SAndroid Build Coastguard Worker 15*1fa6dee9SAndroid Build Coastguard Workerpackage parser 16*1fa6dee9SAndroid Build Coastguard Worker 17*1fa6dee9SAndroid Build Coastguard Workerimport ( 18*1fa6dee9SAndroid Build Coastguard Worker "bytes" 19*1fa6dee9SAndroid Build Coastguard Worker "testing" 20*1fa6dee9SAndroid Build Coastguard Worker) 21*1fa6dee9SAndroid Build Coastguard Worker 22*1fa6dee9SAndroid Build Coastguard Workerfunc TestPatchList(t *testing.T) { 23*1fa6dee9SAndroid Build Coastguard Worker expectOverlap := func(err error) { 24*1fa6dee9SAndroid Build Coastguard Worker t.Helper() 25*1fa6dee9SAndroid Build Coastguard Worker if _, ok := err.(PatchOverlapError); !ok { 26*1fa6dee9SAndroid Build Coastguard Worker t.Error("missing PatchOverlapError") 27*1fa6dee9SAndroid Build Coastguard Worker } 28*1fa6dee9SAndroid Build Coastguard Worker } 29*1fa6dee9SAndroid Build Coastguard Worker 30*1fa6dee9SAndroid Build Coastguard Worker expectOk := func(err error) { 31*1fa6dee9SAndroid Build Coastguard Worker t.Helper() 32*1fa6dee9SAndroid Build Coastguard Worker if err != nil { 33*1fa6dee9SAndroid Build Coastguard Worker t.Error(err) 34*1fa6dee9SAndroid Build Coastguard Worker } 35*1fa6dee9SAndroid Build Coastguard Worker } 36*1fa6dee9SAndroid Build Coastguard Worker 37*1fa6dee9SAndroid Build Coastguard Worker in := []byte("abcdefghijklmnopqrstuvwxyz") 38*1fa6dee9SAndroid Build Coastguard Worker 39*1fa6dee9SAndroid Build Coastguard Worker patchlist := PatchList{} 40*1fa6dee9SAndroid Build Coastguard Worker expectOk(patchlist.Add(0, 3, "ABC")) 41*1fa6dee9SAndroid Build Coastguard Worker expectOk(patchlist.Add(12, 15, "MNO")) 42*1fa6dee9SAndroid Build Coastguard Worker expectOk(patchlist.Add(24, 26, "Z")) 43*1fa6dee9SAndroid Build Coastguard Worker expectOk(patchlist.Add(15, 15, "_")) 44*1fa6dee9SAndroid Build Coastguard Worker 45*1fa6dee9SAndroid Build Coastguard Worker expectOverlap(patchlist.Add(0, 3, "x")) 46*1fa6dee9SAndroid Build Coastguard Worker expectOverlap(patchlist.Add(12, 13, "x")) 47*1fa6dee9SAndroid Build Coastguard Worker expectOverlap(patchlist.Add(13, 14, "x")) 48*1fa6dee9SAndroid Build Coastguard Worker expectOverlap(patchlist.Add(14, 15, "x")) 49*1fa6dee9SAndroid Build Coastguard Worker expectOverlap(patchlist.Add(11, 13, "x")) 50*1fa6dee9SAndroid Build Coastguard Worker expectOverlap(patchlist.Add(12, 15, "x")) 51*1fa6dee9SAndroid Build Coastguard Worker expectOverlap(patchlist.Add(11, 15, "x")) 52*1fa6dee9SAndroid Build Coastguard Worker expectOverlap(patchlist.Add(15, 15, "x")) 53*1fa6dee9SAndroid Build Coastguard Worker 54*1fa6dee9SAndroid Build Coastguard Worker if t.Failed() { 55*1fa6dee9SAndroid Build Coastguard Worker return 56*1fa6dee9SAndroid Build Coastguard Worker } 57*1fa6dee9SAndroid Build Coastguard Worker 58*1fa6dee9SAndroid Build Coastguard Worker buf := new(bytes.Buffer) 59*1fa6dee9SAndroid Build Coastguard Worker patchlist.Apply(bytes.NewReader(in), buf) 60*1fa6dee9SAndroid Build Coastguard Worker expected := "ABCdefghijklMNO_pqrstuvwxZ" 61*1fa6dee9SAndroid Build Coastguard Worker got := buf.String() 62*1fa6dee9SAndroid Build Coastguard Worker if got != expected { 63*1fa6dee9SAndroid Build Coastguard Worker t.Errorf("expected %q, got %q", expected, got) 64*1fa6dee9SAndroid Build Coastguard Worker } 65*1fa6dee9SAndroid Build Coastguard Worker} 66