aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/core/framework/function_test.cc
diff options
context:
space:
mode:
authorGravatar Igor Ganichev <iga@google.com>2017-09-27 14:00:14 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2017-09-27 14:03:59 -0700
commit09157975b4601b0b66de1a6f52767f3e5556be05 (patch)
tree354be31f42d9f074649c09f6d2cbe6c495448bf7 /tensorflow/core/framework/function_test.cc
parentc2ccdcd78e2c25296d83d1f2f81647ca3a16b3c1 (diff)
Add FunctionDefHash
Also, use OpDefEqual instead of serialized string comparison in FunctionDefsEqual because AttrDef repeated field order is irrelevant. PiperOrigin-RevId: 170248224
Diffstat (limited to 'tensorflow/core/framework/function_test.cc')
-rw-r--r--tensorflow/core/framework/function_test.cc13
1 files changed, 12 insertions, 1 deletions
diff --git a/tensorflow/core/framework/function_test.cc b/tensorflow/core/framework/function_test.cc
index 13955addb5..23685e9c53 100644
--- a/tensorflow/core/framework/function_test.cc
+++ b/tensorflow/core/framework/function_test.cc
@@ -1281,36 +1281,46 @@ TEST(FunctionDefsEqualTest, TestFunctionDefsEqual) {
// Equal functions
const FunctionDef fdef1 = test::function::XTimesTwo();
FunctionDef fdef2 = test::function::XTimesTwo();
+ uint64 hash1 = FunctionDefHash(fdef1);
EXPECT_TRUE(FunctionDefsEqual(fdef1, fdef2));
+ EXPECT_EQ(hash1, FunctionDefHash(fdef2));
// Different functions
fdef2 = test::function::XTimesFour();
EXPECT_FALSE(FunctionDefsEqual(fdef1, fdef2));
+ EXPECT_NE(hash1, FunctionDefHash(fdef2));
// Different signatures
fdef2 = test::function::XTimesTwo();
fdef2.mutable_signature()->mutable_input_arg(0)->set_name("foo");
EXPECT_FALSE(FunctionDefsEqual(fdef1, fdef2));
+ EXPECT_NE(hash1, FunctionDefHash(fdef2));
// Descriptions must be equal
fdef2 = test::function::XTimesTwo();
fdef2.mutable_signature()->mutable_input_arg(0)->set_description("foo");
EXPECT_FALSE(FunctionDefsEqual(fdef1, fdef2));
+ EXPECT_NE(hash1, FunctionDefHash(fdef2));
// Different NodeDefs
fdef2 = test::function::XTimesTwo();
- *fdef2.add_node_def() = fdef2.node_def(0);
+ NodeDef* ndef = fdef2.add_node_def();
+ *ndef = fdef2.node_def(0);
+ ndef->set_name("new_name");
EXPECT_FALSE(FunctionDefsEqual(fdef1, fdef2));
+ EXPECT_NE(hash1, FunctionDefHash(fdef2));
// Different return values
fdef2 = test::function::XTimesTwo();
(*fdef2.mutable_ret())["y"] = "y:z:1"; // originally is "y:z:0"
EXPECT_FALSE(FunctionDefsEqual(fdef1, fdef2));
+ EXPECT_NE(hash1, FunctionDefHash(fdef2));
// Different attributes
fdef2 = test::function::XTimesTwo();
SetAttrValue(&fdef2, "ExtraAttr", true);
EXPECT_FALSE(FunctionDefsEqual(fdef1, fdef2));
+ EXPECT_NE(hash1, FunctionDefHash(fdef2));
// Multiple equivalent attributes; the two functions should be equal.
fdef2 = test::function::XTimesTwo();
@@ -1322,6 +1332,7 @@ TEST(FunctionDefsEqualTest, TestFunctionDefsEqual) {
SetAttrValue(&fdef2, "Baz", "abc");
SetAttrValue(&fdef3, "Baz", "abc");
EXPECT_TRUE(FunctionDefsEqual(fdef2, fdef3));
+ EXPECT_EQ(FunctionDefHash(fdef2), FunctionDefHash(fdef3));
}
} // end namespace