Skip to content

Commit 825c123

Browse files
InterLinked1Friendly Automation
authored andcommitted
app_if: Add tests for conditional branch apps
Adds tests for If, ElseIf, Else, ExitIf, and EndIf applications. ASTERISK-29497 Change-Id: Iff228c42c9338e1461950ab9fb85f3edf404daae
1 parent e1b0c9c commit 825c123

File tree

3 files changed

+197
-0
lines changed

3 files changed

+197
-0
lines changed
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
2+
[default]
3+
exten => s,1,Answer()
4+
; test If true
5+
same => n,If(1)
6+
same => n,UserEvent(IfSuccess,Result: Pass)
7+
same => n,EndIf()
8+
; test If false
9+
same => n,If(0)
10+
same => n,UserEvent(IfSuccess,Result: Fail)
11+
same => n,EndIf()
12+
; test If false
13+
same => n,If(1)
14+
same => n,NoOp()
15+
same => n,Else() ; shouldn't execute this
16+
same => n,UserEvent(IfSuccess,Result: Fail)
17+
same => n,EndIf()
18+
; test ExitIf
19+
same => n,If(1)
20+
same => n,ExitIf()
21+
same => n,UserEvent(IfSuccess,Result: Fail)
22+
same => n,EndIf()
23+
; test Else
24+
same => n,If(0)
25+
same => n,UserEvent(IfSuccess,Result: Fail)
26+
same => n,Else()
27+
same => n,Goto(after)
28+
same => n,EndIf()
29+
same => n,UserEvent(IfSuccess,Result: Fail)
30+
same => n(after),NoOp()
31+
; test ElseIf
32+
same => n,If(0)
33+
same => n,UserEvent(IfSuccess,Result: Fail)
34+
same => n,ElseIf(0)
35+
same => n,UserEvent(IfSuccess,Result: Fail)
36+
same => n,ElseIf(0)
37+
same => n,UserEvent(IfSuccess,Result: Fail)
38+
same => n,Goto(after)
39+
same => n,ElseIf(1)
40+
same => n,UserEvent(IfSuccess,Result: Pass)
41+
same => n,Else()
42+
same => n,UserEvent(IfSuccess,Result: Fail)
43+
same => n,EndIf()
44+
same => n(after),NoOp()
45+
; test ElseIf #2
46+
same => n,If(0)
47+
same => n,UserEvent(IfSuccess,Result: Fail)
48+
same => n,ElseIf(0)
49+
same => n,UserEvent(IfSuccess,Result: Fail)
50+
same => n,ElseIf(0)
51+
same => n,UserEvent(IfSuccess,Result: Fail)
52+
same => n,ElseIf(1)
53+
same => n,Goto(after2)
54+
same => n,Else()
55+
same => n,UserEvent(IfSuccess,Result: Fail)
56+
same => n,EndIf()
57+
same => n,UserEvent(IfSuccess,Result: Fail)
58+
same => n(after2),NoOp()
59+
; test nested If
60+
same => n,If(1)
61+
same => n,If(1)
62+
same => n,UserEvent(IfSuccess,Result: Pass)
63+
same => n,ExitIf()
64+
same => n,UserEvent(IfSuccess,Result: Fail)
65+
same => n,EndIf()
66+
same => n,UserEvent(IfSuccess,Result: Pass)
67+
same => n,ExitIf()
68+
same => n,UserEvent(IfSuccess,Result: Fail)
69+
same => n,EndIf()
70+
same => n,UserEvent(IfSuccess,Result: Pass)
71+
; test really nested
72+
same => n,If(1)
73+
same => n,If(1)
74+
same => n,If(0)
75+
same => n,Else()
76+
same => n,UserEvent(IfSuccess,Result: Pass)
77+
same => n,ExitIf()
78+
same => n,EndIf()
79+
same => n,UserEvent(IfSuccess,Result: Pass)
80+
same => n,ExitIf()
81+
same => n,UserEvent(IfSuccess,Result: Fail)
82+
same => n,EndIf()
83+
same => n,UserEvent(IfSuccess,Result: Pass)
84+
same => n,ExitIf()
85+
same => n,UserEvent(IfSuccess,Result: Fail)
86+
same => n,EndIf()
87+
; test that Else doesn't execute after true If
88+
same => n,If(1)
89+
same => n,NoOp()
90+
same => n,Else()
91+
same => n,UserEvent(IfSuccess,Result: Fail)
92+
same => n,EndIf()
93+
; test that ElseIf doesn't execute after true If
94+
same => n,If(1)
95+
same => n,NoOp()
96+
same => n,ExitIf()
97+
same => n,ElseIf(1) ; needed to exit If before ElseIf (but not before Else)
98+
same => n,UserEvent(IfSuccess,Result: Fail)
99+
same => n,EndIf()
100+
; test that Else/ElseIf doesn't execute after true If
101+
same => n,If(1)
102+
same => n,NoOp()
103+
same => n,ExitIf()
104+
same => n,ElseIf(1)
105+
same => n,UserEvent(IfSuccess,Result: Fail)
106+
same => n,Else()
107+
same => n,UserEvent(IfSuccess,Result: Fail)
108+
same => n,EndIf()
109+
; test that If matches Else only if it's before its EndIf
110+
same => n,If(0)
111+
same => n,NoOp()
112+
same => n,EndIf()
113+
same => n,If(1)
114+
same => n,NoOp()
115+
same => n,Else()
116+
same => n,UserEvent(IfSuccess,Result: Fail)
117+
same => n,EndIf()
118+
; test that If matches ElseIf only if it's before its EndIf
119+
same => n,If(0)
120+
same => n,NoOp()
121+
same => n,EndIf()
122+
same => n,If(1)
123+
same => n,NoOp()
124+
same => n,ExitIf() ; needed to exit If before ElseIf (but not before Else)
125+
same => n,ElseIf(1)
126+
same => n,UserEvent(IfSuccess,Result: Fail)
127+
same => n,EndIf()
128+
; all tests succeeded
129+
same => n,UserEvent(IfSuccess,Result: Pass)
130+
same => n,Hangup()
131+
132+
[nothing]
133+
exten => 0,1,Answer()
134+
same => n,Wait(10)
135+
same => n,Hangup()

