mirror of
https://github.com/zeek/zeek.git
synced 2025-10-15 21:18:20 +00:00
Merge remote-tracking branch 'origin/topic/timw/393-vector-slicing'
* origin/topic/timw/393-vector-slicing: Fix memory leak in vector slice assignment Misc. tweaks to vector slicing implementation Add ability to grow/shrink a vector using slicing, also adds Insert/Remove methods for VectorVal Allow assignment for vectors using slices Check for integral slice indexes, add extra test for [:] Return an empty vector if the indices for slicing don't make sense GH-393: Add slice notation for vectors
This commit is contained in:
commit
979f64f16e
13 changed files with 282 additions and 27 deletions
|
@ -58,3 +58,12 @@ access element (PASS)
|
|||
&& operator (PASS)
|
||||
|| operator (PASS)
|
||||
+= operator (PASS)
|
||||
slicing (PASS)
|
||||
slicing (PASS)
|
||||
slicing (PASS)
|
||||
slicing (PASS)
|
||||
slicing (PASS)
|
||||
slicing assignment (PASS)
|
||||
slicing assignment (PASS)
|
||||
slicing assignment grow (PASS)
|
||||
slicing assignment shrink (PASS)
|
||||
|
|
30
testing/btest/core/leaks/vector-indexing.zeek
Normal file
30
testing/btest/core/leaks/vector-indexing.zeek
Normal file
|
@ -0,0 +1,30 @@
|
|||
# Needs perftools support.
|
||||
#
|
||||
# @TEST-GROUP: leaks
|
||||
#
|
||||
# @TEST-REQUIRES: zeek --help 2>&1 | grep -q mem-leaks
|
||||
#
|
||||
# @TEST-EXEC: HEAP_CHECK_DUMP_DIRECTORY=. HEAPCHECK=local btest-bg-run zeek zeek -m -b -r $TRACES/wikipedia.trace %INPUT
|
||||
# @TEST-EXEC: btest-bg-wait 60
|
||||
|
||||
global did_it = F;
|
||||
|
||||
event new_connection(c: connection)
|
||||
{
|
||||
if ( did_it )
|
||||
return;
|
||||
|
||||
did_it = T;
|
||||
|
||||
# Slicing tests.
|
||||
local v17 = vector( 1, 2, 3, 4, 5 );
|
||||
print v17[0:2];
|
||||
print v17[-3:-1];
|
||||
print v17[:2];
|
||||
print v17[2:];
|
||||
print v17[:];
|
||||
v17[0:1] = vector(6);
|
||||
v17[2:4] = vector(7, 8);
|
||||
v17[2:4] = vector(9, 10, 11);
|
||||
v17[2:5] = vector(9);
|
||||
}
|
|
@ -168,5 +168,19 @@ event zeek_init()
|
|||
v16 += 40;
|
||||
test_case( "+= operator", all_set(v16 == vector( 10, 20, 30, 40 )) );
|
||||
|
||||
# Slicing tests.
|
||||
local v17 = vector( 1, 2, 3, 4, 5 );
|
||||
test_case( "slicing", all_set(v17[0:2] == vector( 1, 2 )) );
|
||||
test_case( "slicing", all_set(v17[-3:-1] == vector( 3, 4 )) );
|
||||
test_case( "slicing", all_set(v17[:2] == vector( 1, 2 )) );
|
||||
test_case( "slicing", all_set(v17[2:] == vector( 3, 4, 5 )) );
|
||||
test_case( "slicing", all_set(v17[:] == v17) );
|
||||
v17[0:1] = vector(6);
|
||||
test_case( "slicing assignment", all_set(v17 == vector(6, 2, 3, 4, 5)) );
|
||||
v17[2:4] = vector(7, 8);
|
||||
test_case( "slicing assignment", all_set(v17 == vector(6, 2, 7, 8, 5)) );
|
||||
v17[2:4] = vector(9, 10, 11);
|
||||
test_case( "slicing assignment grow", all_set(v17 == vector(6, 2, 9, 10, 11, 5)) );
|
||||
v17[2:5] = vector(9);
|
||||
test_case( "slicing assignment shrink", all_set(v17 == vector(6, 2, 9, 5)) );
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue