xref: /aosp_15_r20/tools/treble/hacksaw/config/config_test.go (revision 105f628577ac4ba0e277a494fbb614ed8c12a994)
1*105f6285SAndroid Build Coastguard Worker// Copyright 2020 Google LLC
2*105f6285SAndroid Build Coastguard Worker//
3*105f6285SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*105f6285SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*105f6285SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*105f6285SAndroid Build Coastguard Worker//
7*105f6285SAndroid Build Coastguard Worker//     https://www.apache.org/licenses/LICENSE-2.0
8*105f6285SAndroid Build Coastguard Worker//
9*105f6285SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*105f6285SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*105f6285SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*105f6285SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*105f6285SAndroid Build Coastguard Worker// limitations under the License.
14*105f6285SAndroid Build Coastguard Worker
15*105f6285SAndroid Build Coastguard Workerpackage config
16*105f6285SAndroid Build Coastguard Worker
17*105f6285SAndroid Build Coastguard Workerimport (
18*105f6285SAndroid Build Coastguard Worker	"bytes"
19*105f6285SAndroid Build Coastguard Worker	"reflect"
20*105f6285SAndroid Build Coastguard Worker	"testing"
21*105f6285SAndroid Build Coastguard Worker)
22*105f6285SAndroid Build Coastguard Worker
23*105f6285SAndroid Build Coastguard Workerconst testWriteExpectedOutput = `{
24*105f6285SAndroid Build Coastguard Worker "DefaultCodebase": "test-codebase",
25*105f6285SAndroid Build Coastguard Worker "Codebases": {
26*105f6285SAndroid Build Coastguard Worker  "test-codebase": "/path/to/test/codebase"
27*105f6285SAndroid Build Coastguard Worker },
28*105f6285SAndroid Build Coastguard Worker "Workspaces": {}
29*105f6285SAndroid Build Coastguard Worker}`
30*105f6285SAndroid Build Coastguard Worker
31*105f6285SAndroid Build Coastguard Workerfunc TestWrite(t *testing.T) {
32*105f6285SAndroid Build Coastguard Worker	inputConfig := Config{
33*105f6285SAndroid Build Coastguard Worker		DefaultCodebase: "test-codebase",
34*105f6285SAndroid Build Coastguard Worker		Codebases: map[string]string{
35*105f6285SAndroid Build Coastguard Worker			"test-codebase": "/path/to/test/codebase",
36*105f6285SAndroid Build Coastguard Worker		},
37*105f6285SAndroid Build Coastguard Worker		Workspaces: map[string]string{}}
38*105f6285SAndroid Build Coastguard Worker	var outputBuffer bytes.Buffer
39*105f6285SAndroid Build Coastguard Worker	if err := inputConfig.Write(&outputBuffer); err != nil {
40*105f6285SAndroid Build Coastguard Worker		t.Error(err)
41*105f6285SAndroid Build Coastguard Worker	}
42*105f6285SAndroid Build Coastguard Worker	expectedOutput := []byte(testWriteExpectedOutput)
43*105f6285SAndroid Build Coastguard Worker	if bytes.Compare(outputBuffer.Bytes(), expectedOutput) != 0 {
44*105f6285SAndroid Build Coastguard Worker		t.Errorf("Output %s is different that expected output %s",
45*105f6285SAndroid Build Coastguard Worker			string(outputBuffer.Bytes()), string(expectedOutput))
46*105f6285SAndroid Build Coastguard Worker	}
47*105f6285SAndroid Build Coastguard Worker}
48*105f6285SAndroid Build Coastguard Worker
49*105f6285SAndroid Build Coastguard Workerconst testReadInput = `{
50*105f6285SAndroid Build Coastguard Worker "DefaultCodebase": "test-codebase",
51*105f6285SAndroid Build Coastguard Worker "Codebases": {
52*105f6285SAndroid Build Coastguard Worker  "test-codebase": "/path/to/test/codebase"
53*105f6285SAndroid Build Coastguard Worker },
54*105f6285SAndroid Build Coastguard Worker "Workspaces": {}
55*105f6285SAndroid Build Coastguard Worker}`
56*105f6285SAndroid Build Coastguard Worker
57*105f6285SAndroid Build Coastguard Workerfunc TestRead(t *testing.T) {
58*105f6285SAndroid Build Coastguard Worker	inputBytes := []byte(testReadInput)
59*105f6285SAndroid Build Coastguard Worker	inputBuffer := bytes.NewBuffer(inputBytes)
60*105f6285SAndroid Build Coastguard Worker	var outputConfig Config
61*105f6285SAndroid Build Coastguard Worker	if err := outputConfig.Read(inputBuffer); err != nil {
62*105f6285SAndroid Build Coastguard Worker		t.Error(err)
63*105f6285SAndroid Build Coastguard Worker	}
64*105f6285SAndroid Build Coastguard Worker	expectedOutput := Config{
65*105f6285SAndroid Build Coastguard Worker		DefaultCodebase: "test-codebase",
66*105f6285SAndroid Build Coastguard Worker		Codebases: map[string]string{
67*105f6285SAndroid Build Coastguard Worker			"test-codebase": "/path/to/test/codebase",
68*105f6285SAndroid Build Coastguard Worker		},
69*105f6285SAndroid Build Coastguard Worker		Workspaces: map[string]string{}}
70*105f6285SAndroid Build Coastguard Worker	if !reflect.DeepEqual(outputConfig, expectedOutput) {
71*105f6285SAndroid Build Coastguard Worker		t.Errorf("Written config %v is different than read config %v",
72*105f6285SAndroid Build Coastguard Worker			outputConfig, expectedOutput)
73*105f6285SAndroid Build Coastguard Worker	}
74*105f6285SAndroid Build Coastguard Worker}
75