// Copyright 2015 The Chromium OS 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 CHROMEOS_DBUS_BINDINGS_TEST_UTILS_H_
#define CHROMEOS_DBUS_BINDINGS_TEST_UTILS_H_

#include <string>

#include <base/location.h>

namespace chromeos_dbus_bindings {
namespace test_utils {

// Helper macro to call ExpectTextContained().
#define EXPECT_TEXT_CONTAINED(expected, actual) \
  ExpectTextContained(FROM_HERE, expected, #expected, actual, #actual)

// Checks that the text |actual_str| is contained in the text |expected_str| and
// fails the current test if not. If the |actual_str| text is not contained, a
// meaningful line diff between |actual_str| and |expected_str| is displayed in
// stderr. Use this function instead of EXPECT_EQ() when the compared values are
// long texts.
void ExpectTextContained(const tracked_objects::Location& from_here,
                         const std::string& expected_str,
                         const std::string& expected_expr,
                         const std::string& actual_str,
                         const std::string& actual_expr);

}  // namespace test_utils
}  // namespace chromeos_dbus_bindings

#endif  // CHROMEOS_DBUS_BINDINGS_TEST_UTILS_H_