#include "nspr.h"
#include "nss.h"
#include "prenv.h"
#include "ssl.h"

#include <cstdlib>

#include "test_io.h"
#include "databuffer.h"

#define GTEST_HAS_RTTI 0
#include "gtest/gtest.h"

std::string g_working_dir_path;
bool g_ssl_gtest_verbose;

int main(int argc, char** argv) {
  // Start the tests
  ::testing::InitGoogleTest(&argc, argv);
  g_working_dir_path = ".";
  g_ssl_gtest_verbose = false;

  char* workdir = PR_GetEnvSecure("NSS_GTEST_WORKDIR");
  if (workdir) g_working_dir_path = workdir;

  for (int i = 0; i < argc; i++) {
    if (!strcmp(argv[i], "-d")) {
      g_working_dir_path = argv[i + 1];
      ++i;
    } else if (!strcmp(argv[i], "-v")) {
      g_ssl_gtest_verbose = true;
      nss_test::DataBuffer::SetLogLimit(16384);
    }
  }

  if (NSS_Initialize(g_working_dir_path.c_str(), "", "", SECMOD_DB,
                     NSS_INIT_READONLY) != SECSuccess) {
    return 1;
  }
  if (NSS_SetDomesticPolicy() != SECSuccess) {
    return 1;
  }
  int rv = RUN_ALL_TESTS();

  if (NSS_Shutdown() != SECSuccess) {
    return 1;
  }

  nss_test::Poller::Shutdown();

  return rv;
}
