zeek/testing/btest/core/record-field-defer-parse-time-nested.zeek
Arne Welzel 7d6c8d7224 testing/btest: Un-deferred record initalization tests
These baselines should align with what Zeek 5.2 or before did.
2023-09-12 12:12:46 +02:00

50 lines
941 B
Text

# @TEST-DOC: Test deferred initialization behavior for nested records and redef.
# @TEST-EXEC: zeek -b %INPUT >output
# @TEST-EXEC: TEST_DIF_CANONIFIER= btest-diff output
module Test;
global seq = 0;
function my_seq(): count {
print seq, "my_seq()";
return ++seq;
}
type InnerMost: record { };
type Inner: record {
inner_most: InnerMost;
};
type State: record {
seq: count &default=my_seq();
inner: Inner;
};
type OtherState: record {
inner_most: InnerMost;
};
# s1$seq and s2$seq receive 1, 2
global s1 = State();
global s2 = State();
global os1 = OtherState();
global os2 = OtherState();
# This uses up seq 3,4,5,6 for nested InnerMost in s1,s2,os1,os2.
redef record InnerMost += {
seq: count &default=my_seq();
};
# This uses seq 7, 8 for s1 and s2.
redef record Inner += {
seq: count &default=my_seq();
};
print seq, "printing";
print seq, "s1", s1;
print seq, "s2", s2;
print seq, "os1", os1;
print seq, "os2", os2;