System test feature
[anna.git] / example / diameter / launcher / testing / TestCondition.hpp
1 // ANNA - Anna is Not Nothingness Anymore                                                         //
2 //                                                                                                //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo                         //
4 //                                                                                                //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite                           //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7
8
9 #ifndef example_diameter_launcher_TestCondition_hpp
10 #define example_diameter_launcher_TestCondition_hpp
11
12 // Standard
13 #include <string>
14
15 // Project
16 #include <anna/core/DataBlock.hpp>
17
18
19 namespace anna {
20   namespace xml {
21     class Node;
22   }
23 }
24
25
26 class TestCondition {
27
28   public:
29
30     struct Type { enum _v { Generic, Basic }; };
31     static const char* asText(const Type::_v type) throw();
32
33     TestCondition() : a_rcvFromEntity(true),
34                       a_regexp(""),
35                       a_code(""), a_bitR(""), a_resultCode(""), a_sessionId(""),
36                       a_hopByHop(""), a_msisdn(""), a_imsi(""), a_serviceContextId("") { a_type = Type::Basic; }
37
38
39     // Source of the received message
40     void setReceivedFromEntity(bool rfe) throw() { a_rcvFromEntity = rfe; }
41     bool receivedFromEntity() const throw() { return a_rcvFromEntity; }
42
43     // Generic
44     void setRegexp(const std::string &regexp) throw() { a_regexp = regexp; }
45     // Basic
46     void setCode(const std::string &value) throw() { a_code = value; }
47     void setBitR(const std::string &value) throw() { a_bitR = value; }
48     void setResultCode(const std::string &value) throw() { a_resultCode = value; }
49     void setSessionId(const std::string &value) throw() { a_sessionId = value; }
50     void setHopByHop(const std::string &value) throw() { a_hopByHop = value; }
51     void setMsisdn(const std::string &value) throw() { a_msisdn = value; }
52     void setImsi(const std::string &value) throw() { a_imsi = value; }
53     void setServiceContextId(const std::string &value) throw() { a_serviceContextId = value; }
54
55     bool exists() const throw();
56     friend bool operator==(const TestCondition &c1, const TestCondition &c2) throw();
57
58     // Generic
59     const std::string & getRegexp() const throw() { return a_regexp; }
60     // Basic
61     const std::string & getCode() const throw() { return a_code; }
62     const std::string & getBitR() const throw() { return a_bitR; }
63     const std::string & getResultCode() const throw() { return a_resultCode; }
64     const std::string & getSessionId() const throw() { return a_sessionId; }
65     const std::string & getHopByHop() const throw() { return a_hopByHop; }
66     const std::string & getMsisdn() const throw() { return a_msisdn; }
67     const std::string & getImsi() const throw() { return a_imsi; }
68     const std::string & getServiceContextId() const throw() { return a_serviceContextId; }
69
70
71     bool comply (const anna::DataBlock &message/*, bool matchSessionId*/) const throw();
72
73
74     anna::xml::Node* asXML(anna::xml::Node* parent) const throw();
75
76
77   private:
78
79     // Source of the received message
80     bool a_rcvFromEntity;
81
82     // Type
83     Type::_v a_type;
84
85     // Generic:
86     std::string a_regexp;
87
88     // Basic:
89     std::string a_code;
90     std::string a_bitR;
91     std::string a_resultCode;
92     std::string a_sessionId;
93     std::string a_hopByHop;
94     std::string a_msisdn;
95     std::string a_imsi;
96     std::string a_serviceContextId;
97 };
98
99
100 #endif