Skip to content

Commit d783a26

Browse files
committed
Fixed checking total file length.
Added unit tests.
1 parent ad4c12f commit d783a26

6 files changed

Lines changed: 214 additions & 62 deletions

File tree

cleo_plugins/Audio/CAudioStream.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ CAudioStream::CAudioStream(const char* filepath)
1515
return;
1616
}
1717

18-
unsigned flags = BASS_SAMPLE_SOFTWARE;
18+
unsigned flags = BASS_SAMPLE_SOFTWARE | BASS_STREAM_PRESCAN;
1919
if (CSoundSystem::useFloatAudio) flags |= BASS_SAMPLE_FLOAT;
2020

2121
if (!(streamInternal = BASS_StreamCreateFile(FALSE, filepath, 0, 0, flags)) &&

tests/.cleo_tests_runner.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ clear_prints
1313

1414
RUN_TESTS_DIR("cleo:", "cleo_tests")
1515

16+
trace ""
17+
trace "All tests done"
1618
print_big_string {text} "DONE" {time} 5000 {style} TextStyle.MiddleSmaller
1719

1820
terminate_this_custom_script

tests/cleo_tests/Audio/0AB9.txt

Lines changed: 74 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,89 @@
11
{$CLEO .s}
2-
{$USE debug}
3-
{$USE memory}
4-
{$USE audio}
5-
var 0@ : Integer
6-
var 1@ : Integer
7-
var 2@ : Integer
8-
var 3@ : Integer
9-
var 4@ : Integer
10-
var 5@ : Integer
11-
var 6@ : Integer
12-
var 7@ : Integer
13-
var 8@ : Integer
14-
var 9@ : Integer
15-
var 10@ : Integer
2+
{$INCLUDE_ONCE ../cleo_tester.inc}
163

17-
script_name "0AB9" // get_audio_stream_state
18-
19-
debug_on
20-
21-
trace "0AB9 (get_audio_stream_state)"
4+
script_name '0AB9'
5+
test("0AB9 (get_audio_stream_state)", tests)
6+
terminate_this_custom_script
227

8+
const Test_File = ".\Speech.mp3"
239

24-
// load the file
25-
wait 0
26-
if
27-
load_audio_stream ".\Ding.mp3" {store_to} 0@
28-
then
29-
trace "~g~~h~~h~0AB9 (get_audio_stream_state), #0 PASSED"
30-
else
31-
breakpoint "~r~~h~~h~~h~0AB9 (get_audio_stream_state), #0 FAILED!~n~Failed to load file. Handle: %d" 0@
32-
end
10+
function tests
11+
int stream
12+
before_each(@setup)
13+
after_each(@cleanup)
3314

15+
it("should return set state", test1)
16+
it("should return Stopped when finished", test2)
17+
return
18+
3419

35-
// get state
36-
wait 0
37-
0AB9: get_audio_stream_state 0@ {store_to} 1@ // tested opcode
38-
if
39-
1@ == 2 // AudioStreamState.Paused
40-
then
41-
trace "~g~~h~~h~0AB9 (get_audio_stream_state), #1 PASSED"
42-
else
43-
breakpoint "~r~~h~~h~~h~0AB9 (get_audio_stream_state), #1 FAILED!~n~%d Expected~n~%d Occured" 2 1@
44-
end
20+
:setup
21+
stream = load_audio_stream Test_File
22+
assert_result_true()
23+
return
4524

4625

47-
// set new state
48-
wait 0
49-
set_audio_stream_state 0@ {state} AudioStreamAction.Play
50-
trace "~g~~h~~h~0AAD (set_audio_stream_state), #2 PASSED"
26+
:cleanup
27+
remove_audio_stream stream
28+
stream = -1
29+
return
5130

5231

53-
// get updated state
54-
wait 0
55-
0AB9: get_audio_stream_state 0@ {store_to} 1@ // tested opcode
56-
if
57-
1@ == 1 // AudioStreamState.Playing
58-
then
59-
trace "~g~~h~~h~0AB9 (get_audio_stream_state), #3 PASSED"
60-
else
61-
breakpoint "~r~~h~~h~~h~0AB9 (get_audio_stream_state), #3 FAILED!~n~%d Expected~n~%d Occured" 1 1@
62-
end
32+
function test1(stream: int)
33+
int state
34+
35+
// starts as stopped
36+
state = 0x666
37+
state = get_audio_stream_state stream
38+
assert_eq(state, 2) // AudioStreamState.Paused
39+
40+
// still paused
41+
wait {time} 0
42+
state = 0x666
43+
state = get_audio_stream_state stream
44+
assert_eq(state, 2) // AudioStreamState.Paused
45+
46+
// play, effective right away
47+
set_audio_stream_state stream {action} AudioStreamAction.Play
48+
state = 0x666
49+
state = get_audio_stream_state stream
50+
assert_eq(state, 1) // AudioStreamState.Playing
51+
52+
// still playing
53+
wait {time} 0
54+
state = 0x666
55+
state = get_audio_stream_state stream
56+
assert_eq(state, 1) // AudioStreamState.Playing
57+
58+
// stop, effective right away
59+
set_audio_stream_state stream {action} AudioStreamAction.Stop
60+
state = 0x666
61+
state = get_audio_stream_state stream
62+
assert_eq(state, -1) // AudioStreamState.Stopped
63+
64+
// still stopped
65+
wait {time} 0
66+
state = 0x666
67+
state = get_audio_stream_state stream
68+
assert_eq(state, -1) // AudioStreamState.Stopped
69+
70+
// stopped can not turn into paused
71+
set_audio_stream_state stream {action} AudioStreamAction.Pause
72+
state = 0x666
73+
state = get_audio_stream_state stream
74+
assert_eq(state, -1) // AudioStreamState.Stopped
75+
end
6376

6477

65-
// check if state updated after playback end
66-
wait 400 // Ding.mp3 is 0.25s long
67-
0AB9: get_audio_stream_state 0@ {store_to} 1@ // tested opcode
68-
if
69-
1@ == -1 // AudioStreamState.Stopped
70-
then
71-
trace "~g~~h~~h~0AB9 (get_audio_stream_state), #4 PASSED"
72-
else
73-
breakpoint "~r~~h~~h~~h~0AB9 (get_audio_stream_state), #4 FAILED!~n~%d Expected~n~%d Occured" -1 1@
78+
function test2(stream: int)
79+
set_audio_stream_progress stream {progress} 0.99
80+
set_audio_stream_state stream {action} AudioStreamAction.Play
81+
82+
wait {time} 200
83+
int state = 0x666
84+
state = get_audio_stream_state stream
85+
assert_eq(state, -1) // AudioStreamState.Stopped
86+
end
7487
end
7588

7689

tests/cleo_tests/Audio/2507.txt

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
{$CLEO .s}
2+
{$INCLUDE_ONCE ../cleo_tester.inc}
3+
4+
script_name '2507'
5+
test("2507 (get_audio_stream_progress)", tests)
6+
terminate_this_custom_script
7+
8+
const Test_File = ".\Speech.mp3"
9+
10+
function tests
11+
int stream
12+
before_each(@setup)
13+
after_each(@cleanup)
14+
15+
it("should get progress", test1)
16+
it("should return 1.0 when finished", test2)
17+
return
18+
19+
20+
:setup
21+
stream = load_audio_stream Test_File
22+
assert_result_true()
23+
return
24+
25+
26+
:cleanup
27+
remove_audio_stream stream
28+
stream = -1
29+
return
30+
31+
32+
function test1(stream: int)
33+
float progress
34+
35+
progress = -1.0
36+
progress = get_audio_stream_progress stream
37+
assert_eqf(progress, 0.0)
38+
39+
set_audio_stream_progress stream {progress} 0.5
40+
progress = -1.0
41+
progress = get_audio_stream_progress stream
42+
assert_rangef(progress, 0.499, 0.501)
43+
end
44+
45+
46+
function test2(stream: int)
47+
float progress
48+
49+
set_audio_stream_progress stream {progress} 0.99
50+
set_audio_stream_state stream {action} AudioStreamAction.Play
51+
52+
wait {time} 200
53+
progress = -1.0
54+
progress = get_audio_stream_progress stream
55+
assert_eqf(progress, 1.0)
56+
end
57+
end

tests/cleo_tests/Audio/2508.txt

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
{$CLEO .s}
2+
{$INCLUDE_ONCE ../cleo_tester.inc}
3+
4+
script_name '2508'
5+
test("2508 (set_audio_stream_progress)", tests)
6+
terminate_this_custom_script
7+
8+
const Test_File = ".\Speech.mp3"
9+
10+
function tests
11+
int stream
12+
before_each(@setup)
13+
after_each(@cleanup)
14+
15+
it("should set progress", test1)
16+
return
17+
18+
19+
:setup
20+
stream = load_audio_stream Test_File
21+
assert_result_true()
22+
return
23+
24+
25+
:cleanup
26+
remove_audio_stream stream
27+
stream = -1
28+
return
29+
30+
31+
function test1(stream: int)
32+
float progress
33+
34+
// set after loaded
35+
set_audio_stream_progress stream {progress} 0.5
36+
progress = -1.0
37+
progress = get_audio_stream_progress stream
38+
assert_rangef(progress, 0.499, 0.501)
39+
40+
// still same later
41+
wait {time} 0
42+
progress = -1.0
43+
progress = get_audio_stream_progress stream
44+
assert_rangef(progress, 0.499, 0.501)
45+
46+
// used when playback started
47+
set_audio_stream_state stream {action} AudioStreamAction.Play
48+
progress = -1.0
49+
progress = get_audio_stream_progress stream
50+
assert_rangef(progress, 0.499, 0.501)
51+
52+
wait {time} 0
53+
progress = -1.0
54+
progress = get_audio_stream_progress stream
55+
assert_rangef(progress, 0.499, 0.510)
56+
57+
// still same after stopped
58+
set_audio_stream_state stream {action} AudioStreamAction.Stop
59+
progress = -1.0
60+
progress = get_audio_stream_progress stream
61+
assert_rangef(progress, 0.499, 0.510)
62+
63+
// sets progress of stopped stream
64+
set_audio_stream_progress stream {progress} 0.25
65+
progress = -1.0
66+
progress = get_audio_stream_progress stream
67+
assert_rangef(progress, 0.249, 0.251)
68+
69+
// still same after resume
70+
set_audio_stream_state stream {action} AudioStreamAction.Play
71+
progress = -1.0
72+
progress = get_audio_stream_progress stream
73+
assert_rangef(progress, 0.249, 0.260)
74+
75+
wait {time} 0
76+
progress = -1.0
77+
progress = get_audio_stream_progress stream
78+
assert_rangef(progress, 0.249, 0.260)
79+
end
80+
end

tests/cleo_tests/Audio/Speech.mp3

89.7 KB
Binary file not shown.

0 commit comments

Comments
 (0)