1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef MEDIA_CAST_TEST_UTILITY_INPUT_BUILDER_ 6 #define MEDIA_CAST_TEST_UTILITY_INPUT_BUILDER_ 7 8 #include <string> 9 10 namespace media { 11 namespace cast { 12 namespace test { 13 14 // This class handles general user input to the application. The user will be 15 // displayed with the title string and be given a default value. When forced 16 // a range, the input values should be within low_range to high_range. 17 // Setting low and high to INT_MIN/INT_MAX is equivalent to not setting a range. 18 class InputBuilder { 19 public: 20 InputBuilder(const std::string& title, 21 const std::string& default_value, 22 int low_range, 23 int high_range); 24 virtual ~InputBuilder(); 25 26 // Ask the user for input, reads input from the input source and returns 27 // the answer. This method will keep asking the user until a correct answer 28 // is returned and is thereby guaranteed to return a response that is 29 // acceptable within the predefined range. 30 // Input will be returned in either string or int format, base on the function 31 // called. 32 std::string GetStringInput() const; 33 int GetIntInput() const; 34 35 private: 36 bool ValidateInput(const std::string input) const; 37 38 const std::string title_; 39 const std::string default_value_; 40 // Low and high range values for input validation. 41 const int low_range_; 42 const int high_range_; 43 }; 44 45 } // namespace test 46 } // namespace cast 47 } // namespace media 48 49 #endif // MEDIA_CAST_TEST_UTILITY_INPUT_BUILDER_ 50