blob: 6284d086eba97a7a5afa4411d70300e53ae14d80 [file] [log] [blame]
// 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