Classes | Namespaces | Functions

mitkMessageTest.cpp File Reference

#include "mitkMessage.h"
#include "mitkTestingMacros.h"
#include <iostream>

Go to the source code of this file.

Classes

class  mitk::mitkMessageTestTestClass
class  mitk::mitkMessageTestTestClass::Package
class  mitk::mitkMessageTestTestClass::MessageSenderClass
class  mitk::mitkMessageTestTestClass::MessageReceiverClass
class  mitk::mitkMessageTestTestClass::Law
class  mitk::mitkMessageTestTestClass::NewtonMachine
class  mitk::mitkMessageTestTestClass::Observer

Namespaces

namespace  mitk
 

Qmitk.


Functions

int mitkMessageTest (int, char *[])

Function Documentation

int mitkMessageTest ( int  ,
char *  [] 
)

Definition at line 332 of file mitkMessageTest.cpp.

References mitk::mitkMessageTestTestClass::MessageReceiverClass::Age(), mitk::mitkMessageTestTestClass::MessageReceiverClass::Amnesia(), mitk::mitkMessageTestTestClass::MessageSenderClass::DoGivePackage(), mitk::mitkMessageTestTestClass::MessageSenderClass::DoSay(), mitk::mitkMessageTestTestClass::MessageSenderClass::DoShoutAgeAndFootSize(), mitk::mitkMessageTestTestClass::MessageSenderClass::DoShowFinger(), mitk::mitkMessageTestTestClass::MessageSenderClass::DoWalk(), mitk::mitkMessageTestTestClass::MessageSenderClass::DoWaveHand(), mitk::mitkMessageTestTestClass::MessageReceiverClass::FootSize(), mitk::mitkMessageTestTestClass::MessageReceiverClass::HandWaved(), mitk::mitkMessageTestTestClass::Observer::m_Error, mitk::mitkMessageTestTestClass::Observer::m_Law, mitk::mitkMessageTestTestClass::Observer::m_MachineStarted, mitk::mitkMessageTestTestClass::Observer::m_MachineStopped, mitk::mitkMessageTestTestClass::MessageReceiverClass::MetersWalked(), MITK_TEST_BEGIN, MITK_TEST_CONDITION, MITK_TEST_CONDITION_REQUIRED, MITK_TEST_END, mitk::mitkMessageTestTestClass::MessageReceiverClass::PackageReceived(), mitk::mitkMessageTestTestClass::MessageReceiverClass::RegisterObservers(), mitk::mitkMessageTestTestClass::NewtonMachine::StartAnalysis(), mitk::mitkMessageTestTestClass::NewtonMachine::StopAnalysis(), and mitk::mitkMessageTestTestClass::MessageReceiverClass::WordsSaid().

{
  MITK_TEST_BEGIN("Message")

  mitk::mitkMessageTestTestClass::MessageSenderClass sender;
  mitk::mitkMessageTestTestClass::MessageReceiverClass receiver;

  MITK_TEST_CONDITION_REQUIRED(true, "Testing instantiation");

  receiver.RegisterObservers(sender);

  MITK_TEST_CONDITION_REQUIRED(true, "Testing registration to messages");

  MITK_TEST_CONDITION_REQUIRED(
      (sender.DoWaveHand(),  // This is called "comma operator". Don't ask, read!
       receiver.HandWaved()),
      "Message without parameters");
  receiver.Amnesia();

  MITK_TEST_CONDITION_REQUIRED(
      (sender.DoShowFinger(),
       receiver.HandWaved()),
      "Message without parameters");
  receiver.Amnesia();

  MITK_TEST_CONDITION_REQUIRED(
      (sender.DoSay("Blooodworsch"),
       receiver.WordsSaid() == "Blooodworsch"),
      "Message with std::string parameter");
  receiver.Amnesia();

  MITK_TEST_CONDITION_REQUIRED(
      (sender.DoWalk(2.67),
       (receiver.MetersWalked() - 2.67) < 0.0001 ),
      "Message with double parameter");
  receiver.Amnesia();

  mitk::mitkMessageTestTestClass::Package package(8);
  MITK_TEST_CONDITION_REQUIRED(
      (sender.DoGivePackage(package),
       receiver.PackageReceived() == package),
      "Message with class parameter");
  receiver.Amnesia();

  MITK_TEST_CONDITION_REQUIRED(
      (sender.DoShoutAgeAndFootSize(46, 30.5),
       (receiver.Age() == 46 && (receiver.FootSize() - 30.5 < 0.0001))),
      "Message with int AND float parameter");
  receiver.Amnesia();


  mitk::mitkMessageTestTestClass::NewtonMachine newtonMachine;
  mitk::mitkMessageTestTestClass::Observer observer1(&newtonMachine);
  mitk::mitkMessageTestTestClass::Observer observer2(&newtonMachine);

  // This will send two events to registered observers
  newtonMachine.StartAnalysis();
  MITK_TEST_CONDITION(observer1.m_MachineStarted == true, "Message from Message Macro send to receiver 1");
  MITK_TEST_CONDITION(observer2.m_MachineStarted == true, "Message from Message Macro send to receiver 2");
  
  MITK_TEST_CONDITION(observer1.m_Law.GetDescription() == std::string("Unit tests are mandatory!"), 
    "Message1 from Message Macro send to receiver 1");
  MITK_TEST_CONDITION(observer2.m_Law.GetDescription() == std::string("Unit tests are mandatory!"), 
    "Message1 from Message Macro send to receiver 2");

  
  // This will send one event to registered observers
  newtonMachine.StopAnalysis();
  MITK_TEST_CONDITION(observer1.m_MachineStopped == true, "Message1 from Message Macro send to receiver 1");
  MITK_TEST_CONDITION(observer1.m_Error == true, "Message1 parameter from Message Macro send to receiver 1");

  MITK_TEST_CONDITION(observer2.m_MachineStopped == true, "Message1 from Message Macro send to receiver 2");
  MITK_TEST_CONDITION(observer2.m_Error == true, "Message1 parameter from Message Macro send to receiver 2");

  /* Message with return type tests are work in progess... */
  //bool patentSuccessful = newtonMachine.PatentLaw();   // what with return types from multiple observers?

  //MITK_TEST_CONDITION((observer1.m_PatentReviewed == true) && (patentSuccessful == false), 
  //  "Message with return type from Message Macro send to receiver 1");
  //
  //MITK_TEST_CONDITION((observer2.m_PatentReviewed == true) && (patentSuccessful == false), 
  //  "Message with return type from Message Macro send to receiver 2");
  
  MITK_TEST_END();
}
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines