1// 2// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. 3// Use of this source code is governed by a BSD-style license that can be 4// found in the LICENSE file. 5// 6 7#include "PreprocessorTest.h" 8#include "Token.h" 9 10class ErrorTest : public PreprocessorTest 11{ 12}; 13 14TEST_F(ErrorTest, Empty) 15{ 16 const char* str = "#error\n"; 17 const char* expected = "\n"; 18 19 using testing::_; 20 EXPECT_CALL(mDirectiveHandler, handleError(pp::SourceLocation(0, 1), "")); 21 // No error or warning. 22 EXPECT_CALL(mDiagnostics, print(_, _, _)).Times(0); 23 24 preprocess(str, expected); 25} 26 27TEST_F(ErrorTest, OneTokenMessage) 28{ 29 const char* str = "#error foo\n"; 30 const char* expected = "\n"; 31 32 using testing::_; 33 EXPECT_CALL(mDirectiveHandler, 34 handleError(pp::SourceLocation(0, 1), " foo")); 35 // No error or warning. 36 EXPECT_CALL(mDiagnostics, print(_, _, _)).Times(0); 37 38 preprocess(str, expected); 39} 40 41TEST_F(ErrorTest, TwoTokenMessage) 42{ 43 const char* str = "#error foo bar\n"; 44 const char* expected = "\n"; 45 46 using testing::_; 47 EXPECT_CALL(mDirectiveHandler, 48 handleError(pp::SourceLocation(0, 1), " foo bar")); 49 // No error or warning. 50 EXPECT_CALL(mDiagnostics, print(_, _, _)).Times(0); 51 52 preprocess(str, expected); 53} 54 55TEST_F(ErrorTest, Comments) 56{ 57 const char* str = "/*foo*/" 58 "#" 59 "/*foo*/" 60 "error" 61 "/*foo*/" 62 "foo" 63 "/*foo*/" 64 "bar" 65 "/*foo*/" 66 "//foo" 67 "\n"; 68 const char* expected = "\n"; 69 70 using testing::_; 71 EXPECT_CALL(mDirectiveHandler, 72 handleError(pp::SourceLocation(0, 1), " foo bar")); 73 // No error or warning. 74 EXPECT_CALL(mDiagnostics, print(_, _, _)).Times(0); 75 76 preprocess(str, expected); 77} 78 79TEST_F(ErrorTest, MissingNewline) 80{ 81 const char* str = "#error foo"; 82 const char* expected = ""; 83 84 using testing::_; 85 // Directive successfully parsed. 86 EXPECT_CALL(mDirectiveHandler, 87 handleError(pp::SourceLocation(0, 1), " foo")); 88 // Error reported about EOF. 89 EXPECT_CALL(mDiagnostics, print(pp::Diagnostics::PP_EOF_IN_DIRECTIVE, _, _)); 90 91 preprocess(str, expected); 92} 93