from overload_complicated import *

pInt = None

# Check the correct constructors are available
p = Pop(pInt)

p = Pop(pInt, False)

# Check overloaded in const only and pointers/references which target
# languages cannot disambiguate
if p.hip(False) != 701:
    raise RuntimeError("Test 1 failed")

if p.hip(pInt) != 702:
    raise RuntimeError("Test 2 failed")

# Reverse the order for the above
if p.hop(pInt) != 805:
    raise RuntimeError("Test 3 failed")

if p.hop(False) != 801:
    raise RuntimeError("Test 4 failed")

# Few more variations and order shuffled
if p.pop(False) != 901:
    raise RuntimeError("Test 5 failed")

if p.pop(pInt) != 904:
    raise RuntimeError("Test 6 failed")

if p.pop() != 905:
    raise RuntimeError("Test 7 failed")

# Overload on const only
if p.bop(pInt) != 1001:
    raise RuntimeError("Test 8 failed")

if p.bip(pInt) != 2002:
    raise RuntimeError("Test 9 failed")

# Globals
if muzak(False) != 3001:
    raise RuntimeError("Test 10 failed")

if muzak(pInt) != 3002:
    raise RuntimeError("Test 11 failed")
