/*
* test_spike_det_reset.sli
*
* This file is part of NEST.
*
* Copyright (C) 2004 The NEST Initiative
*
* NEST is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* NEST is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with NEST. If not, see <http://www.gnu.org/licenses/>.
*
*/
/* BeginDocumentation
Name: testsuite::test_spike_det_reset - test if resetting works on spike_detector
Synopsis: (test_spike_det_reset) run -> dies if assertion fails
Description:
Feeds spike detector with given set of spikes, checks if they
are recorded properly to memory, then resets, then records a
few more and checks.
Author: August 2008, Plesser
SeeAlso: spike_detector
*/
/unittest (7471) require
/unittest using
{
ResetKernel
/spike_generator Create /sg Set
sg << /precise_times false /spike_times [ 10. 200. 10. ] Range >> SetStatus
/spike_detector Create /sd Set
sd << /record_to [/memory] /withtime true /withgid true >> SetStatus
sg sd Connect
/res [] def % array to collect bool results
105 Simulate % should record spikes 10..100 -> 10 spikes
sd [ /n_events ] get 10 eq res exch append /res Set
sd [ /events /senders ] get cva length 10 eq res exch append /res Set
sd [ /events /times ] get cva length 10 eq res exch append /res Set
% reset
sd << /n_events 0 >> SetStatus
sd [ /n_events ] get 0 eq res exch append /res Set
sd [ /events /senders ] get cva length 0 eq res exch append /res Set
sd [ /events /times ] get cva length 0 eq res exch append /res Set
% simulate more
55 Simulate % spikes 110 .. 150 -> 5 spikes
sd [ /n_events ] get 5 eq res exch append /res Set
sd [ /events /senders ] get cva length 5 eq res exch append /res Set
sd [ /events /times ] get cva length 5 eq res exch append /res Set
% combine results
res First res Rest { and } Fold
} assert_or_die
endusing