/* * ticket-333.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/>. * */ /* * Regression test for Ticket #333. * * Ensure that modeldict is identical before and after ResetKernel. * Ensure that GetDefaults can be called on all models after ResetKernel. * * NOTE: This test must be run only on a newly invoked nest. * * Hans Ekkehard Plesser, 2009-04-16 * */ /unittest (8045) require /unittest using % First test: identical modeldicts { modeldict clonedict /md1 Set ; ResetKernel % compare keys % since key order is not guaranteed, and Sort cannot handle strings or literals, % we first check that all keys of md1 are in modeldict, then the other way round md1 keys /md1k Set modeldict keys /md2k Set true md1k { modeldict exch known and } Fold true md2k { md1 exch known and } Fold and { % keys are equal, check values true md1k { /k Set md1 k get modeldict k get eq and } Fold } { false } ifelse } assert_or_die % Second test: attempt GetDefaults % some models excluded as they cause warnings (sli_neuron) or crashes (see #335) { ResetKernel /exlist << /sli_neuron false >> def modeldict keys { dup exlist exch known not { % not on exclusion list, key on stack GetDefaults pop } if } forall } pass_or_die