Skip to content
Snippets Groups Projects
FunctionParserTest.h 2.51 KiB
Newer Older
#ifndef TEST_IMPLICIT_FUNCTION_PARSERS_H_
#define TEST_IMPLICIT_FUNCTION_PARSERS_H_

// Abstract testing base class for function parsers.

#include <boost/scoped_ptr.hpp>
#include "MantidMDAlgorithms/MDParameterParserDeclarations.h"
#include "MantidMDAlgorithms/Vector3DParameterParser.h"
#include "MantidMDAlgorithms/InvalidParameterParser.h"
#include "MantidMDAlgorithms/PlaneFunctionBuilder.h"

#include "MantidAPI/ImplicitFunctionParser.h"
#include "MantidAPI/ImplicitFunctionParameterParser.h"
#include <cxxtest/TestSuite.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>

class FunctionParserTest {
protected:
  // Mock function parser class.
  class MockFunctionParser : public Mantid::API::ImplicitFunctionParser {
  public:
    MockFunctionParser(
        Mantid::API::ImplicitFunctionParameterParser *paramParser)
        : Mantid::API::ImplicitFunctionParser(paramParser) {
      ;
    MOCK_METHOD1(createFunctionBuilder,
                 Mantid::API::ImplicitFunctionBuilder *(
                     Poco::XML::Element *functionElement));
    MOCK_METHOD1(setSuccessorParser,
                 void(Mantid::API::ImplicitFunctionParser *parameterElement));
    MOCK_METHOD1(
        setParameterParser,
        void(Mantid::API::ImplicitFunctionParameterParser *parameterElement));
  };

  // Mock parameter parser class.
  class MockParameterParser
      : public Mantid::API::ImplicitFunctionParameterParser {
  public:
    MOCK_METHOD1(createParameter, Mantid::API::ImplicitFunctionParameter *(
                                      Poco::XML::Element *parameterElement));
    MOCK_METHOD1(
        setSuccessorParser,
        void(Mantid::API::ImplicitFunctionParameterParser *parameterParser));
  };

  // helper method to construct real parameter parser chain.
  Mantid::API::ImplicitFunctionParameterParser *constructRootParameterParser() {
    using namespace Mantid::MDAlgorithms;
    using namespace Mantid::API;
    ImplicitFunctionParameterParser *originParser = new OriginParameterParser;
    ImplicitFunctionParameterParser *upParser = new UpParameterParser;
    ImplicitFunctionParameterParser *normalParser = new NormalParameterParser;
    ImplicitFunctionParameterParser *invalidParser = new InvalidParameterParser;
    ImplicitFunctionParameterParser *widthParser = new WidthParameterParser;

    widthParser->setSuccessorParser(invalidParser);
    upParser->setSuccessorParser(widthParser);
    originParser->setSuccessorParser(upParser);
    normalParser->setSuccessorParser(originParser);
    return normalParser;
  }