tests/apps/if/test-config.yaml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
testinfo:
2+
summary: 'Ensure that app_if functions correctly.'
3+
description: |
4+
'This tests the If, ElseIf, Else, EndIf, and ExitIf applications to make sure
5+
that they work correctly. This includes nesting application calls to ensure
6+
that nesting behavior is correct and that different combos of app calls use
7+
the appropriate logic.'
8+
9+
test-modules:
10+
test-object:
11+
config-section: test-object-config
12+
typename: 'test_case.TestCaseModule'
13+
modules:
14+
-
15+
config-section: caller-originator
16+
typename: 'pluggable_modules.Originator'
17+
-
18+
config-section: hangup-monitor
19+
typename: 'pluggable_modules.HangupMonitor'
20+
-
21+
config-section: ami-config
22+
typename: 'pluggable_modules.EventActionModule'
23+
24+
test-object-config:
25+
connect-ami: True
26+
27+
caller-originator:
28+
channel: 'Local/s@default'
29+
context: 'nothing'
30+
exten: '0'
31+
priority: '1'
32+
trigger: 'ami_connect'
33+
34+
hangup-monitor:
35+
ids: '0'
36+
37+
ami-config:
38+
-
39+
ami-events:
40+
conditions:
41+
match:
42+
Event: 'UserEvent'
43+
UserEvent: 'IfSuccess'
44+
requirements:
45+
match:
46+
Result: 'Pass'
47+
count: 9
48+
stop_test:
49+
50+
properties:
51+
tags:
52+
- dial
53+
- apps
54+
dependencies:
55+
- python: 'twisted'
56+
- python: 'starpy'
57+
- asterisk: 'app_dial'
58+
- asterisk: 'app_userevent'
59+
- asterisk: 'app_originate'
60+
- asterisk: 'app_if'
61+
- asterisk: 'pbx_config'

tests/apps/tests.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,4 @@ tests:
2929
- test: 'mf'
3030
- test: 'sf'
3131
- test: 'read'
32+
- test: 'if'

0 commit comments

Comments
 (0)