LinphoneTesterTests.m 7.64 KiB
//
//  LinphoneTesterTests.m
//  LinphoneTesterTests
//
//  Created by Danmei Chen on 13/02/2019.
//  Copyright © 2019 belledonne. All rights reserved.
//
#import <XCTest/XCTest.h>
#include "linphone/linphonecore.h"
#include "linphonetester/liblinphone_tester.h"
#import "NSObject+DTRuntime.h"
//#import "Utils.h"
#import "Log.h"
@interface LinphoneTesterBase : XCTestCase
@end
@implementation LinphoneTesterBase
+ (NSString *)safetyTestString:(NSString *)testString {
    NSCharacterSet *charactersToRemove = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
    return [[testString componentsSeparatedByCharactersInSet:charactersToRemove] componentsJoinedByString:@"_"];
void dummy_logger(const char *domain, OrtpLogLevel lev, const char *fmt, va_list args) {
+ (void)initialize {
+ (void)testForSuite:(NSString *)sSuite {
    LOGI(@"[message] Launching tests from suite %@", sSuite);
    const char *suite = sSuite.UTF8String;
    bc_tester_register_suite_by_name(suite);
    int test_count = bc_tester_nb_tests(suite);
    for (int k = 0; k < test_count; k++) {
        const char *test = bc_tester_test_name(suite, k);
        if (test) {
            NSString *sTest = [NSString stringWithUTF8String:test];
            // prepend "test_" so that it gets found by introspection
            NSString *safesTest = [LinphoneTesterBase safetyTestString:sTest];
            NSString *safesSuite = [LinphoneTesterBase safetyTestString:sSuite];
            // ordering tests
            NSString *safesIndex = nil;
            if (k < 10) {
                safesIndex = [NSString stringWithFormat:@"00%d",k];
            } else if (k <100) {
                safesIndex = [NSString stringWithFormat:@"0%d",k];
            } else if (k <1000) {
                safesIndex = [NSString stringWithFormat:@"%d",k];
            NSString *selectorName = [NSString stringWithFormat:@"test%@_%@__%@", safesIndex, safesSuite, safesTest];
            [self addInstanceMethodWithSelectorName:selectorName
                                              block:^(LinphoneTesterBase *myself) {
                                                  [myself testForSuiteTest:sSuite andTest:sTest];
                                              }];
- (void)testForSuiteTest:(NSString *)suite andTest:(NSString *)test {
    LOGI(@"[message] Launching test %@ from suite %@", test, suite);
    XCTAssertFalse(bc_tester_run_tests(suite.UTF8String, test.UTF8String, NULL), @"Suite '%@' / Test '%@' failed",
                   suite, test);
@end
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
@interface SetupTests : LinphoneTesterBase @end @implementation SetupTests + (void)initialize { [self testForSuite:@"Setup"]; } @end @interface TunnelTests : LinphoneTesterBase @end @implementation TunnelTests + (void)initialize { [self testForSuite:@"Tunnel"]; } @end @interface OfferAnswerTests : LinphoneTesterBase @end @implementation OfferAnswerTests + (void)initialize { [self testForSuite:@"Offer-answer"]; } @end @interface PresenceTests : LinphoneTesterBase @end @implementation PresenceTests + (void)initialize { [self testForSuite:@"Presence"]; } @end @interface AccountCreatorTests : LinphoneTesterBase @end @implementation AccountCreatorTests + (void)initialize { [self testForSuite:@"Account creator"]; } @end @interface ConferenceEventTests : LinphoneTesterBase @end @implementation ConferenceEventTests + (void)initialize { [self testForSuite:@"Conference event"]; } @end @interface LogCollectionTests : LinphoneTesterBase @end @implementation LogCollectionTests + (void)initialize { [self testForSuite:@"LogCollection"]; } @end @interface PlayerTests : LinphoneTesterBase @end @implementation PlayerTests + (void)initialize { [self testForSuite:@"Player"];
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
} @end @interface DTMFTests : LinphoneTesterBase @end @implementation DTMFTests + (void)initialize { [self testForSuite:@"DTMF"]; } @end /*@interface CpimTests : LinphoneTesterBase @end @implementation CpimTests + (void)initialize { [self testForSuite:@"Cpim"]; } @end*/ @interface MultipartTests : LinphoneTesterBase @end @implementation MultipartTests + (void)initialize { [self testForSuite:@"Multipart"]; } @end @interface ClonableObjectTests : LinphoneTesterBase @end @implementation ClonableObjectTests + (void)initialize { [self testForSuite:@"ClonableObject"]; } @end @interface MainDbTests : LinphoneTesterBase @end @implementation MainDbTests + (void)initialize { [self testForSuite:@"MainDb"]; } @end @interface PropertyContainerTests : LinphoneTesterBase @end @implementation PropertyContainerTests + (void)initialize { [self testForSuite:@"PropertyContainer"]; } @end @interface ProxyConfigTests : LinphoneTesterBase @end @implementation ProxyConfigTests + (void)initialize { [self testForSuite:@"Proxy config"]; } @end @interface VCardTests : LinphoneTesterBase @end @implementation VCardTests
211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
+ (void)initialize { [self testForSuite:@"VCard"]; } @end @interface VideoCallTests : LinphoneTesterBase @end @implementation VideoCallTests + (void)initialize { [self testForSuite:@"Video Call"]; } @end @interface AudioBypassTests : LinphoneTesterBase @end @implementation AudioBypassTests + (void)initialize { [self testForSuite:@"Audio Bypass"]; } @end @interface ContentsTests : LinphoneTesterBase @end @implementation ContentsTests + (void)initialize { [self testForSuite:@"Contents"]; } @end @interface VideoTests : LinphoneTesterBase @end @implementation VideoTests + (void)initialize { [self testForSuite:@"Video"]; } @end @interface MulticastCallTests : LinphoneTesterBase @end @implementation MulticastCallTests + (void)initialize { [self testForSuite:@"Multicast Call"]; } @end @interface StunTests : LinphoneTesterBase @end @implementation StunTests + (void)initialize { [self testForSuite:@"Stun"]; } @end @interface EventTests : LinphoneTesterBase @end @implementation EventTests + (void)initialize { [self testForSuite:@"Event"]; } @end @interface MessageTests : LinphoneTesterBase @end