tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_utils_unittest.cc (3349B)


      1 /*
      2 *  Copyright (c) 2016 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 "modules/desktop_capture/test_utils.h"
     12 
     13 #include <cstdint>
     14 
     15 #include "modules/desktop_capture/desktop_frame.h"
     16 #include "modules/desktop_capture/desktop_geometry.h"
     17 #include "modules/desktop_capture/rgba_color.h"
     18 #include "test/gtest.h"
     19 
     20 namespace webrtc {
     21 
     22 namespace {
     23 
     24 void PaintDesktopFrame(DesktopFrame* frame,
     25                       DesktopVector pos,
     26                       RgbaColor color) {
     27  ASSERT_TRUE(frame);
     28  ASSERT_TRUE(DesktopRect::MakeSize(frame->size()).Contains(pos));
     29  *reinterpret_cast<uint32_t*>(frame->GetFrameDataAtPos(pos)) =
     30      color.ToUInt32();
     31 }
     32 
     33 // A DesktopFrame implementation to store data in heap, but the stide is
     34 // doubled.
     35 class DoubleSizeDesktopFrame : public DesktopFrame {
     36 public:
     37  explicit DoubleSizeDesktopFrame(DesktopSize size);
     38  ~DoubleSizeDesktopFrame() override;
     39 };
     40 
     41 DoubleSizeDesktopFrame::DoubleSizeDesktopFrame(DesktopSize size)
     42    : DesktopFrame(
     43          size,
     44          kBytesPerPixel * size.width() * 2,
     45          new uint8_t[kBytesPerPixel * size.width() * size.height() * 2],
     46          nullptr) {}
     47 
     48 DoubleSizeDesktopFrame::~DoubleSizeDesktopFrame() {
     49  delete[] data_;
     50 }
     51 
     52 }  // namespace
     53 
     54 TEST(TestUtilsTest, BasicDataEqualsCases) {
     55  BasicDesktopFrame frame(DesktopSize(4, 4));
     56  for (int i = 0; i < 4; i++) {
     57    for (int j = 0; j < 4; j++) {
     58      PaintDesktopFrame(&frame, DesktopVector(i, j), RgbaColor(4U * j + i));
     59    }
     60  }
     61 
     62  ASSERT_TRUE(DesktopFrameDataEquals(frame, frame));
     63  BasicDesktopFrame other(DesktopSize(4, 4));
     64  for (int i = 0; i < 4; i++) {
     65    for (int j = 0; j < 4; j++) {
     66      PaintDesktopFrame(&other, DesktopVector(i, j), RgbaColor(4U * j + i));
     67    }
     68  }
     69  ASSERT_TRUE(DesktopFrameDataEquals(frame, other));
     70  PaintDesktopFrame(&other, DesktopVector(2, 2), RgbaColor(0U));
     71  ASSERT_FALSE(DesktopFrameDataEquals(frame, other));
     72 }
     73 
     74 TEST(TestUtilsTest, DifferentSizeShouldNotEqual) {
     75  BasicDesktopFrame frame(DesktopSize(4, 4));
     76  for (int i = 0; i < 4; i++) {
     77    for (int j = 0; j < 4; j++) {
     78      PaintDesktopFrame(&frame, DesktopVector(i, j), RgbaColor(4U * j + i));
     79    }
     80  }
     81 
     82  BasicDesktopFrame other(DesktopSize(2, 8));
     83  for (int i = 0; i < 2; i++) {
     84    for (int j = 0; j < 8; j++) {
     85      PaintDesktopFrame(&other, DesktopVector(i, j), RgbaColor(2U * j + i));
     86    }
     87  }
     88 
     89  ASSERT_FALSE(DesktopFrameDataEquals(frame, other));
     90 }
     91 
     92 TEST(TestUtilsTest, DifferentStrideShouldBeComparable) {
     93  BasicDesktopFrame frame(DesktopSize(4, 4));
     94  for (int i = 0; i < 4; i++) {
     95    for (int j = 0; j < 4; j++) {
     96      PaintDesktopFrame(&frame, DesktopVector(i, j), RgbaColor(4U * j + i));
     97    }
     98  }
     99 
    100  ASSERT_TRUE(DesktopFrameDataEquals(frame, frame));
    101  DoubleSizeDesktopFrame other(DesktopSize(4, 4));
    102  for (int i = 0; i < 4; i++) {
    103    for (int j = 0; j < 4; j++) {
    104      PaintDesktopFrame(&other, DesktopVector(i, j), RgbaColor(4U * j + i));
    105    }
    106  }
    107  ASSERT_TRUE(DesktopFrameDataEquals(frame, other));
    108 }
    109 
    110 }  // namespace webrtc