@@ -86,6 +86,38 @@ func (s *eventsTestSuite) TestEventManager() {
8686 s .Require ().Equal (em .Events (), events .AppendEvent (event ))
8787}
8888
89+ func (s * eventsTestSuite ) TestEventManagerLenAndTruncateEvents () {
90+ em := sdk .NewEventManager ()
91+ e1 := sdk .NewEvent ("e1" , sdk .NewAttribute ("k" , "v1" ))
92+ e2 := sdk .NewEvent ("e2" , sdk .NewAttribute ("k" , "v2" ))
93+ e3 := sdk .NewEvent ("e3" , sdk .NewAttribute ("k" , "v3" ))
94+ em .EmitEvents (sdk.Events {e1 , e2 , e3 })
95+
96+ s .Require ().Equal (3 , em .Len ())
97+
98+ newLen := em .TruncateEvents (2 )
99+ s .Require ().Equal (2 , newLen )
100+ s .Require ().Equal (sdk.Events {e1 , e2 }, em .Events ())
101+ s .Require ().Equal (2 , em .Len ())
102+
103+ // Out-of-range marks above Len are no-op.
104+ newLen = em .TruncateEvents (100 )
105+ s .Require ().Equal (2 , newLen )
106+ s .Require ().Equal (sdk.Events {e1 , e2 }, em .Events ())
107+
108+ // Full clear on zero.
109+ newLen = em .TruncateEvents (0 )
110+ s .Require ().Equal (0 , newLen )
111+ s .Require ().Equal (0 , em .Len ())
112+ s .Require ().Equal (sdk .EmptyEvents (), em .Events ())
113+
114+ // Negative marks are treated as clear-all for safety.
115+ em .EmitEvent (e1 )
116+ newLen = em .TruncateEvents (- 1 )
117+ s .Require ().Equal (0 , newLen )
118+ s .Require ().Equal (0 , em .Len ())
119+ }
120+
89121func (s * eventsTestSuite ) TestEmitTypedEvent () {
90122 s .Run ("deterministic key-value order" , func () {
91123 for i := 0 ; i < 10 ; i ++ {
0 commit comments