// Copyright (c) 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef NET_QUIC_PLATFORM_IMPL_QUIC_TEST_IMPL_H_
#define NET_QUIC_PLATFORM_IMPL_QUIC_TEST_IMPL_H_

#include "testing/gmock/include/gmock/gmock.h"  // IWYU pragma: export
#include "testing/gtest/include/gtest/gtest.h"  // IWYU pragma: export

// When constructed, checks that all QUIC flags have their correct default
// values and when destructed, restores those values.
class QuicFlagSaver {
 public:
  QuicFlagSaver();
  ~QuicFlagSaver();
};

class QuicTestImpl : public ::testing::Test {
 private:
  QuicFlagSaver flags_;  // Save/restore all QUIC flag values.
};

template <class T>
class QuicTestWithParamImpl : public ::testing::TestWithParam<T> {
 private:
  QuicFlagSaver flags_;  // Save/restore all QUIC flag values.
};

#endif  // NET_QUIC_PLATFORM_IMPL_QUIC_TEST_IMPL_H_