From 75e584cb73561842f13c56ab3acaa18aff4cffb9 Mon Sep 17 00:00:00 2001 From: Yacin Nadji Date: Wed, 3 Nov 2021 14:21:02 -0400 Subject: [PATCH 1/5] Change set intersection test to be correct --- testing/btest/Baseline/language.set/out | 2 +- testing/btest/language/set.zeek | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/testing/btest/Baseline/language.set/out b/testing/btest/Baseline/language.set/out index 57bb3c068f..119293ede6 100644 --- a/testing/btest/Baseline/language.set/out +++ b/testing/btest/Baseline/language.set/out @@ -44,7 +44,7 @@ remove element (PASS) remove element (PASS) !in operator (PASS) union (PASS) -intersection (FAIL) +intersection (PASS) difference (PASS) difference (PASS) union/inter. (PASS) diff --git a/testing/btest/language/set.zeek b/testing/btest/language/set.zeek index 627474b2d3..60ef7b796a 100644 --- a/testing/btest/language/set.zeek +++ b/testing/btest/language/set.zeek @@ -150,7 +150,7 @@ function basic_functionality() local a_and_b = a & b; test_case( "union", a_or_b == a_plus_b ); - test_case( "intersection", a_and_b == a_plus_b ); + test_case( "intersection", a_and_b == a_also_b ); test_case( "difference", a - b == a_sans_b ); test_case( "difference", b - a == b_sans_a ); From aacb812b9ad08c50e3a6562aabfdb331f7cc5b6b Mon Sep 17 00:00:00 2001 From: Yacin Nadji Date: Wed, 3 Nov 2021 14:26:31 -0400 Subject: [PATCH 2/5] Fix C++ Intersection code --- src/Val.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Val.cc b/src/Val.cc index 305a638d83..b4bf2d2be0 100644 --- a/src/Val.cc +++ b/src/Val.cc @@ -1716,7 +1716,7 @@ TableValPtr TableVal::Intersection(const TableVal& tv) const } const PDict* tbl = AsTable(); - for ( const auto& tble : *tbl ) + for ( const auto& tble : *t1 ) { auto k = tble.GetHashKey(); From d426e285ebfa0b5e0830c6512b31737e2dc9f039 Mon Sep 17 00:00:00 2001 From: Yacin Nadji Date: Wed, 3 Nov 2021 14:52:45 -0400 Subject: [PATCH 3/5] Add reverse order intersection check --- testing/btest/Baseline/language.set/out | 1 + testing/btest/language/set.zeek | 2 ++ 2 files changed, 3 insertions(+) diff --git a/testing/btest/Baseline/language.set/out b/testing/btest/Baseline/language.set/out index 119293ede6..51d2a72711 100644 --- a/testing/btest/Baseline/language.set/out +++ b/testing/btest/Baseline/language.set/out @@ -45,6 +45,7 @@ remove element (PASS) !in operator (PASS) union (PASS) intersection (PASS) +intersection (PASS) difference (PASS) difference (PASS) union/inter. (PASS) diff --git a/testing/btest/language/set.zeek b/testing/btest/language/set.zeek index 60ef7b796a..4b81ecd0c8 100644 --- a/testing/btest/language/set.zeek +++ b/testing/btest/language/set.zeek @@ -148,9 +148,11 @@ function basic_functionality() local a_or_b = a | b; local a_and_b = a & b; + local b_and_a = b & a; test_case( "union", a_or_b == a_plus_b ); test_case( "intersection", a_and_b == a_also_b ); + test_case( "intersection", b_and_a == a_also_b ); test_case( "difference", a - b == a_sans_b ); test_case( "difference", b - a == b_sans_a ); From 96c45a6c93737b44d73541fee8e6a872b8be6fb4 Mon Sep 17 00:00:00 2001 From: Yacin Nadji Date: Wed, 3 Nov 2021 15:44:55 -0400 Subject: [PATCH 4/5] Remove unused tbl --- src/Val.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Val.cc b/src/Val.cc index b4bf2d2be0..09beec75c5 100644 --- a/src/Val.cc +++ b/src/Val.cc @@ -1715,7 +1715,6 @@ TableValPtr TableVal::Intersection(const TableVal& tv) const t0 = tmp; } - const PDict* tbl = AsTable(); for ( const auto& tble : *t1 ) { auto k = tble.GetHashKey(); From cdb52e64602b3905d18dc5b688bcc160fac76cfa Mon Sep 17 00:00:00 2001 From: Yacin Nadji Date: Wed, 3 Nov 2021 15:46:17 -0400 Subject: [PATCH 5/5] Curse you tabs! --- testing/btest/language/set.zeek | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testing/btest/language/set.zeek b/testing/btest/language/set.zeek index 4b81ecd0c8..b396a0c572 100644 --- a/testing/btest/language/set.zeek +++ b/testing/btest/language/set.zeek @@ -148,11 +148,11 @@ function basic_functionality() local a_or_b = a | b; local a_and_b = a & b; - local b_and_a = b & a; + local b_and_a = b & a; test_case( "union", a_or_b == a_plus_b ); test_case( "intersection", a_and_b == a_also_b ); - test_case( "intersection", b_and_a == a_also_b ); + test_case( "intersection", b_and_a == a_also_b ); test_case( "difference", a - b == a_sans_b ); test_case( "difference", b - a == b_sans_a );