diff options
author | Colin Cross <ccross@android.com> | 2018-03-21 18:10:01 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2018-04-10 16:50:39 -0700 |
commit | 957b39cba5d16836eda1fe8412fa164102e80cd8 (patch) | |
tree | 690503714d3e355165fa97a066cc3eec4053d67f /parser/modify_test.go | |
parent | fdeaf881f44fbccf478112bda2d091b20b65cc0f (diff) | |
download | android_build_blueprint-957b39cba5d16836eda1fe8412fa164102e80cd8.tar.gz android_build_blueprint-957b39cba5d16836eda1fe8412fa164102e80cd8.tar.bz2 android_build_blueprint-957b39cba5d16836eda1fe8412fa164102e80cd8.zip |
Add Patch and PatchList for making textual changes
Patch and PatchList provide an API for making changes to substrings
of a Blueprint file by parsing the AST and using the token positions
to perform text replacements.
Test: modify_test.go
Change-Id: Ibb8993221982b54602ba5a05486198fab8d35a67
Diffstat (limited to 'parser/modify_test.go')
-rw-r--r-- | parser/modify_test.go | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/parser/modify_test.go b/parser/modify_test.go new file mode 100644 index 0000000..95fc293 --- /dev/null +++ b/parser/modify_test.go @@ -0,0 +1,65 @@ +// Copyright 2018 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package parser + +import ( + "bytes" + "testing" +) + +func TestPatchList(t *testing.T) { + expectOverlap := func(err error) { + t.Helper() + if _, ok := err.(PatchOverlapError); !ok { + t.Error("missing PatchOverlapError") + } + } + + expectOk := func(err error) { + t.Helper() + if err != nil { + t.Error(err) + } + } + + in := []byte("abcdefghijklmnopqrstuvwxyz") + + patchlist := PatchList{} + expectOk(patchlist.Add(0, 3, "ABC")) + expectOk(patchlist.Add(12, 15, "MNO")) + expectOk(patchlist.Add(24, 26, "Z")) + expectOk(patchlist.Add(15, 15, "_")) + + expectOverlap(patchlist.Add(0, 3, "x")) + expectOverlap(patchlist.Add(12, 13, "x")) + expectOverlap(patchlist.Add(13, 14, "x")) + expectOverlap(patchlist.Add(14, 15, "x")) + expectOverlap(patchlist.Add(11, 13, "x")) + expectOverlap(patchlist.Add(12, 15, "x")) + expectOverlap(patchlist.Add(11, 15, "x")) + expectOverlap(patchlist.Add(15, 15, "x")) + + if t.Failed() { + return + } + + buf := new(bytes.Buffer) + patchlist.Apply(bytes.NewReader(in), buf) + expected := "ABCdefghijklMNO_pqrstuvwxZ" + got := buf.String() + if got != expected { + t.Errorf("expected %q, got %q", expected, got) + } +} |