# Copyright 2016 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/test.gni")

source_set("demux") {
  sources = [
    "byte_rate_estimator.cc",
    "byte_rate_estimator.h",
    "demux.h",
    "file_reader.cc",
    "file_reader.h",
    "http_reader.cc",
    "http_reader.h",
    "reader.h",
    "reader_cache.cc",
    "reader_cache.h",
    "sliding_buffer.cc",
    "sliding_buffer.h",
  ]

  deps = [
    "//garnet/bin/http:errors",
    "//garnet/public/lib/fsl",
    "//sdk/fidl/fuchsia.net.oldhttp",
    "//src/lib/fxl",
    "//src/media/playback/mediaplayer/graph",
    "//src/media/playback/mediaplayer/util",
  ]

  public_deps = [
    "//garnet/public/lib/component/cpp",
  ]
}

test("tests") {
  output_name = "mediaplayer_demux_tests"

  sources = [
    "test/byte_rate_estimator_test.cc",
    "test/reader_cache_test.cc",
    "test/sliding_buffer_test.cc",
  ]

  deps = [
    ":demux",
    "//third_party/googletest:gtest_main",
  ]
}
