# Copyright 2020 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.

import("//build/go/go_library.gni")
import("//build/go/go_test.gni")

go_library("fidlgen") {
  sources = [
    "formatter.go",
    "identifiers.go",
    "lazywriter.go",
    "name_context.go",
    "names.go",
    "strings.go",
    "templates.go",
    "types.go",
  ]
}

go_library("fidlgen_test_lib") {
  sources = [
    "identifiers_test.go",
    "names_test.go",
    "strings_test.go",
    "types_test.go",
  ]

  deps = [ ":fidlgen" ]
}

go_test("fidlgen_lib_test") {
  gopackages = [ "go.fuchsia.dev/fuchsia/tools/fidl/lib/fidlgen" ]

  deps = [
    ":fidlgen_test_lib",
    "//third_party/golibs:github.com/google/go-cmp",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":fidlgen_lib_test($host_toolchain)" ]
}
