factor/extra/destructors/destructors-tests.factor

53 lines
1.0 KiB
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? ;
TUPLE: dummy-destructor ;
: <dummy-destructor> ( obj ? -- newobj )
<destructor> dummy-destructor construct-delegate ;
M: dummy-destructor (destruct) ( obj -- )
destructor-obj t swap set-dummy-obj-destroyed? ;
2007-09-20 18:09:08 -04:00
: <dummy-obj>
\ dummy-obj construct-empty ;
: destroy-always
t <dummy-destructor> push-destructor ;
: destroy-later
f <dummy-destructor> push-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