blob: c95b2b8d64cbeae9d1e36f92671277161ff4ee7a [file] [log] [blame]
// 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 benchmarking
import (
"bytes"
"reflect"
"testing"
)
func TestDecodeTestResultsFile(t *testing.T) {
expected := &TestResultsFile{
&TestCaseResults{
Label: "test case",
TestSuite: "test suite",
Unit: Nanoseconds,
Values: []float64{100, 200, 300},
},
}
input := []byte(`
[
{
"label": "test case",
"test_suite": "test suite",
"unit": "nanoseconds",
"values": [
100,
200,
300
]
}
]`)
output, err := DecodeTestResultsFile(input)
if err != nil {
t.Fatalf("failed to decode JSON: %s: %v", string(input), err)
}
if !reflect.DeepEqual(expected, output) {
t.Fatalf("structs are different; expected:\n%#v\nbut got:\n%#v\n", expected, output)
}
}
func TestTestResultsFile_Add(t *testing.T) {
var file TestResultsFile
results := &TestCaseResults{
Label: "test case",
TestSuite: "test suite",
Unit: Nanoseconds,
Values: []float64{100, 200, 300},
}
file.Add(results)
expected := TestResultsFile{results}
if !reflect.DeepEqual(file, expected) {
t.Errorf("expected \n%#v\n. Got \n%#v\n", expected, file)
}
}
func TestTestResultsFile_Encode(t *testing.T) {
file := &TestResultsFile{
&TestCaseResults{
Label: "test case",
TestSuite: "test suite",
Unit: Nanoseconds,
Values: []float64{100, 200, 300},
},
}
encoded := new(bytes.Buffer)
if err := file.Encode(encoded); err != nil {
t.Fatalf("conversion to JSON failed: %v", err)
}
decoded, err := DecodeTestResultsFile(encoded.Bytes())
if err != nil {
t.Fatalf("decoding JSON failed: %v", err)
}
actual := decoded
expected := file
if !reflect.DeepEqual(actual, expected) {
actualJSON := new(bytes.Buffer)
if err := actual.Encode(actualJSON); err != nil {
t.Fatal(err)
}
expectedJSON := new(bytes.Buffer)
if err := expected.Encode(expectedJSON); err != nil {
t.Fatal(err)
}
t.Fatalf("expected \n%s\nGot\n%s\n", expectedJSON, actualJSON)
}
}