Home | History | Annotate | Download | only in test
      1 /*
      2  *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #include "webrtc/modules/remote_bitrate_estimator/test/bwe_test_fileutils.h"
     12 
     13 #ifdef WIN32
     14 #include <Winsock2.h>
     15 #else
     16 #include <arpa/inet.h>
     17 #endif
     18 #include <assert.h>
     19 
     20 #include "webrtc/base/scoped_ptr.h"
     21 #include "webrtc/modules/remote_bitrate_estimator/test/bwe_test_logging.h"
     22 #include "webrtc/test/testsupport/fileutils.h"
     23 
     24 namespace webrtc {
     25 namespace testing {
     26 namespace bwe {
     27 
     28 ResourceFileReader::~ResourceFileReader() {
     29   if (file_ != NULL) {
     30     fclose(file_);
     31     file_ = NULL;
     32   }
     33 }
     34 
     35 bool ResourceFileReader::IsAtEnd() {
     36   int32_t current_pos = ftell(file_);
     37   fseek(file_, 0, SEEK_END);
     38   int32_t end_pos = ftell(file_);
     39   fseek(file_, current_pos, SEEK_SET);
     40   return current_pos == end_pos;
     41 }
     42 
     43 bool ResourceFileReader::Read(uint32_t* out) {
     44   assert(out);
     45   uint32_t tmp = 0;
     46   if (fread(&tmp, 1, sizeof(uint32_t), file_) != sizeof(uint32_t)) {
     47     printf("Error reading!\n");
     48     return false;
     49   }
     50   *out = ntohl(tmp);
     51   return true;
     52 }
     53 
     54 ResourceFileReader* ResourceFileReader::Create(const std::string& filename,
     55                                                const std::string& extension) {
     56   std::string filepath = webrtc::test::ResourcePath(filename, extension);
     57   FILE* file = fopen(filepath.c_str(), "rb");
     58   if (file == NULL) {
     59     BWE_TEST_LOGGING_CONTEXT("ResourceFileReader");
     60     BWE_TEST_LOGGING_LOG1("Create", "Can't read file: %s", filepath.c_str());
     61     return 0;
     62   } else {
     63     return new ResourceFileReader(file);
     64   }
     65 }
     66 
     67 OutputFileWriter::~OutputFileWriter() {
     68   if (file_ != NULL) {
     69     fclose(file_);
     70     file_ = NULL;
     71   }
     72 }
     73 
     74 bool OutputFileWriter::Write(uint32_t value) {
     75   uint32_t tmp = htonl(value);
     76   if (fwrite(&tmp, 1, sizeof(uint32_t), file_) != sizeof(uint32_t)) {
     77     return false;
     78   }
     79   return true;
     80 }
     81 
     82 OutputFileWriter* OutputFileWriter::Create(const std::string& filename,
     83                                            const std::string& extension) {
     84   std::string filepath = webrtc::test::OutputPath() + filename + "." +
     85       extension;
     86   FILE* file = fopen(filepath.c_str(), "wb");
     87   if (file == NULL) {
     88     BWE_TEST_LOGGING_CONTEXT("OutputFileWriter");
     89     BWE_TEST_LOGGING_LOG1("Create", "Can't write file: %s", filepath.c_str());
     90     return NULL;
     91   } else {
     92     return new OutputFileWriter(file);
     93   }
     94 }
     95 }  // namespace bwe
     96 }  // namespace testing
     97 }  // namespace webrtc
     98