1c55a96383497a772a307b346368133960b02ad03Eric Laurent/*
2c55a96383497a772a307b346368133960b02ad03Eric Laurent *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3c55a96383497a772a307b346368133960b02ad03Eric Laurent *
4c55a96383497a772a307b346368133960b02ad03Eric Laurent *  Use of this source code is governed by a BSD-style license
5c55a96383497a772a307b346368133960b02ad03Eric Laurent *  that can be found in the LICENSE file in the root of the source
6c55a96383497a772a307b346368133960b02ad03Eric Laurent *  tree. An additional intellectual property rights grant can be found
7c55a96383497a772a307b346368133960b02ad03Eric Laurent *  in the file PATENTS.  All contributing project authors may
8c55a96383497a772a307b346368133960b02ad03Eric Laurent *  be found in the AUTHORS file in the root of the source tree.
9c55a96383497a772a307b346368133960b02ad03Eric Laurent */
10c55a96383497a772a307b346368133960b02ad03Eric Laurent
11c55a96383497a772a307b346368133960b02ad03Eric Laurent#include "testsupport/frame_reader.h"
12c55a96383497a772a307b346368133960b02ad03Eric Laurent
13c55a96383497a772a307b346368133960b02ad03Eric Laurent#include "gtest/gtest.h"
14c55a96383497a772a307b346368133960b02ad03Eric Laurent#include "testsupport/fileutils.h"
15c55a96383497a772a307b346368133960b02ad03Eric Laurent
16c55a96383497a772a307b346368133960b02ad03Eric Laurentnamespace webrtc {
17c55a96383497a772a307b346368133960b02ad03Eric Laurentnamespace test {
18c55a96383497a772a307b346368133960b02ad03Eric Laurent
19c55a96383497a772a307b346368133960b02ad03Eric Laurentconst std::string kInputFilename = "temp_inputfile.tmp";
20c55a96383497a772a307b346368133960b02ad03Eric Laurentconst std::string kInputFileContents = "baz";
21c55a96383497a772a307b346368133960b02ad03Eric Laurent// Setting the kFrameLength value to a value much larger than the
22c55a96383497a772a307b346368133960b02ad03Eric Laurent// file to test causes the ReadFrame test to fail on Windows.
23c55a96383497a772a307b346368133960b02ad03Eric Laurentconst int kFrameLength = 1000;
24c55a96383497a772a307b346368133960b02ad03Eric Laurent
25c55a96383497a772a307b346368133960b02ad03Eric Laurentclass FrameReaderTest: public testing::Test {
26c55a96383497a772a307b346368133960b02ad03Eric Laurent protected:
27c55a96383497a772a307b346368133960b02ad03Eric Laurent  FrameReaderTest() {}
28c55a96383497a772a307b346368133960b02ad03Eric Laurent  virtual ~FrameReaderTest() {}
29c55a96383497a772a307b346368133960b02ad03Eric Laurent  void SetUp() {
30c55a96383497a772a307b346368133960b02ad03Eric Laurent    // Cleanup any previous dummy input file.
31c55a96383497a772a307b346368133960b02ad03Eric Laurent    std::remove(kInputFilename.c_str());
32c55a96383497a772a307b346368133960b02ad03Eric Laurent
33c55a96383497a772a307b346368133960b02ad03Eric Laurent    // Create a dummy input file.
34c55a96383497a772a307b346368133960b02ad03Eric Laurent    FILE* dummy = fopen(kInputFilename.c_str(), "wb");
35c55a96383497a772a307b346368133960b02ad03Eric Laurent    fprintf(dummy, "%s", kInputFileContents.c_str());
36c55a96383497a772a307b346368133960b02ad03Eric Laurent    fclose(dummy);
37c55a96383497a772a307b346368133960b02ad03Eric Laurent
38c55a96383497a772a307b346368133960b02ad03Eric Laurent    frame_reader_ = new FrameReaderImpl(kInputFilename, kFrameLength);
39c55a96383497a772a307b346368133960b02ad03Eric Laurent    ASSERT_TRUE(frame_reader_->Init());
40c55a96383497a772a307b346368133960b02ad03Eric Laurent  }
41c55a96383497a772a307b346368133960b02ad03Eric Laurent  void TearDown() {
42c55a96383497a772a307b346368133960b02ad03Eric Laurent    delete frame_reader_;
43c55a96383497a772a307b346368133960b02ad03Eric Laurent    // Cleanup the dummy input file.
44c55a96383497a772a307b346368133960b02ad03Eric Laurent    std::remove(kInputFilename.c_str());
45c55a96383497a772a307b346368133960b02ad03Eric Laurent  }
46c55a96383497a772a307b346368133960b02ad03Eric Laurent  FrameReader* frame_reader_;
47c55a96383497a772a307b346368133960b02ad03Eric Laurent};
48c55a96383497a772a307b346368133960b02ad03Eric Laurent
49c55a96383497a772a307b346368133960b02ad03Eric LaurentTEST_F(FrameReaderTest, InitSuccess) {
50c55a96383497a772a307b346368133960b02ad03Eric Laurent  FrameReaderImpl frame_reader(kInputFilename, kFrameLength);
51c55a96383497a772a307b346368133960b02ad03Eric Laurent  ASSERT_TRUE(frame_reader.Init());
52c55a96383497a772a307b346368133960b02ad03Eric Laurent  ASSERT_EQ(kFrameLength, frame_reader.FrameLength());
53c55a96383497a772a307b346368133960b02ad03Eric Laurent  ASSERT_EQ(0, frame_reader.NumberOfFrames());
54c55a96383497a772a307b346368133960b02ad03Eric Laurent}
55c55a96383497a772a307b346368133960b02ad03Eric Laurent
56c55a96383497a772a307b346368133960b02ad03Eric LaurentTEST_F(FrameReaderTest, ReadFrame) {
57c55a96383497a772a307b346368133960b02ad03Eric Laurent  WebRtc_UWord8 buffer[3];
58c55a96383497a772a307b346368133960b02ad03Eric Laurent  bool result = frame_reader_->ReadFrame(buffer);
59c55a96383497a772a307b346368133960b02ad03Eric Laurent  ASSERT_FALSE(result);  // No more files to read.
60c55a96383497a772a307b346368133960b02ad03Eric Laurent  ASSERT_EQ(kInputFileContents[0], buffer[0]);
61c55a96383497a772a307b346368133960b02ad03Eric Laurent  ASSERT_EQ(kInputFileContents[1], buffer[1]);
62c55a96383497a772a307b346368133960b02ad03Eric Laurent  ASSERT_EQ(kInputFileContents[2], buffer[2]);
63c55a96383497a772a307b346368133960b02ad03Eric Laurent}
64c55a96383497a772a307b346368133960b02ad03Eric Laurent
65c55a96383497a772a307b346368133960b02ad03Eric LaurentTEST_F(FrameReaderTest, ReadFrameUninitialized) {
66c55a96383497a772a307b346368133960b02ad03Eric Laurent  WebRtc_UWord8 buffer[3];
67c55a96383497a772a307b346368133960b02ad03Eric Laurent  FrameReaderImpl file_reader(kInputFilename, kFrameLength);
68c55a96383497a772a307b346368133960b02ad03Eric Laurent  ASSERT_FALSE(file_reader.ReadFrame(buffer));
69c55a96383497a772a307b346368133960b02ad03Eric Laurent}
70c55a96383497a772a307b346368133960b02ad03Eric Laurent
71c55a96383497a772a307b346368133960b02ad03Eric Laurent}  // namespace test
72c55a96383497a772a307b346368133960b02ad03Eric Laurent}  // namespace webrtc
73