public void test_MessageExp_checkHasOperationOrSignal() {
    MessageExp m = factory.createMessageExp();

    CallOperationAction coa = factory.createCallOperationAction();
    coa.setOperation(fruit_ripen);

    SendSignalAction ssa = factory.createSendSignalAction();
    ssa.setSignal(stem);

    m.setCalledOperation(coa);

    assertOK(m, ExpressionsValidator.MESSAGE_EXP__HAS_OPERATION_OR_SIGNAL);

    m.setSentSignal(ssa);

    assertProblem(m, ExpressionsValidator.MESSAGE_EXP__HAS_OPERATION_OR_SIGNAL);

    m.setCalledOperation(null);

    assertOK(m, ExpressionsValidator.MESSAGE_EXP__HAS_OPERATION_OR_SIGNAL);

    m.setSentSignal(null);

    assertProblem(m, ExpressionsValidator.MESSAGE_EXP__HAS_OPERATION_OR_SIGNAL);
  }
  public void test_MessageExp_checkOperationArguments() {
    MessageExp m = factory.createMessageExp();

    CallOperationAction action = factory.createCallOperationAction();
    m.setCalledOperation(action);
    action.setOperation(fruit_ripen);

    UnspecifiedValueExp arg = factory.createUnspecifiedValueExp();
    arg.setType(getOCLStandardLibrary().getBoolean());
    m.getArgument().add(arg);

    assertProblem(m, ExpressionsValidator.MESSAGE_EXP__OPERATION_ARGUMENTS);

    arg.setType(color);

    assertOK(m, ExpressionsValidator.MESSAGE_EXP__OPERATION_ARGUMENTS);

    // no-arg operation
    action.setOperation(fruit_newFruit);

    // wrong number of message args
    assertProblem(m, ExpressionsValidator.MESSAGE_EXP__OPERATION_ARGUMENTS);

    m.getArgument().clear();

    assertOK(m, ExpressionsValidator.MESSAGE_EXP__OPERATION_ARGUMENTS);
  }
  public void test_MessageExp_checkTargetNotCollection() {
    MessageExp m = factory.createMessageExp();

    CallOperationAction action = factory.createCallOperationAction();
    m.setCalledOperation(action);
    action.setOperation(fruit_ripen);

    UnspecifiedValueExp arg = factory.createUnspecifiedValueExp();
    arg.setType(color);
    m.getArgument().add(arg);

    OCLExpression target = factory.createBooleanLiteralExp();
    m.setTarget(target);
    target.setType(factory.createSequenceType());

    assertProblem(m, ExpressionsValidator.MESSAGE_EXP__TARGET_NOT_COLLECTION);

    target.setType(fruit);

    assertOK(m, ExpressionsValidator.MESSAGE_EXP__TARGET_NOT_COLLECTION);
  }