/**
 *   Copyright 2011-2015 Quickstep Technologies LLC.
 *   Copyright 2015 Pivotal Software, Inc.
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 **/

#include "utility/textbased_test/TextBasedTest.hpp"

#include "utility/textbased_test/TextBasedTestRunner.hpp"

#include "gtest/gtest.h"

namespace quickstep {

TEST_P(TextBasedTest, CompareOutputs) {
  test_case_->test_runner->runTestCase(test_case_->input_text, test_case_->options, &test_case_->actual_output_text);
  EXPECT_EQ(test_case_->expected_output_text, test_case_->actual_output_text);
}

}
