| <?php | |
| require "tests.php"; | |
| check::functions(array('trigger_internal_swig_exception')); | |
| check::classes(array('Foo', 'exception_memory_leak')); | |
| // No new vars | |
| check::globals(array()); | |
| $a = new Foo(); | |
| check::equal(Foo::get_count(), 1, "Should have 1 Foo objects"); | |
| $b = new Foo(); | |
| check::equal(Foo::get_count(), 2, "Should have 2 Foo objects"); | |
| // Normal behaviour | |
| trigger_internal_swig_exception("no problem", $a); | |
| check::equal(Foo::get_count(), 2, "Should have 2 Foo objects"); | |
| check::equal(Foo::get_freearg_count(), 1, "freearg should have been used once"); | |
| // SWIG exception triggered and handled (return new object case). | |
| try { | |
| trigger_internal_swig_exception("null", $b); | |
| check::fail("Expected exception not thrown"); | |
| } catch (Exception $e) { | |
| } | |
| check::equal(Foo::get_count(), 2, "Should have 2 Foo objects"); | |
| check::equal(Foo::get_freearg_count(), 2, "freearg should have been used twice"); | |
| // SWIG exception triggered and handled (return by value case). | |
| try { | |
| trigger_internal_swig_exception("null"); | |
| check::fail("Expected exception not thrown"); | |
| } catch (Exception $e) { | |
| } | |
| check::equal(Foo::get_count(), 2, "Should have 2 Foo objects"); |