factor/extra/destructors/destructors-tests.factor

51 lines
1001 B
Factor
Raw Normal View History

2007-10-06 13:37:11 -04:00
USING: destructors kernel tools.test continuations ;
2007-09-20 18:09:08 -04:00
IN: temporary
TUPLE: dummy-obj destroyed? ;
: <dummy-obj> dummy-obj construct-empty ;
TUPLE: dummy-destructor obj ;
C: <dummy-destructor> dummy-destructor
M: dummy-destructor destruct ( obj -- )
dummy-destructor-obj t swap set-dummy-obj-destroyed? ;
2007-09-20 18:09:08 -04:00
: destroy-always
<dummy-destructor> add-always-destructor ;
: destroy-later
<dummy-destructor> add-error-destructor ;
2007-09-20 18:09:08 -04:00
[ t ] [
[
<dummy-obj> dup destroy-always
2007-09-20 18:09:08 -04:00
] with-destructors dummy-obj-destroyed?
] unit-test
[ f ] [
[
<dummy-obj> dup destroy-later
2007-09-20 18:09:08 -04:00
] with-destructors dummy-obj-destroyed?
] unit-test
[ t ] [
<dummy-obj> [
[
dup destroy-always
2007-09-20 18:09:08 -04:00
"foo" throw
] with-destructors
] catch drop dummy-obj-destroyed?
] unit-test
[ t ] [
<dummy-obj> [
[
dup destroy-later
2007-09-20 18:09:08 -04:00
"foo" throw
] with-destructors
] catch drop dummy-obj-destroyed?
] unit-test