Skip to content

Commit dc91fdd

Browse files
committed
Adds test for #110.
1 parent 09fe6d6 commit dc91fdd

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

tests/sitl/test_110.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
from droneapi.lib import VehicleMode
2+
from pymavlink import mavutil
3+
import time
4+
import sys
5+
import os
6+
7+
def test_110(local_connect):
8+
api = local_connect()
9+
v = api.get_vehicles()[0]
10+
11+
# Change the vehicle into STABILIZE mode
12+
v.mode = VehicleMode("STABILIZE")
13+
14+
# NOTE wait crudely for ACK on mode update
15+
time.sleep(3)
16+
17+
# Define example callback for mode
18+
allow_callback = True
19+
bad_call = [False]
20+
def armed_callback(attribute):
21+
if not allow_callback:
22+
bad_call[0] = True
23+
24+
# Only one of the same observer fn should be added.
25+
v.add_attribute_observer('armed', armed_callback)
26+
v.add_attribute_observer('armed', armed_callback)
27+
v.add_attribute_observer('armed', armed_callback)
28+
v.add_attribute_observer('armed', armed_callback)
29+
allow_callback = True
30+
31+
# Disarm and see update.
32+
v.armed = False
33+
v.flush()
34+
35+
time.sleep(3)
36+
37+
# Rmove (all) observers.
38+
v.remove_attribute_observer('armed', armed_callback)
39+
v.remove_attribute_observer('armed', armed_callback)
40+
allow_callback = False
41+
42+
# Re-arm and see update.
43+
v.armed = True
44+
v.flush()
45+
46+
time.sleep(3)
47+
48+
# Make sure no bad calls happened.
49+
assert not bad_call[0], "Callback should not have been called once removed."

0 commit comments

Comments
 (0)