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