xref: /aosp_15_r20/build/blueprint/levenshtein_test.go (revision 1fa6dee971e1612fa5cc0aa5ca2d35a22e2c34a3)
1*1fa6dee9SAndroid Build Coastguard Worker// Copyright 2014 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 blueprint
16*1fa6dee9SAndroid Build Coastguard Worker
17*1fa6dee9SAndroid Build Coastguard Workerimport (
18*1fa6dee9SAndroid Build Coastguard Worker	"reflect"
19*1fa6dee9SAndroid Build Coastguard Worker	"testing"
20*1fa6dee9SAndroid Build Coastguard Worker)
21*1fa6dee9SAndroid Build Coastguard Worker
22*1fa6dee9SAndroid Build Coastguard Workerfunc mods(mods []string) []*moduleGroup {
23*1fa6dee9SAndroid Build Coastguard Worker	ret := []*moduleGroup{}
24*1fa6dee9SAndroid Build Coastguard Worker
25*1fa6dee9SAndroid Build Coastguard Worker	for _, v := range mods {
26*1fa6dee9SAndroid Build Coastguard Worker		m := moduleGroup{name: v}
27*1fa6dee9SAndroid Build Coastguard Worker		ret = append(ret, &m)
28*1fa6dee9SAndroid Build Coastguard Worker	}
29*1fa6dee9SAndroid Build Coastguard Worker
30*1fa6dee9SAndroid Build Coastguard Worker	return ret
31*1fa6dee9SAndroid Build Coastguard Worker}
32*1fa6dee9SAndroid Build Coastguard Worker
33*1fa6dee9SAndroid Build Coastguard Workerfunc assertEqual(t *testing.T, a, b []string) {
34*1fa6dee9SAndroid Build Coastguard Worker	if len(a) == 0 && len(b) == 0 {
35*1fa6dee9SAndroid Build Coastguard Worker		return
36*1fa6dee9SAndroid Build Coastguard Worker	}
37*1fa6dee9SAndroid Build Coastguard Worker
38*1fa6dee9SAndroid Build Coastguard Worker	if !reflect.DeepEqual(a, b) {
39*1fa6dee9SAndroid Build Coastguard Worker		t.Errorf("Expected the following to be equal:\n\t%q\n\t%q", a, b)
40*1fa6dee9SAndroid Build Coastguard Worker	}
41*1fa6dee9SAndroid Build Coastguard Worker}
42*1fa6dee9SAndroid Build Coastguard Worker
43*1fa6dee9SAndroid Build Coastguard Workerfunc TestLevenshteinWontGuessUnlike(t *testing.T) {
44*1fa6dee9SAndroid Build Coastguard Worker	assertEqual(t, namesLike("a", "test", mods([]string{"test"})), []string{})
45*1fa6dee9SAndroid Build Coastguard Worker}
46*1fa6dee9SAndroid Build Coastguard Workerfunc TestLevenshteinInsert(t *testing.T) {
47*1fa6dee9SAndroid Build Coastguard Worker	assertEqual(t, namesLike("a", "test", mods([]string{"ab", "ac", "not_this"})), []string{"ab", "ac"})
48*1fa6dee9SAndroid Build Coastguard Worker}
49*1fa6dee9SAndroid Build Coastguard Workerfunc TestLevenshteinDelete(t *testing.T) {
50*1fa6dee9SAndroid Build Coastguard Worker	assertEqual(t, namesLike("ab", "test", mods([]string{"a", "b", "not_this"})), []string{"a", "b"})
51*1fa6dee9SAndroid Build Coastguard Worker}
52*1fa6dee9SAndroid Build Coastguard Workerfunc TestLevenshteinReplace(t *testing.T) {
53*1fa6dee9SAndroid Build Coastguard Worker	assertEqual(t, namesLike("aa", "test", mods([]string{"ab", "ac", "not_this"})), []string{"ab", "ac"})
54*1fa6dee9SAndroid Build Coastguard Worker}
55