mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 22:02:23 +01:00
This is a convenient test helper for anything that can use injected streams. Extract this to where it can be used by other tests and add some basic tests, mostly documenting how it works.
64 lines
1.4 KiB
C++
64 lines
1.4 KiB
C++
// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
|
|
// Exceptions. See /LICENSE for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
|
|
#include "common/test_raw_ostream.h"
|
|
|
|
#include <gmock/gmock.h>
|
|
#include <gtest/gtest.h>
|
|
|
|
namespace Carbon::Testing {
|
|
namespace {
|
|
|
|
using ::testing::HasSubstr;
|
|
using ::testing::StrEq;
|
|
|
|
TEST(TestRawOstreamTest, Basics) {
|
|
TestRawOstream os;
|
|
|
|
os << "test 1";
|
|
EXPECT_THAT(os.TakeStr(), StrEq("test 1"));
|
|
|
|
os << "test"
|
|
<< " "
|
|
<< "2";
|
|
EXPECT_THAT(os.TakeStr(), StrEq("test 2"));
|
|
|
|
os << "test";
|
|
os << " ";
|
|
os << "3";
|
|
EXPECT_THAT(os.TakeStr(), StrEq("test 3"));
|
|
}
|
|
|
|
TEST(TestRawOstreamTest, MultipleStreams) {
|
|
TestRawOstream os1;
|
|
TestRawOstream os2;
|
|
|
|
os1 << "test ";
|
|
os2 << "test stream 2";
|
|
os1 << "stream 1";
|
|
EXPECT_THAT(os1.TakeStr(), StrEq("test stream 1"));
|
|
EXPECT_THAT(os2.TakeStr(), StrEq("test stream 2"));
|
|
}
|
|
|
|
TEST(TestRawOstreamTest, MultipleLines) {
|
|
TestRawOstream os;
|
|
|
|
os << "test line 1\n";
|
|
os << "test line 2\n";
|
|
os << "test line 3\n";
|
|
EXPECT_THAT(os.TakeStr(), StrEq("test line 1\ntest line 2\ntest line 3\n"));
|
|
}
|
|
|
|
TEST(TestRawOstreamTest, Substring) {
|
|
TestRawOstream os;
|
|
|
|
os << "test line 1\n";
|
|
os << "test line 2\n";
|
|
os << "test line 3\n";
|
|
EXPECT_THAT(os.TakeStr(), HasSubstr("test line 2"));
|
|
}
|
|
|
|
} // namespace
|
|
} // namespace Carbon::Testing
|