tor-browser

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

gmock-matchers.h (3047B)


      1 // Copyright 2015, Google Inc.
      2 // All rights reserved.
      3 //
      4 // Redistribution and use in source and binary forms, with or without
      5 // modification, are permitted provided that the following conditions are
      6 // met:
      7 //
      8 //     * Redistributions of source code must retain the above copyright
      9 // notice, this list of conditions and the following disclaimer.
     10 //     * Redistributions in binary form must reproduce the above
     11 // copyright notice, this list of conditions and the following disclaimer
     12 // in the documentation and/or other materials provided with the
     13 // distribution.
     14 //     * Neither the name of Google Inc. nor the names of its
     15 // contributors may be used to endorse or promote products derived from
     16 // this software without specific prior written permission.
     17 //
     18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     19 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     20 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     21 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     22 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     23 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     24 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     25 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     29 //
     30 // Injection point for custom user configurations. See README for details
     31 //
     32 // GOOGLETEST_CM0002 DO NOT DELETE
     33 
     34 #ifndef GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
     35 #define GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
     36 
     37 #include "nsTArray.h"
     38 #include "mozilla/media/MediaUtils.h"
     39 
     40 namespace testing {
     41 namespace internal {
     42 
     43 // Wrapper class that adds size() method to nsTArray for gmock compatibility
     44 template <typename T>
     45 class NsTArrayWrapper {
     46 public:
     47  using value_type = T;
     48  using const_iterator = typename nsTArray<T>::const_iterator;
     49  using size_type = typename nsTArray<T>::size_type;
     50 
     51  explicit NsTArrayWrapper(const nsTArray<T>& array) : array_(array) {}
     52 
     53  const_iterator begin() const { return array_.begin(); }
     54  const_iterator end() const { return array_.end(); }
     55  size_type size() const { return array_.Length(); }
     56 
     57  const T& operator[](size_type index) const { return array_[index]; }
     58 
     59 private:
     60  const nsTArray<T>& array_;
     61 };
     62 
     63 // StlContainerView specialization for Refcountable<nsTArray>
     64 template <typename T>
     65 class StlContainerView<nsTArray<T>> {
     66 public:
     67  using type = NsTArrayWrapper<T>;
     68  using const_reference = NsTArrayWrapper<T>;
     69 
     70  static const_reference ConstReference(const nsTArray<T>& array) {
     71    return NsTArrayWrapper<T>(array);
     72  }
     73  static nsTArray<T> Copy(const nsTArray<T>& array) { return array.Clone(); }
     74 };
     75 
     76 }  // namespace internal
     77 }  // namespace testing
     78 
     79 #endif  // GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_