| // Copyright 2014 The Goma 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 "lib/goma_data_util.h" |
| |
| #include "gtest/gtest.h" |
| #include "prototmp/goma_data.pb.h" |
| |
| namespace devtools_goma { |
| |
| TEST(GomaProtoUtilTest, IsSameSubprogramShouldBeTrueOnEmptyProto) { |
| ExecReq req; |
| ExecResp resp; |
| |
| EXPECT_TRUE(IsSameSubprograms(req, resp)); |
| } |
| |
| TEST(GomaProtoUtilTest, IsSameSubprogramShouldIgnorePath) { |
| ExecReq req; |
| ExecResp resp; |
| |
| SubprogramSpec dummy_spec; |
| dummy_spec.set_binary_hash("dummy_hash"); |
| |
| SubprogramSpec* spec; |
| spec = req.add_subprogram(); |
| *spec = dummy_spec; |
| spec->set_path("request/path"); |
| |
| spec = resp.mutable_result()->add_subprogram(); |
| *spec = dummy_spec; |
| spec->set_path("response/path"); |
| |
| EXPECT_TRUE(IsSameSubprograms(req, resp)); |
| } |
| |
| TEST(GomaProtoUtilTest, IsSameSubprogramShouldBeTrueIfSameEntries) { |
| ExecReq req; |
| ExecResp resp; |
| |
| SubprogramSpec dummy_spec; |
| dummy_spec.set_path("dummy_path"); |
| dummy_spec.set_binary_hash("dummy_hash"); |
| |
| SubprogramSpec dummy_spec2; |
| dummy_spec.set_path("dummy_path2"); |
| dummy_spec.set_binary_hash("dummy_hash2"); |
| |
| SubprogramSpec* spec; |
| spec = req.add_subprogram(); |
| *spec = dummy_spec; |
| spec = req.add_subprogram(); |
| *spec = dummy_spec2; |
| |
| spec = resp.mutable_result()->add_subprogram(); |
| *spec = dummy_spec; |
| spec = resp.mutable_result()->add_subprogram(); |
| *spec = dummy_spec2; |
| |
| EXPECT_TRUE(IsSameSubprograms(req, resp)); |
| } |
| |
| TEST(GomaProtoUtilTest, IsSameSubprogramShouldBeTrueEvenIfOderIsDifferent) { |
| ExecReq req; |
| ExecResp resp; |
| |
| SubprogramSpec dummy_spec; |
| dummy_spec.set_path("dummy_path"); |
| dummy_spec.set_binary_hash("dummy_hash"); |
| |
| SubprogramSpec dummy_spec2; |
| dummy_spec.set_path("dummy_path2"); |
| dummy_spec.set_binary_hash("dummy_hash2"); |
| |
| SubprogramSpec* spec; |
| spec = req.add_subprogram(); |
| *spec = dummy_spec; |
| spec = req.add_subprogram(); |
| *spec = dummy_spec2; |
| |
| spec = resp.mutable_result()->add_subprogram(); |
| *spec = dummy_spec2; |
| spec = resp.mutable_result()->add_subprogram(); |
| *spec = dummy_spec; |
| |
| EXPECT_TRUE(IsSameSubprograms(req, resp)); |
| } |
| |
| TEST(GomaProtoUtilTest, IsSameSubprogramShouldBeFalseOnSizeMismatch) { |
| ExecReq req; |
| ExecResp resp; |
| |
| SubprogramSpec* spec; |
| spec = req.add_subprogram(); |
| spec->set_path("dummy_path"); |
| spec->set_binary_hash("dummy_hash"); |
| |
| EXPECT_FALSE(IsSameSubprograms(req, resp)); |
| } |
| |
| TEST(GomaProtoUtilTest, IsSameSubprogramShouldBeFalseOnContentsMismatch) { |
| ExecReq req; |
| ExecResp resp; |
| |
| SubprogramSpec dummy_spec; |
| dummy_spec.set_path("dummy_path"); |
| |
| SubprogramSpec* spec; |
| spec = req.add_subprogram(); |
| *spec = dummy_spec; |
| spec->set_binary_hash("dummy_hash"); |
| |
| spec = resp.mutable_result()->add_subprogram(); |
| *spec = dummy_spec; |
| spec->set_binary_hash("different_hash"); |
| |
| EXPECT_FALSE(IsSameSubprograms(req, resp)); |
| } |
| |
| } // namespace devtools_goma |