diff options
Diffstat (limited to 'fcp/testing/testing_test.cc')
-rw-r--r-- | fcp/testing/testing_test.cc | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/fcp/testing/testing_test.cc b/fcp/testing/testing_test.cc new file mode 100644 index 0000000..24c3136 --- /dev/null +++ b/fcp/testing/testing_test.cc @@ -0,0 +1,101 @@ +/* + * Copyright 2017 Google LLC + * + * 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 "fcp/testing/testing.h" + +#include "gtest/gtest.h" +#include "absl/flags/flag.h" +#include "fcp/base/monitoring.h" +#include "fcp/testing/test_messages.pb.h" + +ABSL_FLAG(std::string, baseline_path, "", "Path to baseline"); + +namespace fcp { + +namespace { + +using ::testing::Not; + +TEST(TestingTest, TestName) { ASSERT_EQ(TestName(), "TestName"); } + +TEST(TestingTest, TestDataPath) { + auto path = GetTestDataPath(absl::GetFlag(FLAGS_baseline_path)); + ASSERT_TRUE(FileExists(path)); +} + +TEST(TestingTest, TemporaryTestFile) { + auto path = TemporaryTestFile(".dat"); + ASSERT_EQ(WriteStringToFile(path, "test").code(), OK); + ASSERT_EQ(ReadFileToString(path).value(), "test"); +} + +TEST(TestingTest, VerifyAgainstBaseline) { + auto status_or_diff = VerifyAgainstBaseline( + absl::GetFlag(FLAGS_baseline_path), "Dies ist ein Test."); + ASSERT_TRUE(status_or_diff.ok()) << status_or_diff.status(); + if (!status_or_diff.value().empty()) { + FAIL() << status_or_diff.value(); + } +} + +TEST(TestingTest, VerifyAgainstBaselineFailure) { + auto status_or_diff = VerifyAgainstBaseline( + absl::GetFlag(FLAGS_baseline_path), "Dies ist kein Test."); + ASSERT_TRUE(status_or_diff.ok()) << status_or_diff.status(); + // The actual output of the diff is much dependent on which mode we run + // in and on which platform. Hence only test whether *some* thing is reported. + ASSERT_FALSE(status_or_diff.value().empty()); +} + +TEST(TestingTest, EqualsProtoMessage) { + testing::Foo foo1; + foo1.set_foo("foo"); + testing::Foo foo2; + foo2.set_foo("foo"); + ASSERT_THAT(foo1, EqualsProto(foo2)); +} + +TEST(TestingTest, NotEqualsProtoMessage) { + testing::Foo foo1; + foo1.set_foo("foo-1"); + testing::Foo foo2; + foo2.set_foo("foo-2"); + ASSERT_THAT(foo1, Not(EqualsProto(foo2))); +} + +TEST(TestingTest, NotEqualsProtoMessageType) { + testing::Foo foo; + foo.set_foo("foo"); + testing::Bar bar; + bar.set_bar(1); + ASSERT_THAT(foo, Not(EqualsProto(bar))); +} + +TEST(TestingTest, EqualsProtoMessageText) { + testing::Bar bar; + bar.set_bar(1); + ASSERT_THAT(bar, EqualsProto("bar: 1")); +} + +TEST(TestingTest, NotEqualsProtoMessageText) { + testing::Bar bar; + bar.set_bar(1); + ASSERT_THAT(bar, Not(EqualsProto("bar: 2"))); +} + +} // namespace + +} // namespace fcp |