Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(493)

Unified Diff: base/test/expectations/parser.h

Issue 1647803004: Move base to DEPS (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/test/expectations/expectation_unittest.cc ('k') | base/test/expectations/parser.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/test/expectations/parser.h
diff --git a/base/test/expectations/parser.h b/base/test/expectations/parser.h
deleted file mode 100644
index 69a741a852d34e0e0bdf7d309d3f448768c45f90..0000000000000000000000000000000000000000
--- a/base/test/expectations/parser.h
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright (c) 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BASE_TEST_EXPECTATIONS_PARSER_H_
-#define BASE_TEST_EXPECTATIONS_PARSER_H_
-
-#include <string>
-
-#include "base/basictypes.h"
-#include "base/strings/string_piece.h"
-#include "base/test/expectations/expectation.h"
-
-namespace test_expectations {
-
-// This is the internal parser for test expectations. It parses an input
-// string and reports information to its Delegate as it's processing the
-// input.
-//
-// The input format is documented here:
-// https://docs.google.com/a/chromium.org/document/d/1edhMJ5doY_dzfbKNCzeJJ-8XxPrexTbNL2Y_jVvLB8Q/view
-//
-// Basic format:
-// "http://bug/1234 [ OS-Version ] Test.Name = Result"
-//
-// The parser is implemented as a state machine, with each state returning a
-// function pointer to the next state.
-class Parser {
- public:
- // The parser will call these methods on its delegate during a Parse()
- // operation.
- class Delegate {
- public:
- // When a well-formed and valid Expectation has been parsed from the input,
- // it is reported to the delegate via this method.
- virtual void EmitExpectation(const Expectation& expectation) = 0;
-
- // Called when the input string is not well-formed. Parsing will stop after
- // this method is called.
- virtual void OnSyntaxError(const std::string& message) = 0;
-
- // Called when an Expectation has been parsed because it is well-formed but
- // contains invalid data (i.e. the modifiers or result are not valid
- // keywords). This Expectation will not be reported via EmitExpectation.
- virtual void OnDataError(const std::string& message) = 0;
- };
-
- // Creates a new parser for |input| that will send data to |delegate|.
- Parser(Delegate* delegate, const std::string& input);
- ~Parser();
-
- // Runs the parser of the input string.
- void Parse();
-
- private:
- // This bit of hackery is used to implement a function pointer type that
- // returns a pointer to a function of the same signature. Since a definition
- // like that is inherently recursive, it's impossible to do:
- // type StateFunc(*StateFunc)(StateData*);
- // However, this approach works without the need to use void*. Inspired by
- // <http://www.gotw.ca/gotw/057.htm>.
- struct StateFunc;
- typedef StateFunc(Parser::*StateFuncPtr)();
- struct StateFunc {
- StateFunc(StateFuncPtr pf) : pf_(pf) {}
- operator StateFuncPtr() {
- return pf_;
- }
- StateFuncPtr pf_;
- };
-
- // Tests whether there is at least one more character at pos_ before end_.
- bool HasNext();
-
- // The parser state functions. On entry, the parser state is at the beginning
- // of the token. Each returns a function pointer to the next state function,
- // or NULL to end parsing. On return, the parser is at the beginning of the
- // next token.
- StateFunc Start();
- StateFunc ParseComment();
- StateFunc ParseBugURL();
- StateFunc BeginModifiers();
- StateFunc InModifiers();
- StateFunc SaveModifier();
- StateFunc EndModifiers();
- StateFunc ParseTestName();
- StateFunc SaveTestName();
- StateFunc ParseExpectation();
- StateFunc ParseExpectationType();
- StateFunc SaveExpectationType();
- StateFunc End();
-
- // A state function that collects character data from the current position
- // to the next whitespace character. Returns the |success| function when at
- // the end of the string, with the data stored in |extracted_string_|.
- StateFunc ExtractString(StateFunc success);
-
- // Function that skips over horizontal whitespace characters and then returns
- // the |next| state.
- StateFunc SkipWhitespace(StateFunc next);
-
- // Does the same as SkipWhitespace but includes newlines.
- StateFunc SkipWhitespaceAndNewLines(StateFunc next);
-
- // State function that reports the given syntax error |message| to the
- // delegate and then returns NULL, ending the parse loop.
- StateFunc SyntaxError(const std::string& message);
-
- // Function that reports the data |error| to the delegate without stopping
- // parsing.
- void DataError(const std::string& error);
-
- // Parser delegate.
- Delegate* delegate_;
-
- // The input string.
- std::string input_;
-
- // Current location in the |input_|.
- const char* pos_;
-
- // Pointer to the end of the |input_|.
- const char* end_;
-
- // Current line number, as updated by SkipWhitespace().
- int line_number_;
-
- // The character data extracted from |input_| as a result of the
- // ExtractString() state.
- base::StringPiece extracted_string_;
-
- // The Expectation object that is currently being processed by the parser.
- // Reset in Start().
- Expectation current_;
-
- // If DataError() has been called during the course of parsing |current_|.
- // If true, then |current_| will not be emitted to the Delegate.
- bool data_error_;
-};
-
-} // namespace test_expectations
-
-#endif // BASE_TEST_EXPECTATIONS_PARSER_H_
« no previous file with comments | « base/test/expectations/expectation_unittest.cc ('k') | base/test/expectations/parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698