mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
2.0 KiB
Objective-C
58 lines
2.0 KiB
Objective-C
#import <XCTest/XCTest.h>
|
|
#import "RemoteIOAudio.h"
|
|
#import "AnonymousAudioCallbackHandler.h"
|
|
#import "TestUtil.h"
|
|
#import "CancelTokenSource.h"
|
|
|
|
@interface AudioRemoteIOTest : XCTestCase
|
|
|
|
@end
|
|
|
|
@implementation AudioRemoteIOTest
|
|
|
|
-(void) ______REMOVE_THIS_PREFIX_TO_ENABLE_ACTUAL_AUDIO_TEST______testPlaysAndRecordsAudio {
|
|
__block RemoteIOAudio* a = nil;
|
|
|
|
__block double t = 0;
|
|
id generateWhooOOOoooOOOOooOOOOoooSineWave = ^(NSUInteger requested, NSUInteger bytesRemaining) {
|
|
if (bytesRemaining < requested*10) {
|
|
int16_t wave[requested];
|
|
for (NSUInteger i = 0; i < requested; i++) {
|
|
wave[i] = (int16_t)(sin(t)*INT16_MAX);
|
|
double curFrequency = (sin(t/400)+1)/2*500+200;
|
|
@synchronized(a) {
|
|
t += 2*3.14159*curFrequency/[a getSampleRateInHertz];
|
|
}
|
|
}
|
|
[a populatePlaybackQueueWithData:[NSData dataWithBytesNoCopy:wave length:sizeof(wave) freeWhenDone:NO]];
|
|
}
|
|
};
|
|
|
|
__block int recordCount = 0;
|
|
id countCalls = ^(CyclicalBuffer *data) {
|
|
@synchronized(a) {
|
|
recordCount += 1;
|
|
}
|
|
};
|
|
|
|
CancelTokenSource* life = [CancelTokenSource cancelTokenSource];
|
|
a = [RemoteIOAudio remoteIOInterfaceStartedWithDelegate:[AnonymousAudioCallbackHandler anonymousAudioInterfaceDelegateWithRecordingCallback:countCalls
|
|
andPlaybackOccurredCallback:generateWhooOOOoooOOOOooOOOOoooSineWave]
|
|
untilCancelled:[life getToken]];
|
|
|
|
// churn the run loop, to allow the audio to play and be recorded
|
|
// YOU SHOULD HEAR A WOOOoooOOOOoooOOO TONE WHILE THIS IS HAPPENING (with the frequency going up and down)
|
|
testChurnAndConditionMustStayTrue(true, 10);
|
|
|
|
@synchronized(a) {
|
|
// recorded something
|
|
test(recordCount > 0);
|
|
// played something
|
|
test(t > 0);
|
|
}
|
|
|
|
[life cancel];
|
|
}
|
|
|
|
@end
|