Skip to content

Commit 820c721

Browse files
committed
Add tests for callbacks
1 parent f316244 commit 820c721

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed

bindings/ruby/tests/test_callback.rb

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ class TestCallback < Test::Unit::TestCase
55
TOPDIR = File.expand_path(File.join(File.dirname(__FILE__), '..'))
66

77
def setup
8+
GC.start
89
@params = Whisper::Params.new
910
@whisper = Whisper::Context.new(File.join(TOPDIR, '..', '..', 'models', 'ggml-base.en.bin'))
1011
@audio = File.join(TOPDIR, '..', '..', 'samples', 'jfk.wav')
@@ -73,4 +74,90 @@ def test_new_segment_callback_user_data_gc
7374

7475
assert_same @whisper, @whisper.transcribe(@audio, @params)
7576
end
77+
78+
def test_progress_callback
79+
first = nil
80+
last = nil
81+
@params.progress_callback = ->(context, state, progress, user_data) {
82+
assert_kind_of Integer, progress
83+
assert 0 <= progress && progress <= 100
84+
assert_same @whisper, context
85+
first = progress if first.nil?
86+
last = progress
87+
}
88+
@whisper.transcribe(@audio, @params)
89+
assert_equal 0, first
90+
assert_equal 100, last
91+
end
92+
93+
def test_progress_callback_user_data
94+
udata = Object.new
95+
@params.progress_callback_user_data = udata
96+
@params.progress_callback = ->(context, state, n_new, user_data) {
97+
assert_same udata, user_data
98+
}
99+
100+
@whisper.transcribe(@audio, @params)
101+
end
102+
103+
def test_on_progress
104+
first = nil
105+
last = nil
106+
@params.on_progress do |progress|
107+
assert_kind_of Integer, progress
108+
assert 0 <= progress && progress <= 100
109+
first = progress if first.nil?
110+
last = progress
111+
end
112+
@whisper.transcribe(@audio, @params)
113+
assert_equal 0, first
114+
assert_equal 100, last
115+
end
116+
117+
def test_abort_callback
118+
i = 0
119+
@params.abort_callback = ->(user_data) {
120+
assert_nil user_data
121+
i += 1
122+
return false
123+
}
124+
@whisper.transcribe(@audio, @params)
125+
assert i > 0
126+
end
127+
128+
def test_abort_callback_abort
129+
i = 0
130+
@params.abort_callback = ->(user_data) {
131+
i += 1
132+
return i == 3
133+
}
134+
@whisper.transcribe(@audio, @params)
135+
assert_equal 3, i
136+
end
137+
138+
def test_abort_callback_user_data
139+
udata = Object.new
140+
@params.abort_callback_user_data = udata
141+
yielded = nil
142+
@params.abort_callback = ->(user_data) {
143+
yielded = user_data
144+
}
145+
@whisper.transcribe(@audio, @params)
146+
assert_same udata, yielded
147+
end
148+
149+
def test_abort_on
150+
do_abort = false
151+
aborted_from_callback = false
152+
@params.on_new_segment do |segment|
153+
do_abort = true if segment.text.match? /ask/
154+
end
155+
i = 0
156+
@params.abort_on do
157+
i += 1
158+
do_abort
159+
end
160+
@whisper.transcribe(@audio, @params)
161+
assert i > 0
162+
end
76163
end

0 commit comments

Comments
 (0)