github.com/westcoastroms/westcoastroms-build@v0.0.0-20190928114312-2350e5a73030/build/soong/cmd/extract_linker/main_test.go (about) 1 // Copyright 2017 Google Inc. All rights reserved. 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 15 package main 16 17 import ( 18 "bytes" 19 "testing" 20 ) 21 22 var bytesToAsmTestCases = []struct { 23 name string 24 in []byte 25 out string 26 }{ 27 { 28 name: "empty", 29 in: []byte{}, 30 out: "\n", 31 }, 32 { 33 name: "short", 34 in: []byte{0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01}, 35 out: ".byte 127,69,76,70,2,1\n", 36 }, 37 { 38 name: "multiline", 39 in: []byte{0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01, 0x01, 0x00, 40 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 41 0x30, 0x00, 0x3e, 0x00, 0x01, 0x00, 0x00, 0x00, 42 0x50, 0x98, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 43 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 44 0x88, 0xd1, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 45 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x38, 0x00, 46 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x38, 0x00, 47 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x38, 0x00}, 48 out: ".byte 127,69,76,70,2,1,1,0,0,0,0,0,0,0,0,0,48,0,62,0,1,0,0,0,80,152,2,0,0,0,0,0,64,0,0,0,0,0,0,0,136,209,18,0,0,0,0,0,0,0,0,0,64,0,56,0,1,0,0,0,64,0,56,0\n" + 49 ".byte 2,0,0,0,64,0,56,0\n", 50 }, 51 } 52 53 func TestBytesToAsm(t *testing.T) { 54 for _, testcase := range bytesToAsmTestCases { 55 t.Run(testcase.name, func(t *testing.T) { 56 buf := bytes.Buffer{} 57 bytesToAsm(&buf, testcase.in) 58 if buf.String() != testcase.out { 59 t.Errorf("input: %#v\n want: %q\n got: %q\n", testcase.in, testcase.out, buf.String()) 60 } 61 }) 62 } 63 }