blob: 6a0250296bd3a94fbb790b4273fd3d8d75f60c71 [file] [log] [blame]
// Copyright 2019 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 source_generator
import (
"testing"
"github.com/google/go-cmp/cmp"
)
func TestParseOutFormatList(t *testing.T) {
testCases := []struct {
input string
expected []string
}{
{
input: "",
expected: []string{},
},
{
input: "rust",
expected: []string{"rust"},
},
{
input: "rust cpp",
expected: []string{"rust", "cpp"},
},
{
input: "rust ",
expected: []string{"rust"},
},
}
for _, tc := range testCases {
if diff := cmp.Diff(parseOutFormatList(tc.input), tc.expected); diff != "" {
t.Errorf("%s", diff)
}
}
}
func TestGenerateFilename(t *testing.T) {
testCases := []struct {
outFile string
outFilename string
outDir string
dartOutDir string
format string
expected string
}{
{
outFilename: "base",
format: "cpp",
expected: "base.cb.h",
},
{
outFilename: "base",
format: "bin",
expected: "base.pb",
},
{
outFilename: "base",
format: "rust",
expected: "base.rs",
},
{
outFilename: "base",
format: "json",
expected: "base.json",
},
{
outFilename: "base",
format: "dart",
expected: "base.dart",
},
{
outFilename: "base",
outDir: "out_dir",
dartOutDir: "should be ignored",
format: "cpp",
expected: "out_dir/base.cb.h",
},
{
outFilename: "base",
outDir: "should be ignored",
dartOutDir: "dart_dir",
format: "dart",
expected: "dart_dir/base.dart",
},
}
for _, tc := range testCases {
actual := getFilenameGenerator(tc.outFile, tc.outFilename, tc.outDir, tc.dartOutDir)(tc.format)
if actual != tc.expected {
t.Errorf("getFilenameGenerator(%q, %q, %q, %q)(%q) = %q, expected %q",
tc.outFile, tc.outFilename, tc.outDir, tc.dartOutDir, tc.format, actual, tc.expected)
}
}
}