Om
lexicon_front_push_operation.cpp
Go to the documentation of this file.
1 
15 #ifndef Om_Language_Operation_LexiconFrontPushOperation_
16 
18 
19  #ifdef Om_Macro_Test_
20 
21  #ifndef Om_Macro_Precompilation_
22 
23  #include "boost/test/unit_test.hpp"
24 
25  #endif
26 
27 namespace Om {
28 
29  namespace Language {
30 
31  namespace Operation {
32 
33  BOOST_AUTO_TEST_SUITE(LexiconFrontPushOperationTest)
34 
35  BOOST_AUTO_TEST_CASE(DefinitionTest) {
36  BOOST_CHECK_EQUAL(
37  "{->[lexicon]}",
38  System::Get().Evaluate("drop find {->[lexicon]} system")
39  );
40  }
41 
42  BOOST_AUTO_TEST_CASE(GeneralTest) {
43  BOOST_CHECK_EQUAL(
44  "{a{B}}",
45  System::Get().Evaluate("->[lexicon] {a{A}} {a{B}}")
46  );
47 
48  BOOST_CHECK_EQUAL(
49  "{a{B}}",
50  System::Get().Evaluate("->[lexicon] {a} {a{B}}")
51  );
52 
53  BOOST_CHECK_EQUAL(
54  "{a}",
55  System::Get().Evaluate("->[lexicon] {a{A}} {a}")
56  );
57 
58  BOOST_CHECK_EQUAL(
59  (
60  "{"
61  "a\n"
62  "b{C}"
63  "}"
64  ),
65  System::Get().Evaluate("->[lexicon] {a{A}} {a{B} a b{C}}")
66  );
67  }
68 
69  BOOST_AUTO_TEST_SUITE_END()
70 
71  }
72 
73  }
74 
75 }
76 
77  #endif
78 
79 #else
80 
81  #include "om/language/lexicon.hpp"
83 
84 // MARK: - Om::Language::Operation::LexiconFrontPushOperation
85 
86  #define Type_ \
87  Om::Language::Operation::LexiconFrontPushOperation
88 
89 // MARK: public (static)
90 
91 inline char const * Type_::GetName() {
93 }
94 
95 inline void Type_::Give(Evaluation & theEvaluation) {
96  theEvaluation.TakeOperation(
97  std::auto_ptr<IncompleteOperation>(
98  new FrontPushOperation<
99  Lexicon,
100  LexiconFrontPushOperation
101  >
102  )
103  );
104 }
105 
106  #undef Type_
107 
108 #endif
static System & Get()
Om header file.
#define Om_Language_Operation_LexiconFrontPushOperation_GetName_()
The Om library.
Definition: code_point.hpp:26
std::auto_ptr< TheGiveable > Give(TheGiveable &)
Calls Move on the object.