module overload_complicated_runme;

import overload_complicated;

void main() {
  SWIGTYPE_p_int pInt = null;

  // Check the correct constructors are available
  Pop p = new Pop(pInt);

  p = new Pop(pInt, false);

  // Check overloaded in const only and pointers/references which target languages cannot disambiguate
  if (p.hip(false) != 701)
    throw new Exception("Test 1 failed");

  if (p.hip(pInt) != 702)
    throw new Exception("Test 2 failed");

  // Reverse the order for the above
  if (p.hop(pInt) != 805)
    throw new Exception("Test 3 failed");

  if (p.hop(false) != 801)
    throw new Exception("Test 4 failed");

  // Few more variations and order shuffled
  if (p.pop(false) != 901)
    throw new Exception("Test 5 failed");

  if (p.pop(pInt) != 902)
    throw new Exception("Test 6 failed");

  if (p.pop() != 905)
    throw new Exception("Test 7 failed");

  // Overload on const only
  if (p.bop(pInt) != 1001)
    throw new Exception("Test 8 failed");

  if (p.bip(pInt) != 2001)
    throw new Exception("Test 9 failed");

  // Globals
  if (muzak(false) != 3001)
    throw new Exception("Test 10 failed");

  if (muzak(pInt) != 3002)
    throw new Exception("Test 11 failed");
}
