# 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",
    "names.go",
    "strings.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)" ]
}
