1376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org//
2376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
3376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org// Use of this source code is governed by a BSD-style license that can be
4376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org// found in the LICENSE file.
5376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org//
6376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org
7376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org#include "PreprocessorTest.h"
8376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org#include "Token.h"
9376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org
10376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.orgvoid PreprocessorTest::preprocess(const char* input, const char* expected)
11376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org{
12376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org    ASSERT_TRUE(mPreprocessor.init(1, &input, NULL));
13376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org
14376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org    int line = 1;
15376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org    pp::Token token;
16376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org    std::stringstream stream;
17376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org    do
18376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org    {
19376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org        mPreprocessor.lex(&token);
20376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org        for (; line < token.location.line; ++line)
21376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org        {
22376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org            stream << "\n";
23376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org        }
24376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org        stream << token;
25376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org    } while (token.type != pp::Token::LAST);
26376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org
27376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org    std::string actual = stream.str();
28376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org    EXPECT_STREQ(expected, actual.c_str());
29376155e63ee79e25fd2312d3ca779800124355bbalokp@chromium.org}
30