1*16467b97STreehugger Robot #include "UserTestTraits.hpp"
2*16467b97STreehugger Robot #include "t039labelsLexer.hpp"
3*16467b97STreehugger Robot #include "t039labelsParser.hpp"
4*16467b97STreehugger Robot
5*16467b97STreehugger Robot #include <sys/types.h>
6*16467b97STreehugger Robot
7*16467b97STreehugger Robot #include <iostream>
8*16467b97STreehugger Robot #include <sstream>
9*16467b97STreehugger Robot #include <fstream>
10*16467b97STreehugger Robot
11*16467b97STreehugger Robot using namespace Antlr3Test;
12*16467b97STreehugger Robot using namespace std;
13*16467b97STreehugger Robot
14*16467b97STreehugger Robot int testValid(string const& data);
15*16467b97STreehugger Robot int testMalformedInput(string const& data);
16*16467b97STreehugger Robot
17*16467b97STreehugger Robot static t039labelsLexer *lxr;
18*16467b97STreehugger Robot
19*16467b97STreehugger Robot
20*16467b97STreehugger Robot struct TokenData
21*16467b97STreehugger Robot {
22*16467b97STreehugger Robot //t039labelsLexerTokens::Tokens type;
23*16467b97STreehugger Robot //unsigned start;
24*16467b97STreehugger Robot //unsigned stop;
25*16467b97STreehugger Robot const char* text;
26*16467b97STreehugger Robot };
27*16467b97STreehugger Robot
28*16467b97STreehugger Robot static TokenData ExpectedTokens[] =
29*16467b97STreehugger Robot {
30*16467b97STreehugger Robot /*
31*16467b97STreehugger Robot lexer = self.getLexer(cStream)
32*16467b97STreehugger Robot tStream = antlr3.CommonTokenStream(lexer)
33*16467b97STreehugger Robot parser = self.getParser(tStream)
34*16467b97STreehugger Robot ids, w = parser.a()
35*16467b97STreehugger Robot
36*16467b97STreehugger Robot self.assertEqual(len(ids), 6, ids)
37*16467b97STreehugger Robot self.assertEqual(ids[0].text, 'a', ids[0])
38*16467b97STreehugger Robot self.assertEqual(ids[1].text, 'b', ids[1])
39*16467b97STreehugger Robot self.assertEqual(ids[2].text, 'c', ids[2])
40*16467b97STreehugger Robot self.assertEqual(ids[3].text, '1', ids[3])
41*16467b97STreehugger Robot self.assertEqual(ids[4].text, '2', ids[4])
42*16467b97STreehugger Robot self.assertEqual(ids[5].text, 'A', ids[5])
43*16467b97STreehugger Robot
44*16467b97STreehugger Robot self.assertEqual(w.text, 'GNU1', w)
45*16467b97STreehugger Robot */
46*16467b97STreehugger Robot // "a, b, c, 1, 2 A FOOBAR GNU1 A BLARZ"
47*16467b97STreehugger Robot { "a"},
48*16467b97STreehugger Robot { "b"},
49*16467b97STreehugger Robot { "c"},
50*16467b97STreehugger Robot { "1"},
51*16467b97STreehugger Robot { "2"},
52*16467b97STreehugger Robot { "A"},
53*16467b97STreehugger Robot };
54*16467b97STreehugger Robot
55*16467b97STreehugger Robot
main(int argc,char * argv[])56*16467b97STreehugger Robot int main (int argc, char *argv[])
57*16467b97STreehugger Robot {
58*16467b97STreehugger Robot testValid("a, b, c, 1, 2 A FOOBAR GNU1 A BLARZ");
59*16467b97STreehugger Robot return 0;
60*16467b97STreehugger Robot }
61*16467b97STreehugger Robot
testValid(string const & data)62*16467b97STreehugger Robot int testValid(string const& data)
63*16467b97STreehugger Robot {
64*16467b97STreehugger Robot t039labelsLexerTraits::InputStreamType* input = new t039labelsLexerTraits::InputStreamType((const ANTLR_UINT8 *)data.c_str(),
65*16467b97STreehugger Robot ANTLR_ENC_8BIT,
66*16467b97STreehugger Robot data.length(), //strlen(data.c_str()),
67*16467b97STreehugger Robot (ANTLR_UINT8*)"t039");
68*16467b97STreehugger Robot if (lxr == NULL)
69*16467b97STreehugger Robot lxr = new t039labelsLexer(input);
70*16467b97STreehugger Robot else
71*16467b97STreehugger Robot lxr->setCharStream(input);
72*16467b97STreehugger Robot
73*16467b97STreehugger Robot std::cout << "testValid: \"" << data << '"' <<std::endl;
74*16467b97STreehugger Robot
75*16467b97STreehugger Robot t039labelsLexerTraits::TokenStreamType *tstream = new t039labelsLexerTraits::TokenStreamType(ANTLR_SIZE_HINT, lxr->get_tokSource());
76*16467b97STreehugger Robot t039labelsParser *psr = new t039labelsParser(tstream);
77*16467b97STreehugger Robot t039labelsParser::TokenList r = psr->a();
78*16467b97STreehugger Robot
79*16467b97STreehugger Robot for(unsigned i = 0; i < r.tokens.size() ; i++)
80*16467b97STreehugger Robot {
81*16467b97STreehugger Robot t039labelsLexerTraits::CommonTokenType *token = r.tokens.at(i);
82*16467b97STreehugger Robot
83*16467b97STreehugger Robot size_t startIndex = ((const char*)token->get_startIndex()) - data.c_str();
84*16467b97STreehugger Robot size_t stopIndex = ((const char*)token->get_stopIndex()) - data.c_str();
85*16467b97STreehugger Robot
86*16467b97STreehugger Robot std::cout << token->getText()
87*16467b97STreehugger Robot << '\t' << (token->getText() == ExpectedTokens[i].text ? "OK" : "Fail")
88*16467b97STreehugger Robot << std::endl;
89*16467b97STreehugger Robot
90*16467b97STreehugger Robot }
91*16467b97STreehugger Robot delete lxr; lxr = NULL;
92*16467b97STreehugger Robot delete input;
93*16467b97STreehugger Robot return 0;
94*16467b97STreehugger Robot }
95*16467b97STreehugger Robot
96*16467b97STreehugger Robot /*
97*16467b97STreehugger Robot def testValid1(self):
98*16467b97STreehugger Robot cStream = antlr3.StringStream(
99*16467b97STreehugger Robot 'a, b, c, 1, 2 A FOOBAR GNU1 A BLARZ'
100*16467b97STreehugger Robot )
101*16467b97STreehugger Robot
102*16467b97STreehugger Robot lexer = self.getLexer(cStream)
103*16467b97STreehugger Robot tStream = antlr3.CommonTokenStream(lexer)
104*16467b97STreehugger Robot parser = self.getParser(tStream)
105*16467b97STreehugger Robot ids, w = parser.a()
106*16467b97STreehugger Robot
107*16467b97STreehugger Robot self.assertEqual(len(ids), 6, ids)
108*16467b97STreehugger Robot self.assertEqual(ids[0].text, 'a', ids[0])
109*16467b97STreehugger Robot self.assertEqual(ids[1].text, 'b', ids[1])
110*16467b97STreehugger Robot self.assertEqual(ids[2].text, 'c', ids[2])
111*16467b97STreehugger Robot self.assertEqual(ids[3].text, '1', ids[3])
112*16467b97STreehugger Robot self.assertEqual(ids[4].text, '2', ids[4])
113*16467b97STreehugger Robot self.assertEqual(ids[5].text, 'A', ids[5])
114*16467b97STreehugger Robot
115*16467b97STreehugger Robot self.assertEqual(w.text, 'GNU1', w)
116*16467b97STreehugger Robot
117*16467b97STreehugger Robot
118*16467b97STreehugger Robot if __name__ == '__main__':
119*16467b97STreehugger Robot unittest.main()
120*16467b97STreehugger Robot
121*16467b97STreehugger Robot
122*16467b97STreehugger Robot */
123