Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  run_test.mm   Sprache: unbekannt

 
/*
 *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */

#import <Cocoa/Cocoa.h>

#include "test/run_test.h"

// Converting a C++ function pointer to an Objective-C block.
typedef void(^TestBlock)();
TestBlock functionToBlock(void(*function)()) {
  return [^(void) { function(); } copy];
}

// Class calling the test function on the platform specific thread.
@interface TestRunner : NSObject {
  BOOL running_;
}
- (void)runAllTests:(TestBlock)ignored;
- (BOOL)running;
@end

@implementation TestRunner
- (id)init {
  self = [super init];
  if (self) {
    running_ = YES;
  }
  return self;
}

- (void)runAllTests:(TestBlock)testBlock {
  @autoreleasepool {
    testBlock();
    running_ = NO;
  }
}

- (BOOL)running {
  return running_;
}
@end

namespace webrtc {
namespace test {

void RunTest(void(*test)()) {
  @autoreleasepool {
    [NSApplication sharedApplication];

    // Convert the function pointer to an Objective-C block and call on a
    // separate thread, to avoid blocking the main thread.
    TestRunner *testRunner = [[TestRunner alloc] init];
    TestBlock testBlock = functionToBlock(test);
    [NSThread detachNewThreadSelector:@selector(runAllTests:)
                             toTarget:testRunner
                           withObject:testBlock];

    NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
    while ([testRunner running] && [runLoop runMode:NSDefaultRunLoopMode
                                         beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]])
      ;
  }
}

}  // namespace test
}  // namespace webrtc

[ Dauer der Verarbeitung: 0.17 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge