/*
* test_set_start_stop_origin.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_set_start_stop_origin - sli script to test if start, stop and origin are set properly
Synopsis: (test_set_start_stop_origin) run
Description:
For all models having start, stop, and origin parameters, this test checks that
- default values can be set successfully
- nodes are created with correct default values
- nodes can be created with correct default values from the command line
- parameters can be set via SetStatus
FirstVersion: December 2011
Author: Hans E Plesser
*/
/unittest (8831) require
/unittest using
M_WARNING setverbosity
/deviceparams [/start /stop /origin] def
/testvalue 1237. def % unlikely value
ResetKernel
% build list of all models having at least one of deviceparams
/devmodels [] def
modeldict {
; /mod Set
mod GetDefaults /defs Set
false deviceparams { defs exch known or } Fold
{
/devmodels devmodels mod append def
} if
} forall
% First test: check that any model that has one deviceparam has all
{
ResetKernel
true devmodels
{
GetDefaults /defs Set
true deviceparams { defs exch known and } Fold
and
} Fold
} assert_or_die
% Second test: ensure that no default value is equal to test value
{
ResetKernel
true devmodels
{
GetDefaults /defs Set
true deviceparams { defs exch get /testvalue neq and } Fold
and
} Fold
} assert_or_die
% Third test: check that default values can be set
{
ResetKernel
true
devmodels
{
/model Set
true
deviceparams
{
/p Set
model << p testvalue >> SetDefaults
model GetDefaults p get
testvalue eq
dup not { (Failed on: ) model cvs join == } if
and
} Fold
and
} Fold
} assert_or_die
% Fourth test: check that default values are transferred to neurons
{
ResetKernel
true
devmodels
{
/model Set
true
deviceparams
{
/p Set
model << p testvalue >> SetDefaults
model Create p get
testvalue eq
dup not { (Failed on: ) model cvs join == } if
and
} Fold
and
} Fold
} assert_or_die
% Fifth test: check that values can be set on construction
{
ResetKernel
true
devmodels
{
/model Set
true
deviceparams
{
/p Set
model << p testvalue >> Create p get
testvalue eq
dup not { (Failed on: ) model cvs join == } if
and
} Fold
and
} Fold
} assert_or_die
% Sixth test: check that values can be set on node
{
ResetKernel
true
devmodels
{
/model Set
true
deviceparams
{
/p Set
model Create /n Set
n p get testvalue neq
n << p testvalue >> SetStatus
n p get testvalue eq
and
dup not { (Failed on: ) model cvs join == } if
and
} Fold
and
} Fold
} assert_or_die
endusing