def assert_equal(x, y)
{
  if (x == y)
  {
    // Passes
  } else {
    // Fails
    print("assert_equal failure: got " + to_string(y) + " expected " + to_string(x));
    exit(-1);
  }
}

def assert_false(f)
{
  if (f)
  {
    print("assert_false failure");
    exit(-1);
  }
}

def assert_true(f)
{
  if (!f)
  {
    print("assert_false failure");
    exit(-1);
  }
}

def assert_not_equal(x, y)
{
  if (!(x == y))
  {
    // Passes
  } else {
    // Fails
    print("assert_not_equal failure: got " + to_string(y) + " which was not expected.");
    exit(-1);
  }
}

def assert_throws(desc, x)
{
  if (throws_exception(x))
  {
    // Passes
  } else {
    // Fails
    print("assert_throws failure, function did not throw exception: " + to_string(desc));
    exit(-1);
  }
}
