END_TEST


START_TEST (test_L3Trigger_setPersistent)
{
    int i = Trigger_setPersistent(T, 0);

    fail_unless( i == LIBSBML_OPERATION_SUCCESS );

    fail_unless( Trigger_getPersistent(T) == 0 );
    fail_unless( Trigger_isSetPersistent(T) == 1 );

    i = Trigger_unsetPersistent(T);

    fail_unless( i == LIBSBML_OPERATION_SUCCESS );

    fail_unless( Trigger_getPersistent(T) == 0 );
    fail_unless( Trigger_isSetPersistent(T) == 0 );

    i = Trigger_setPersistent(T, 1);

    fail_unless( i == LIBSBML_OPERATION_SUCCESS );

    fail_unless( Trigger_getPersistent(T) == 1 );
    fail_unless( Trigger_isSetPersistent(T) == 1 );

    i = Trigger_unsetPersistent(T);

    fail_unless( i == LIBSBML_OPERATION_SUCCESS );

    fail_unless( Trigger_getPersistent(T) == 1 );
    fail_unless( Trigger_isSetPersistent(T) == 0 );

}
END_TEST


START_TEST (test_L3Trigger_setPersistent1)
{
  Trigger_t *t = Trigger_create(2, 4);

  int i = Trigger_setPersistent(t, 0);

  fail_unless( i == LIBSBML_UNEXPECTED_ATTRIBUTE );
 
  fail_unless( Trigger_getPersistent(T) == 1 );
  fail_unless( Trigger_isSetPersistent(T) == 0 );

  Trigger_free(t);
}
END_TEST


START_TEST (test_SBMLConvert_convertFromL3_persistent)
{
  SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(3, 1);
  Model_t        *m = SBMLDocument_createModel(d);

  Event_t * e = Model_createEvent(m);
  Trigger_t * t = Event_createTrigger(e);
  Trigger_setPersistent(t, 0);

  fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 1, 1) == 0);
  fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 1, 2) == 0);
  fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 2, 1) == 0);
  fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 2, 2) == 0);
  fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 2, 3) == 0);
  fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 2, 4) == 0);
  fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 3, 1) == 1);

}
END_TEST


START_TEST (test_L3_Event_hasRequiredElements )
{
  Event_t *e = Event_create (3, 1);

  fail_unless ( !Event_hasRequiredElements(e));

  Trigger_t *t = Trigger_create(3, 1);
  ASTNode_t* math = SBML_parseFormula("true");
  Trigger_setMath(t, math);
  ASTNode_free(math);
  Trigger_setInitialValue(t, 1);
  Trigger_setPersistent(t, 1);
  Event_setTrigger(e, t);

  fail_unless ( Event_hasRequiredElements(e));

  Event_free(e);
  Trigger_free(t);
}