/* * Copyright (c) 2021 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. */ // This implementation is borrowed from Chromium. #include "rtc_base/containers/flat_tree.h" // Following tests are ported and extended tests from libcpp for std::set. // They can be found here: // https://github.com/llvm/llvm-project/tree/main/libcxx/test/std/containers/associative/set // // Not ported tests: // * No tests with PrivateConstructor and std::less<> changed to std::less<T> // These tests have to do with C++14 std::less<> // http://en.cppreference.com/w/cpp/utility/functional/less_void // and add support for templated versions of lookup functions. // Because we use same implementation, we figured that it's OK just to check // compilation and this is what we do in flat_set_unittest/flat_map_unittest. // * No tests for max_size() // Has to do with allocator support. // * No tests with DefaultOnly. // Standard containers allocate each element in the separate node on the heap // and then manipulate these nodes. Flat containers store their elements in // contiguous memory and move them around, type is required to be movable. // * No tests for N3644. // This proposal suggests that all default constructed iterators compare // equal. Currently we use std::vector iterators and they don't implement // this. // * No tests with min_allocator and no tests counting allocations. // Flat sets currently don't support allocators. #include <array> #include <deque> #include <forward_list> #include <functional> #include <iterator> #include <list> #include <string> #include <vector> #include "rtc_base/containers/identity.h" #include "rtc_base/containers/move_only_int.h" #include "test/gmock.h" #include "test/gtest.h" namespace webrtc { namespace flat_containers_internal { namespace … // namespace } // namespace flat_containers_internal } // namespace webrtc