1// Copyright (C) 2020 The Android Open Source Project
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
15package sdk
16
17import (
18	"testing"
19
20	"android/soong/android"
21)
22
23type removeFredTransformation struct {
24	identityTransformation
25}
26
27func (t removeFredTransformation) transformProperty(name string, value interface{}, tag android.BpPropertyTag) (interface{}, android.BpPropertyTag) {
28	if name == "fred" {
29		return nil, nil
30	}
31	return value, tag
32}
33
34func (t removeFredTransformation) transformPropertySetBeforeContents(name string, propertySet *bpPropertySet, tag android.BpPropertyTag) (*bpPropertySet, android.BpPropertyTag) {
35	if name == "fred" {
36		return nil, nil
37	}
38	return propertySet, tag
39}
40
41func (t removeFredTransformation) transformPropertySetAfterContents(name string, propertySet *bpPropertySet, tag android.BpPropertyTag) (*bpPropertySet, android.BpPropertyTag) {
42	if len(propertySet.properties) == 0 {
43		return nil, nil
44	}
45	return propertySet, tag
46}
47
48func TestTransformRemoveProperty(t *testing.T) {
49
50	helper := &TestHelper{t}
51
52	set := newPropertySet()
53	set.AddProperty("name", "name")
54	set.AddProperty("fred", "12")
55
56	set.transformContents(removeFredTransformation{})
57
58	contents := &generatedContents{}
59	outputPropertySet(contents, set)
60	helper.AssertTrimmedStringEquals("removing property failed", "name: \"name\",\n", contents.content.String())
61}
62
63func TestTransformRemovePropertySet(t *testing.T) {
64
65	helper := &TestHelper{t}
66
67	set := newPropertySet()
68	set.AddProperty("name", "name")
69	set.AddPropertySet("fred")
70
71	set.transformContents(removeFredTransformation{})
72
73	contents := &generatedContents{}
74	outputPropertySet(contents, set)
75	helper.AssertTrimmedStringEquals("removing property set failed", "name: \"name\",\n", contents.content.String())
76}
77