@@ -50,5 +50,45 @@ def test_empty(self):
5050 self .assertEqual (2 , segtree .query_len (0 , 8 ))
5151 self .assertEqual (2 , segtree .query_sum (0 , 8 ))
5252
53+ def test_full_out_of_bound (self ):
54+ segtree = SegmentTree (0 , 8 )
55+ segtree .add (0 , 8 )
56+
57+ # Test full out of bound adding element fails
58+ self .assertEqual (False , segtree .add (10 , 16 ))
59+ self .assertEqual (False , segtree .add (- 16 , - 10 ))
60+
61+ # Test full out of bound len query returns 0
62+ self .assertEqual (0 , segtree .query_len (10 , 16 ))
63+ self .assertEqual (0 , segtree .query_len (- 16 , - 10 ))
64+
65+ # Test full out of bounds len query returns 0
66+ self .assertEqual (0 , segtree .query_sum (10 , 16 ))
67+ self .assertEqual (0 , segtree .query_sum (- 16 , - 10 ))
68+
69+ # Test full out of bounds max query returns None
70+ self .assertEqual (None , segtree .query_max (10 , 16 ))
71+ self .assertEqual (None , segtree .query_max (- 16 , - 10 ))
72+
73+ def test_partial_out_of_bound (self ):
74+ segtree = SegmentTree (0 , 8 )
75+ segtree .add (0 , 8 )
76+
77+ # Test partial out of bound adding element
78+ self .assertEqual (True , segtree .add (8 , 16 ))
79+ self .assertEqual (True , segtree .add (- 16 , 0 ))
80+
81+ # Test partial out of bound len query
82+ self .assertEqual (2 , segtree .query_len (7 , 16 ))
83+ self .assertEqual (2 , segtree .query_len (- 16 , 1 ))
84+
85+ # Test partial out of bounds len query
86+ self .assertEqual (3 , segtree .query_sum (7 , 16 ))
87+ self .assertEqual (3 , segtree .query_sum (- 16 , 1 ))
88+
89+ # Test full out of bounds max query
90+ self .assertEqual (2 , segtree .query_max (7 , 16 ))
91+ self .assertEqual (2 , segtree .query_max (- 16 , 1 ))
92+
5393if __name__ == '__main__' :
5494 main ()
0 commit comments