xref: /aosp_15_r20/cts/tests/mediapc/requirements/templatefns_test.go (revision b7c941bb3fa97aba169d73cee0bed2de8ac964bf)
1*b7c941bbSAndroid Build Coastguard Worker// Copyright (C) 2024 The Android Open Source Project
2*b7c941bbSAndroid Build Coastguard Worker//
3*b7c941bbSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*b7c941bbSAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*b7c941bbSAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*b7c941bbSAndroid Build Coastguard Worker//
7*b7c941bbSAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*b7c941bbSAndroid Build Coastguard Worker//
9*b7c941bbSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*b7c941bbSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*b7c941bbSAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*b7c941bbSAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*b7c941bbSAndroid Build Coastguard Worker// limitations under the License.
14*b7c941bbSAndroid Build Coastguard Worker
15*b7c941bbSAndroid Build Coastguard Workerpackage templatefns
16*b7c941bbSAndroid Build Coastguard Worker
17*b7c941bbSAndroid Build Coastguard Workerimport (
18*b7c941bbSAndroid Build Coastguard Worker	"errors"
19*b7c941bbSAndroid Build Coastguard Worker	"testing"
20*b7c941bbSAndroid Build Coastguard Worker
21*b7c941bbSAndroid Build Coastguard Worker	pb "cts/test/mediapc/requirements/requirements_go_proto"
22*b7c941bbSAndroid Build Coastguard Worker
23*b7c941bbSAndroid Build Coastguard Worker	"google.golang.org/protobuf/proto"
24*b7c941bbSAndroid Build Coastguard Worker)
25*b7c941bbSAndroid Build Coastguard Worker
26*b7c941bbSAndroid Build Coastguard Workervar caseTests = []struct {
27*b7c941bbSAndroid Build Coastguard Worker	input, kebabCase, snakeCase, titleCase, upperCamelCase, lowerCamelCase, safeTestConfigID string
28*b7c941bbSAndroid Build Coastguard Worker}{
29*b7c941bbSAndroid Build Coastguard Worker	{
30*b7c941bbSAndroid Build Coastguard Worker		input:     "",
31*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "", snakeCase: "", titleCase: "", upperCamelCase: "", lowerCamelCase: "", safeTestConfigID: ""},
32*b7c941bbSAndroid Build Coastguard Worker	{
33*b7c941bbSAndroid Build Coastguard Worker		input:     "f",
34*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "f", snakeCase: "f", titleCase: "F", upperCamelCase: "F", lowerCamelCase: "f", safeTestConfigID: "__f"},
35*b7c941bbSAndroid Build Coastguard Worker	{
36*b7c941bbSAndroid Build Coastguard Worker		input:     "foo",
37*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "foo", snakeCase: "foo", titleCase: "Foo", upperCamelCase: "Foo", lowerCamelCase: "foo", safeTestConfigID: "__foo"},
38*b7c941bbSAndroid Build Coastguard Worker	{
39*b7c941bbSAndroid Build Coastguard Worker		input:     " foo_bar",
40*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "foo-bar", snakeCase: "foo_bar", titleCase: "Foo Bar", upperCamelCase: "FooBar", lowerCamelCase: "fooBar", safeTestConfigID: "__foo_bar"},
41*b7c941bbSAndroid Build Coastguard Worker	{
42*b7c941bbSAndroid Build Coastguard Worker		input:     " foo-bar",
43*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "foo-bar", snakeCase: "foo_bar", titleCase: "Foo Bar", upperCamelCase: "FooBar", lowerCamelCase: "fooBar", safeTestConfigID: "__foo_bar"},
44*b7c941bbSAndroid Build Coastguard Worker	{
45*b7c941bbSAndroid Build Coastguard Worker		input:     " foo bar",
46*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "foo-bar", snakeCase: "foo_bar", titleCase: "Foo Bar", upperCamelCase: "FooBar", lowerCamelCase: "fooBar", safeTestConfigID: "__foo_bar"},
47*b7c941bbSAndroid Build Coastguard Worker	{
48*b7c941bbSAndroid Build Coastguard Worker		input:     " Foo Bar",
49*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "foo-bar", snakeCase: "foo_bar", titleCase: "Foo Bar", upperCamelCase: "FooBar", lowerCamelCase: "fooBar", safeTestConfigID: "__foo_bar"},
50*b7c941bbSAndroid Build Coastguard Worker	{
51*b7c941bbSAndroid Build Coastguard Worker		input:     "HTTP_status_code",
52*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "http-status-code", snakeCase: "http_status_code", titleCase: "HTTP Status Code", upperCamelCase: "HTTPStatusCode", lowerCamelCase: "httpStatusCode", safeTestConfigID: "__http_status_code"},
53*b7c941bbSAndroid Build Coastguard Worker	{
54*b7c941bbSAndroid Build Coastguard Worker		input:     "foo   many spaces",
55*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "foo-many-spaces", snakeCase: "foo_many_spaces", titleCase: "Foo Many Spaces", upperCamelCase: "FooManySpaces", lowerCamelCase: "fooManySpaces", safeTestConfigID: "__foo_many_spaces"},
56*b7c941bbSAndroid Build Coastguard Worker	{
57*b7c941bbSAndroid Build Coastguard Worker		input:     "foo---many-dashes",
58*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "foo-many-dashes", snakeCase: "foo_many_dashes", titleCase: "Foo Many Dashes", upperCamelCase: "FooManyDashes", lowerCamelCase: "fooManyDashes", safeTestConfigID: "__foo_many_dashes"},
59*b7c941bbSAndroid Build Coastguard Worker	{
60*b7c941bbSAndroid Build Coastguard Worker		input:     "foo___many_underline",
61*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "foo-many-underline", snakeCase: "foo_many_underline", titleCase: "Foo Many Underline", upperCamelCase: "FooManyUnderline", lowerCamelCase: "fooManyUnderline", safeTestConfigID: "__foo_many_underline"},
62*b7c941bbSAndroid Build Coastguard Worker	{
63*b7c941bbSAndroid Build Coastguard Worker		input:     "UpperCamelCase",
64*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "upper-camel-case", snakeCase: "upper_camel_case", titleCase: "Upper Camel Case", upperCamelCase: "UpperCamelCase", lowerCamelCase: "upperCamelCase", safeTestConfigID: "__upper_camel_case"},
65*b7c941bbSAndroid Build Coastguard Worker	{
66*b7c941bbSAndroid Build Coastguard Worker		input:     "ACRONYMInUpperCamelCase",
67*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "acronym-in-upper-camel-case", snakeCase: "acronym_in_upper_camel_case", titleCase: "ACRONYM In Upper Camel Case", upperCamelCase: "ACRONYMInUpperCamelCase", lowerCamelCase: "acronymInUpperCamelCase", safeTestConfigID: "__acronym_in_upper_camel_case"},
68*b7c941bbSAndroid Build Coastguard Worker	{
69*b7c941bbSAndroid Build Coastguard Worker		input:     "FooGRPCHandler",
70*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "foo-grpc-handler", snakeCase: "foo_grpc_handler", titleCase: "Foo GRPC Handler", upperCamelCase: "FooGRPCHandler", lowerCamelCase: "fooGRPCHandler", safeTestConfigID: "__foo_grpc_handler"},
71*b7c941bbSAndroid Build Coastguard Worker	{
72*b7c941bbSAndroid Build Coastguard Worker		input:     "GRPC1234Handler",
73*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "grpc1234-handler", snakeCase: "grpc1234_handler", titleCase: "GRPC1234 Handler", upperCamelCase: "GRPC1234Handler", lowerCamelCase: "grpc1234Handler", safeTestConfigID: "__grpc1234_handler"},
74*b7c941bbSAndroid Build Coastguard Worker	{
75*b7c941bbSAndroid Build Coastguard Worker		input:     "tricky4567number",
76*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "tricky4567-number", snakeCase: "tricky4567_number", titleCase: "Tricky4567 Number", upperCamelCase: "Tricky4567Number", lowerCamelCase: "tricky4567Number", safeTestConfigID: "__tricky4567_number"},
77*b7c941bbSAndroid Build Coastguard Worker	{
78*b7c941bbSAndroid Build Coastguard Worker		input:     "tricky 4567number",
79*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "tricky-4567-number", snakeCase: "tricky_4567_number", titleCase: "Tricky 4567 Number", upperCamelCase: "Tricky4567Number", lowerCamelCase: "tricky4567Number", safeTestConfigID: "__tricky_4567_number"},
80*b7c941bbSAndroid Build Coastguard Worker	{
81*b7c941bbSAndroid Build Coastguard Worker		input:     "tricky 4567Number",
82*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "tricky-4567-number", snakeCase: "tricky_4567_number", titleCase: "Tricky 4567 Number", upperCamelCase: "Tricky4567Number", lowerCamelCase: "tricky4567Number", safeTestConfigID: "__tricky_4567_number"},
83*b7c941bbSAndroid Build Coastguard Worker	{
84*b7c941bbSAndroid Build Coastguard Worker		input:     "tricky 4567 Number",
85*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "tricky-4567-number", snakeCase: "tricky_4567_number", titleCase: "Tricky 4567 Number", upperCamelCase: "Tricky4567Number", lowerCamelCase: "tricky4567Number", safeTestConfigID: "__tricky_4567_number"},
86*b7c941bbSAndroid Build Coastguard Worker	{
87*b7c941bbSAndroid Build Coastguard Worker		input:     "lowerCamelCase",
88*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "lower-camel-case", snakeCase: "lower_camel_case", titleCase: "Lower Camel Case", upperCamelCase: "LowerCamelCase", lowerCamelCase: "lowerCamelCase", safeTestConfigID: "__lower_camel_case"},
89*b7c941bbSAndroid Build Coastguard Worker	{
90*b7c941bbSAndroid Build Coastguard Worker		input:     "endInCapitalT",
91*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "end-in-capital-t", snakeCase: "end_in_capital_t", titleCase: "End In Capital T", upperCamelCase: "EndInCapitalT", lowerCamelCase: "endInCapitalT", safeTestConfigID: "__end_in_capital_t"},
92*b7c941bbSAndroid Build Coastguard Worker	{
93*b7c941bbSAndroid Build Coastguard Worker		input:     "snake_case",
94*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "snake-case", snakeCase: "snake_case", titleCase: "Snake Case", upperCamelCase: "SnakeCase", lowerCamelCase: "snakeCase", safeTestConfigID: "__snake_case"},
95*b7c941bbSAndroid Build Coastguard Worker	{
96*b7c941bbSAndroid Build Coastguard Worker		input:     "kebab-case",
97*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "kebab-case", snakeCase: "kebab_case", titleCase: "Kebab Case", upperCamelCase: "KebabCase", lowerCamelCase: "kebabCase", safeTestConfigID: "__kebab_case"},
98*b7c941bbSAndroid Build Coastguard Worker	{
99*b7c941bbSAndroid Build Coastguard Worker		input:     "üñicödeCäse",
100*b7c941bbSAndroid Build Coastguard Worker		kebabCase: "üñicöde-cäse", snakeCase: "üñicöde_cäse", titleCase: "Üñicöde Cäse", upperCamelCase: "ÜñicödeCäse", lowerCamelCase: "üñicödeCäse", safeTestConfigID: "__üñicöde_cäse"}}
101*b7c941bbSAndroid Build Coastguard Worker
102*b7c941bbSAndroid Build Coastguard Workerfunc TestKebabCase(t *testing.T) {
103*b7c941bbSAndroid Build Coastguard Worker	for _, tt := range caseTests {
104*b7c941bbSAndroid Build Coastguard Worker		t.Run(tt.input, func(t *testing.T) {
105*b7c941bbSAndroid Build Coastguard Worker			if got := kebabCase(tt.input); got != tt.kebabCase {
106*b7c941bbSAndroid Build Coastguard Worker				t.Fatalf("KebabCase(%q) = %q, want %q", tt.input, got, tt.kebabCase)
107*b7c941bbSAndroid Build Coastguard Worker			}
108*b7c941bbSAndroid Build Coastguard Worker		})
109*b7c941bbSAndroid Build Coastguard Worker	}
110*b7c941bbSAndroid Build Coastguard Worker}
111*b7c941bbSAndroid Build Coastguard Worker
112*b7c941bbSAndroid Build Coastguard Workerfunc TestSnakeCase(t *testing.T) {
113*b7c941bbSAndroid Build Coastguard Worker	for _, tt := range caseTests {
114*b7c941bbSAndroid Build Coastguard Worker		t.Run(tt.input, func(t *testing.T) {
115*b7c941bbSAndroid Build Coastguard Worker			if got := snakeCase(tt.input); got != tt.snakeCase {
116*b7c941bbSAndroid Build Coastguard Worker				t.Fatalf("SnakeCase(%q) = %q, want %q", tt.input, got, tt.snakeCase)
117*b7c941bbSAndroid Build Coastguard Worker			}
118*b7c941bbSAndroid Build Coastguard Worker		})
119*b7c941bbSAndroid Build Coastguard Worker	}
120*b7c941bbSAndroid Build Coastguard Worker}
121*b7c941bbSAndroid Build Coastguard Worker
122*b7c941bbSAndroid Build Coastguard Workerfunc TestTitleCase(t *testing.T) {
123*b7c941bbSAndroid Build Coastguard Worker	for _, tt := range caseTests {
124*b7c941bbSAndroid Build Coastguard Worker		t.Run(tt.input, func(t *testing.T) {
125*b7c941bbSAndroid Build Coastguard Worker			if got := titleCase(tt.input); got != tt.titleCase {
126*b7c941bbSAndroid Build Coastguard Worker				t.Fatalf("TitleCase(%q) = %q, want %q", tt.input, got, tt.titleCase)
127*b7c941bbSAndroid Build Coastguard Worker			}
128*b7c941bbSAndroid Build Coastguard Worker		})
129*b7c941bbSAndroid Build Coastguard Worker	}
130*b7c941bbSAndroid Build Coastguard Worker}
131*b7c941bbSAndroid Build Coastguard Worker
132*b7c941bbSAndroid Build Coastguard Workerfunc TestUpperCamelCase(t *testing.T) {
133*b7c941bbSAndroid Build Coastguard Worker	for _, tt := range caseTests {
134*b7c941bbSAndroid Build Coastguard Worker		t.Run(tt.input, func(t *testing.T) {
135*b7c941bbSAndroid Build Coastguard Worker			if got := upperCamelCase(tt.input); got != tt.upperCamelCase {
136*b7c941bbSAndroid Build Coastguard Worker				t.Fatalf("upperCamelCase(%q) = %q, want %q", tt.input, got, tt.upperCamelCase)
137*b7c941bbSAndroid Build Coastguard Worker			}
138*b7c941bbSAndroid Build Coastguard Worker		})
139*b7c941bbSAndroid Build Coastguard Worker	}
140*b7c941bbSAndroid Build Coastguard Worker}
141*b7c941bbSAndroid Build Coastguard Worker
142*b7c941bbSAndroid Build Coastguard Workerfunc TestLowerCamelCase(t *testing.T) {
143*b7c941bbSAndroid Build Coastguard Worker	for _, tt := range caseTests {
144*b7c941bbSAndroid Build Coastguard Worker		t.Run(tt.input, func(t *testing.T) {
145*b7c941bbSAndroid Build Coastguard Worker			if got := lowerCamelCase(tt.input); got != tt.lowerCamelCase {
146*b7c941bbSAndroid Build Coastguard Worker				t.Fatalf("lowerCamelCase(%q) = %q, want %q", tt.input, got, tt.lowerCamelCase)
147*b7c941bbSAndroid Build Coastguard Worker			}
148*b7c941bbSAndroid Build Coastguard Worker		})
149*b7c941bbSAndroid Build Coastguard Worker	}
150*b7c941bbSAndroid Build Coastguard Worker}
151*b7c941bbSAndroid Build Coastguard Worker
152*b7c941bbSAndroid Build Coastguard Workerfunc TestSafeTestConfigID(t *testing.T) {
153*b7c941bbSAndroid Build Coastguard Worker	for _, tt := range caseTests {
154*b7c941bbSAndroid Build Coastguard Worker		t.Run(tt.input, func(t *testing.T) {
155*b7c941bbSAndroid Build Coastguard Worker			if got := safeTestConfigID(tt.input); got != tt.safeTestConfigID {
156*b7c941bbSAndroid Build Coastguard Worker				t.Fatalf("safeTestConfigID(%q) = %q, want %q", tt.input, got, tt.safeTestConfigID)
157*b7c941bbSAndroid Build Coastguard Worker			}
158*b7c941bbSAndroid Build Coastguard Worker		})
159*b7c941bbSAndroid Build Coastguard Worker	}
160*b7c941bbSAndroid Build Coastguard Worker}
161*b7c941bbSAndroid Build Coastguard Worker
162*b7c941bbSAndroid Build Coastguard Workerfunc TestDict(t *testing.T) {
163*b7c941bbSAndroid Build Coastguard Worker	errorValue := errors.New("error_value")
164*b7c941bbSAndroid Build Coastguard Worker	var dictTest = []struct {
165*b7c941bbSAndroid Build Coastguard Worker		values []any
166*b7c941bbSAndroid Build Coastguard Worker		want   map[string]any
167*b7c941bbSAndroid Build Coastguard Worker	}{
168*b7c941bbSAndroid Build Coastguard Worker		{
169*b7c941bbSAndroid Build Coastguard Worker			values: []any{1, 2, 3},
170*b7c941bbSAndroid Build Coastguard Worker			want: map[string]any{
171*b7c941bbSAndroid Build Coastguard Worker				"1": 2,
172*b7c941bbSAndroid Build Coastguard Worker				"3": nil,
173*b7c941bbSAndroid Build Coastguard Worker			},
174*b7c941bbSAndroid Build Coastguard Worker		},
175*b7c941bbSAndroid Build Coastguard Worker		{
176*b7c941bbSAndroid Build Coastguard Worker			values: []any{"foo", "bar"},
177*b7c941bbSAndroid Build Coastguard Worker			want:   map[string]any{"foo": "bar"},
178*b7c941bbSAndroid Build Coastguard Worker		},
179*b7c941bbSAndroid Build Coastguard Worker		{
180*b7c941bbSAndroid Build Coastguard Worker			values: []any{errors.New("error_key"), errorValue},
181*b7c941bbSAndroid Build Coastguard Worker			want:   map[string]any{"error_key": errorValue},
182*b7c941bbSAndroid Build Coastguard Worker		},
183*b7c941bbSAndroid Build Coastguard Worker	}
184*b7c941bbSAndroid Build Coastguard Worker	for _, tt := range dictTest {
185*b7c941bbSAndroid Build Coastguard Worker		got := dict(tt.values...)
186*b7c941bbSAndroid Build Coastguard Worker		for k, v := range tt.want {
187*b7c941bbSAndroid Build Coastguard Worker			if got[k] != v {
188*b7c941bbSAndroid Build Coastguard Worker				t.Fatalf("dict(%v)[%q] = %q, want %q", tt.values, k, got[k], v)
189*b7c941bbSAndroid Build Coastguard Worker			}
190*b7c941bbSAndroid Build Coastguard Worker		}
191*b7c941bbSAndroid Build Coastguard Worker	}
192*b7c941bbSAndroid Build Coastguard Worker}
193*b7c941bbSAndroid Build Coastguard Worker
194*b7c941bbSAndroid Build Coastguard Workerfunc TestHasConfigVariant(t *testing.T) {
195*b7c941bbSAndroid Build Coastguard Worker	testReq := pb.Requirement_builder{
196*b7c941bbSAndroid Build Coastguard Worker		Specs: map[int64]*pb.RequirementSpec{
197*b7c941bbSAndroid Build Coastguard Worker			30: pb.RequirementSpec_builder{
198*b7c941bbSAndroid Build Coastguard Worker				TestConfigId: proto.String("720p"),
199*b7c941bbSAndroid Build Coastguard Worker				VariantSpecs: map[string]*pb.VariantSpec{
200*b7c941bbSAndroid Build Coastguard Worker					"VP9": pb.VariantSpec_builder{}.Build(),
201*b7c941bbSAndroid Build Coastguard Worker				},
202*b7c941bbSAndroid Build Coastguard Worker			}.Build(),
203*b7c941bbSAndroid Build Coastguard Worker			34: pb.RequirementSpec_builder{
204*b7c941bbSAndroid Build Coastguard Worker				TestConfigId: proto.String("4k"),
205*b7c941bbSAndroid Build Coastguard Worker				VariantSpecs: make(map[string]*pb.VariantSpec),
206*b7c941bbSAndroid Build Coastguard Worker			}.Build(),
207*b7c941bbSAndroid Build Coastguard Worker		},
208*b7c941bbSAndroid Build Coastguard Worker	}.Build()
209*b7c941bbSAndroid Build Coastguard Worker
210*b7c941bbSAndroid Build Coastguard Worker	tests := []struct {
211*b7c941bbSAndroid Build Coastguard Worker		r         *pb.Requirement
212*b7c941bbSAndroid Build Coastguard Worker		configID  string
213*b7c941bbSAndroid Build Coastguard Worker		variantID string
214*b7c941bbSAndroid Build Coastguard Worker		want      bool
215*b7c941bbSAndroid Build Coastguard Worker	}{
216*b7c941bbSAndroid Build Coastguard Worker		{
217*b7c941bbSAndroid Build Coastguard Worker			r:         testReq,
218*b7c941bbSAndroid Build Coastguard Worker			configID:  "720p",
219*b7c941bbSAndroid Build Coastguard Worker			variantID: "VP9",
220*b7c941bbSAndroid Build Coastguard Worker			want:      true,
221*b7c941bbSAndroid Build Coastguard Worker		},
222*b7c941bbSAndroid Build Coastguard Worker		{
223*b7c941bbSAndroid Build Coastguard Worker			r:         testReq,
224*b7c941bbSAndroid Build Coastguard Worker			configID:  "4k",
225*b7c941bbSAndroid Build Coastguard Worker			variantID: "VP9",
226*b7c941bbSAndroid Build Coastguard Worker			want:      false,
227*b7c941bbSAndroid Build Coastguard Worker		},
228*b7c941bbSAndroid Build Coastguard Worker	}
229*b7c941bbSAndroid Build Coastguard Worker
230*b7c941bbSAndroid Build Coastguard Worker	for _, tc := range tests {
231*b7c941bbSAndroid Build Coastguard Worker		got := HasConfigVariant(tc.r, tc.configID, tc.variantID)
232*b7c941bbSAndroid Build Coastguard Worker		if got != tc.want {
233*b7c941bbSAndroid Build Coastguard Worker			t.Errorf("HasConfigVariant(%v, %q, %q) = %v, want: %v", tc.r, tc.configID, tc.variantID, got, tc.want)
234*b7c941bbSAndroid Build Coastguard Worker		}
235*b7c941bbSAndroid Build Coastguard Worker	}
236*b7c941bbSAndroid Build Coastguard Worker}
237