// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "cobalt/media/base/media_file_checker.h"

#include <string>
#include <utility>

#include "base/files/file.h"
#include "base/logging.h"
#include "build/build_config.h"
#include "cobalt/media/base/test_data_util.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace cobalt {
namespace media {

static void RunMediaFileChecker(const std::string& filename, bool expectation) {
  base::File file(GetTestDataFilePath(filename),
                  base::File::FLAG_OPEN | base::File::FLAG_READ);
  ASSERT_TRUE(file.IsValid());

  MediaFileChecker checker(std::move(file));
  const base::TimeDelta check_time = base::TimeDelta::FromMilliseconds(100);
  bool result = checker.Start(check_time);
  EXPECT_EQ(expectation, result);
}

TEST(MediaFileCheckerTest, InvalidFile) {
  RunMediaFileChecker("ten_byte_file", false);
}

TEST(MediaFileCheckerTest, Video) { RunMediaFileChecker("bear.ogv", true); }

TEST(MediaFileCheckerTest, Audio) { RunMediaFileChecker("sfx.ogg", true); }

#if defined(USE_PROPRIETARY_CODECS)
TEST(MediaFileCheckerTest, MP3) { RunMediaFileChecker("sfx.mp3", true); }
#endif

}  // namespace media
}  // namespace cobalt
