@@ -46,3 +46,43 @@ func TestDTMFReader(t *testing.T) {
46
46
47
47
assert .Equal (t , "109" , detected .String ())
48
48
}
49
+
50
+ func TestDTMFReaderRepeated (t * testing.T ) {
51
+ r := RTPDtmfReader {}
52
+
53
+ // DTMF 109
54
+ sequence := []DTMFEvent {
55
+ {Event : 1 , EndOfEvent : false , Volume : 10 , Duration : 160 },
56
+ {Event : 1 , EndOfEvent : false , Volume : 10 , Duration : 320 },
57
+ {Event : 1 , EndOfEvent : false , Volume : 10 , Duration : 480 },
58
+ {Event : 1 , EndOfEvent : false , Volume : 10 , Duration : 640 },
59
+ {Event : 1 , EndOfEvent : true , Volume : 10 , Duration : 800 },
60
+ {Event : 1 , EndOfEvent : true , Volume : 10 , Duration : 800 },
61
+ {Event : 1 , EndOfEvent : true , Volume : 10 , Duration : 800 },
62
+ {Event : 1 , EndOfEvent : false , Volume : 10 , Duration : 160 },
63
+ {Event : 1 , EndOfEvent : false , Volume : 10 , Duration : 320 },
64
+ {Event : 1 , EndOfEvent : false , Volume : 10 , Duration : 480 },
65
+ {Event : 1 , EndOfEvent : false , Volume : 10 , Duration : 640 },
66
+ {Event : 1 , EndOfEvent : true , Volume : 10 , Duration : 800 },
67
+ {Event : 1 , EndOfEvent : true , Volume : 10 , Duration : 800 },
68
+ {Event : 1 , EndOfEvent : true , Volume : 10 , Duration : 800 },
69
+ {Event : 1 , EndOfEvent : false , Volume : 10 , Duration : 160 },
70
+ {Event : 1 , EndOfEvent : false , Volume : 10 , Duration : 320 },
71
+ {Event : 1 , EndOfEvent : false , Volume : 10 , Duration : 480 },
72
+ {Event : 1 , EndOfEvent : false , Volume : 10 , Duration : 640 },
73
+ {Event : 1 , EndOfEvent : true , Volume : 10 , Duration : 800 },
74
+ {Event : 1 , EndOfEvent : true , Volume : 10 , Duration : 800 },
75
+ {Event : 1 , EndOfEvent : true , Volume : 10 , Duration : 800 },
76
+ }
77
+
78
+ detected := strings.Builder {}
79
+ for _ , ev := range sequence {
80
+ r .processDTMFEvent (ev )
81
+ dtmf , set := r .ReadDTMF ()
82
+ if set {
83
+ detected .WriteRune (dtmf )
84
+ }
85
+ }
86
+
87
+ assert .Equal (t , "111" , detected .String ())
88
+ }
0 commit comments