IN: temporary USING: arrays generic kernel math models namespaces sequences test ; TUPLE: model-tester hit? ; C: model-tester ; M: model-tester model-changed t swap set-model-tester-hit? ; [ T{ model-tester f t } ] [ T{ model-tester f f } 3 2dup add-connection 5 swap set-model ] unit-test 3 "model-a" set 4 "model-b" set "model-a" get "model-b" get 2array "model-c" set [ { 3 4 } ] [ "model-c" get model-value ] unit-test T{ model-tester f f } "tester" set [ T{ model-tester f t } { 6 4 } ] [ "tester" get "model-c" get add-connection 6 "model-a" get set-model "tester" get "model-c" get model-value ] unit-test f "history" set "history" get add-history [ t ] [ "history" get history-back empty? ] unit-test [ t ] [ "history" get history-forward empty? ] unit-test "history" get add-history 3 "history" get set-model [ t ] [ "history" get history-back empty? ] unit-test [ t ] [ "history" get history-forward empty? ] unit-test "history" get add-history 4 "history" get set-model [ f ] [ "history" get history-back empty? ] unit-test [ t ] [ "history" get history-forward empty? ] unit-test "history" get go-back [ 3 ] [ "history" get model-value ] unit-test [ t ] [ "history" get history-back empty? ] unit-test [ f ] [ "history" get history-forward empty? ] unit-test "history" get go-forward [ 4 ] [ "history" get model-value ] unit-test [ f ] [ "history" get history-back empty? ] unit-test [ t ] [ "history" get history-forward empty? ] unit-test ! Test multiple filters 3 "x" set "x" get [ 2 * ] dup "z" set [ 1+ ] "y" set [ ] [ "y" get activate-model ] unit-test [ t ] [ "z" get "x" get model-connections memq? ] unit-test [ 7 ] [ "y" get model-value ] unit-test [ ] [ 4 "x" get set-model ] unit-test [ 9 ] [ "y" get model-value ] unit-test [ ] [ "y" get deactivate-model ] unit-test [ f ] [ "z" get "x" get model-connections memq? ] unit-test