blob: adaf1a1284ac354a47e2791db20f69e8cab8f93c [file] [log] [blame]
// Copyright 2017 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.
#include "remoting/host/evaluate_capability.h"
#include "base/strings/string_util.h"
#include "remoting/host/switches.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace remoting {
namespace {
// New line character varies on different platform, so normalize the output
// here to reduce the complexity of comparing.
std::string NormalizeOutput(std::string output) {
base::ReplaceSubstringsAfterOffset(&output, 0, "\r\n", "\n");
base::ReplaceSubstringsAfterOffset(&output, 0, "\r", "\n");
// Windows (evilly) use \r\n to replace \n, so we will end up with two \n.
while (output.find("\n\n") != std::string::npos) {
base::ReplaceSubstringsAfterOffset(&output, 0, "\n\n", "\n");
}
return output;
}
} // namespace
// TODO(zijiehe): Find out the root cause of the unexpected failure of this test
// case. See http://crbug.com/750330.
TEST(EvaluateCapabilityTest, DISABLED_ShouldReturnCrashResult) {
ASSERT_NE(EvaluateCapability("crash"), 0);
}
TEST(EvaluateCapabilityTest, ShouldReturnExitCodeAndOutput) {
std::string output;
ASSERT_EQ(EvaluateCapability("test", &output), 234);
ASSERT_EQ("In EvaluateTest(): Line 1\n"
"In EvaluateTest(): Line 2",
NormalizeOutput(output));
}
TEST(EvaluateCapabilityTest, ShouldReturnSuccessAndOutput) {
std::string output;
ASSERT_EQ(EvaluateCapability("success", &output), 0);
ASSERT_EQ("Success\n", NormalizeOutput(output));
}
} // namespace remoting