MCPcopy Create free account
hub / github.com/apache/tvm-ffi / TEST

Function TEST

tests/cpp/extra/test_structural_equal_hash.cc:39–73  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

37namespace refl = tvm::ffi::reflection;
38
39TEST(StructuralEqualHash, Array) {
40 Array<int> a = {1, 2, 3};
41 Array<int> b = {1, 2, 3};
42 EXPECT_TRUE(StructuralEqual()(a, b));
43 EXPECT_EQ(StructuralHash()(a), StructuralHash()(b));
44
45 Array<int> c = {1, 3};
46 EXPECT_FALSE(StructuralEqual()(a, c));
47 EXPECT_NE(StructuralHash()(a), StructuralHash()(c));
48 auto diff_a_c = StructuralEqual::GetFirstMismatch(a, c);
49
50 // first directly interepret diff,
51 EXPECT_TRUE(diff_a_c.has_value());
52 auto lhs_steps = (*diff_a_c).get<0>()->ToSteps();
53 auto rhs_steps = (*diff_a_c).get<1>()->ToSteps();
54 EXPECT_EQ(lhs_steps[0]->kind, refl::AccessKind::kArrayItem);
55 EXPECT_EQ(rhs_steps[0]->kind, refl::AccessKind::kArrayItem);
56 EXPECT_EQ(lhs_steps[0]->key.cast<int64_t>(), 1);
57 EXPECT_EQ(rhs_steps[0]->key.cast<int64_t>(), 1);
58 EXPECT_EQ(lhs_steps.size(), 1);
59 EXPECT_EQ(rhs_steps.size(), 1);
60
61 // use structural equal for checking in future parts
62 // given we have done some basic checks above by directly interepret diff,
63 Array<int> d = {1, 2};
64 auto diff_a_d = StructuralEqual::GetFirstMismatch(a, d);
65 auto expected_diff_a_d = refl::AccessPathPair(refl::AccessPath::FromSteps({
66 refl::AccessStep::ArrayItem(2),
67 }),
68 refl::AccessPath::FromSteps({
69 refl::AccessStep::ArrayItemMissing(2),
70 }));
71 // then use structural equal to check it
72 EXPECT_TRUE(StructuralEqual()(diff_a_d, expected_diff_a_d));
73}
74
75TEST(StructuralEqualHash, Map) {
76 // same map but different insertion order

Callers

nothing calls this directly

Calls 15

HashClass · 0.85
TCustomFuncClass · 0.85
ToStepsMethod · 0.80
StructuralEqualFunction · 0.50
StructuralHashFunction · 0.50
TVarClass · 0.50
TFuncClass · 0.50
TIntClass · 0.50
StringClass · 0.50
has_valueMethod · 0.45
sizeMethod · 0.45
MapItemMethod · 0.45

Tested by

no test coverage detected