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

import("//testing/libfuzzer/fuzzer_test.gni")

component("cbor") {
  sources = [
    "constants.h",
    "reader.cc",
    "reader.h",
    "values.cc",
    "values.h",
    "writer.cc",
    "writer.h",
  ]

  defines = [ "CBOR_IMPLEMENTATION" ]

  deps = [
    "//base",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "reader_unittest.cc",
    "values_unittest.cc",
    "writer_unittest.cc",
  ]

  deps = [
    ":cbor",
    "//base",
    "//testing/gmock",
    "//testing/gtest",
  ]
}

fuzzer_test("reader_fuzzer") {
  sources = [
    "reader_fuzzer.cc",
  ]
  deps = [
    ":cbor",
    "//base",
  ]
  seed_corpus = "reader_fuzzer_corpus/"
  libfuzzer_options = [ "max_len=65535" ]
}
