# Copyright (c) 2016, Daniel Liew
# This file is covered by the license in LICENSE-SVCB.txt
import copy
import pprint
import os
import re

# This declares dictionary of verification tasks
# that is merged into to the loaded verification
# tasks of a `spec.yml` file. This serves to facilitate
# verification properties being implicitly assumed to be
# correct unless otherwise stated.
# This should be kept consistent with `schema.yml`.
DefaultVerificationTaskStatuses = {
  "no_assert_fail": { "correct": True },
  "no_reach_error_function": { "correct": True },
  "no_invalid_free": { "correct": True },
  "no_invalid_deref": { "correct": True },
  "no_integer_division_by_zero": { "correct": True },
  "no_overshift": { "correct": True},
}

class Benchmark(object):
  def __init__(self, data):
    assert isinstance(data, dict)
    # Just store the dict internally
    self._data = data
    assert 'variants' not in self._data
    # TODO: Add all implicit empty fields
    if 'description' not in self._data:
      self._data['description'] = ""
    if 'defines' not in self._data: