| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package bloaty |
| |
| import ( |
| "bytes" |
| "testing" |
| ) |
| |
| const ( |
| tsv = `segments compileunits symbols vmsize filesize |
| [Unmapped] file.c [section .debug_info] 0 15550 |
| LOAD [RX] other.c ecm_bind 4142 4142 |
| [ELF Headers] 0 1920 |
| LOAD [RX] [LOAD [RX]] 530 0` |
| ) |
| |
| func TestReadCSV(t *testing.T) { |
| reader := bytes.NewReader([]byte(tsv)) |
| |
| out := make(chan bloatyOutput) |
| go func() { |
| err := ReadCSV(reader, out, "file.c") |
| if err != nil { |
| t.Fatal(err) |
| } |
| close(out) |
| }() |
| |
| actual := []row{} |
| for o := range out { |
| actual = append(actual, o.data) |
| } |
| |
| expected := []row{ |
| {"ecm_bind", "other.c", "LOAD [RX]", 4142, 4142}, |
| } |
| |
| if len(actual) != len(expected) { |
| t.Fatalf("In TestReadCSV, expected \n%v but got \n%v", expected, actual) |
| } |
| |
| for i, val := range expected { |
| if actual[i] != val { |
| t.Fatalf("In TestReadCSV, expected \n%v but got \n%v", expected, actual) |
| } |
| } |
| } |
| |
| func TestFilterRow(t *testing.T) { |
| goodRow := row{"ecm_bind", "other.c", "LOAD [RX]", 4142, 4142} |
| badRow := row{"[section .debug_info]", "file.c", "[Unmapped]", 0, 15550} |
| |
| actual := filterRow(goodRow) |
| expected := true |
| |
| if actual != expected { |
| t.Fatalf("In TestFilterRows, expected \n%v but got \n%v", expected, actual) |
| } |
| |
| actual = filterRow(badRow) |
| expected = false |
| |
| if actual != expected { |
| t.Fatalf("In TestFilterRows, expected \n%v but got \n%v", expected, actual) |
| } |
| } |