////////////////////////////////////////////////////////////////////////
{
final VSICLIFNeuronPara
vsiclifNeuronPara = ErnstTestLib.createTestVsiclifNeuronPara ( );
final Neuron neuron = new VSICLIFNeuron ( vsiclifNeuronPara );
neuron.init (
1, // expId
1, // trialId
ErnstTestLib.createTestSeed ( ), // idum
ErnstTestLib.createTestNetwork ( ), // net
0 ); // id
// interface Neuron accessor methods
// VSICLIFNeuron is not a sensory neuron
assertFalse ( neuron.isSensory ( ) );
final double [ ] currents = neuron.getCurr ( 0 );
assertNotNull ( currents );
// VSICLIFNeuron has 2 currents: excitatory and inhibitory
assertEquals ( 2, currents.length );
// LOGGER.debug ( "excitatory current ...: {}", currents [ 0 ] );
//
// LOGGER.debug ( "inhibitory current ...: {}", currents [ 1 ] );
// Initially the currents should be zero
assertEquals ( 0, currents [ 0 ], 0 );
assertEquals ( 0, currents [ 1 ], 0 );
// final double membraneVoltage = neuron.getMemV ( 0 );
// LOGGER.debug ( "membrane voltage .....: {}", membraneVoltage );
// Initially the membrane voltage should be the reset voltage
// Edit: no, it shouldn't. In the init() method of the VSICLIF neuron,
// the membrane voltage is initialized to a random value.
// assertEquals ( vsiclifNeuronPara.VRESET, membraneVoltage, 0 );
final boolean record = neuron.getRecord ( );
assertFalse ( record );
final long targetHost = neuron.getTHost ( );
assertEquals ( 0, targetHost );
final double timeOfNextFire = neuron.getTimeOfNextFire ( );
// LOGGER.debug ( "time of next fire ....: {}", timeOfNextFire );
assertEquals ( -1, timeOfNextFire, 0 );
final boolean realFire = neuron.realFire ( );
assertFalse ( realFire );
}