diff options
Diffstat (limited to 'third_party/libwebrtc/rtc_base/experiments/struct_parameters_parser_unittest.cc')
-rw-r--r-- | third_party/libwebrtc/rtc_base/experiments/struct_parameters_parser_unittest.cc | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/third_party/libwebrtc/rtc_base/experiments/struct_parameters_parser_unittest.cc b/third_party/libwebrtc/rtc_base/experiments/struct_parameters_parser_unittest.cc new file mode 100644 index 0000000000..0824bd3b27 --- /dev/null +++ b/third_party/libwebrtc/rtc_base/experiments/struct_parameters_parser_unittest.cc @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2019 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. + */ +#include "rtc_base/experiments/struct_parameters_parser.h" + +#include "rtc_base/gunit.h" + +namespace webrtc { +namespace { +struct DummyConfig { + bool enabled = false; + double factor = 0.5; + int retries = 5; + unsigned size = 3; + bool ping = 0; + absl::optional<TimeDelta> duration; + absl::optional<TimeDelta> latency = TimeDelta::Millis(100); + std::unique_ptr<StructParametersParser> Parser(); +}; + +std::unique_ptr<StructParametersParser> DummyConfig::Parser() { + // The empty comments ensures that each pair is on a separate line. + return StructParametersParser::Create("e", &enabled, // + "f", &factor, // + "r", &retries, // + "s", &size, // + "p", &ping, // + "d", &duration, // + "l", &latency); +} +} // namespace + +TEST(StructParametersParserTest, ParsesValidParameters) { + DummyConfig exp; + exp.Parser()->Parse("e:1,f:-1.7,r:2,s:7,p:1,d:8,l:,"); + EXPECT_TRUE(exp.enabled); + EXPECT_EQ(exp.factor, -1.7); + EXPECT_EQ(exp.retries, 2); + EXPECT_EQ(exp.size, 7u); + EXPECT_EQ(exp.ping, true); + EXPECT_EQ(exp.duration.value().ms(), 8); + EXPECT_FALSE(exp.latency); +} + +TEST(StructParametersParserTest, UsesDefaults) { + DummyConfig exp; + exp.Parser()->Parse(""); + EXPECT_FALSE(exp.enabled); + EXPECT_EQ(exp.factor, 0.5); + EXPECT_EQ(exp.retries, 5); + EXPECT_EQ(exp.size, 3u); + EXPECT_EQ(exp.ping, false); +} + +TEST(StructParametersParserTest, EncodeAll) { + DummyConfig exp; + auto encoded = exp.Parser()->Encode(); + // All parameters are encoded. + EXPECT_EQ(encoded, "e:false,f:0.5,r:5,s:3,p:false,d:,l:100 ms"); +} + +} // namespace webrtc |