Files
platform-external-webrtc/webrtc/test/common_unittest.cc
aluebs 25249d92d3 Use an explicit identifier in Config
This let's us use them to configure them when using WebRTC as an external library. One use case where this is necessary is in the Android OS.

Review URL: https://codereview.webrtc.org/1538643004

Cr-Commit-Position: refs/heads/master@{#11231}
2016-01-13 02:50:31 +00:00

84 lines
2.3 KiB
C++

/*
* Copyright (c) 2013 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 "webrtc/common.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace webrtc {
namespace {
struct MyExperiment {
static const ConfigOptionID identifier = ConfigOptionID::kMyExperimentForTest;
static const int kDefaultFactor;
static const int kDefaultOffset;
MyExperiment()
: factor(kDefaultFactor), offset(kDefaultOffset) {}
MyExperiment(int factor, int offset)
: factor(factor), offset(offset) {}
int factor;
int offset;
};
const int MyExperiment::kDefaultFactor = 1;
const int MyExperiment::kDefaultOffset = 2;
TEST(Config, ReturnsDefaultInstanceIfNotConfigured) {
Config config;
const MyExperiment& my_exp = config.Get<MyExperiment>();
EXPECT_EQ(MyExperiment::kDefaultFactor, my_exp.factor);
EXPECT_EQ(MyExperiment::kDefaultOffset, my_exp.offset);
}
TEST(Config, ReturnOptionWhenSet) {
Config config;
config.Set<MyExperiment>(new MyExperiment(5, 1));
const MyExperiment& my_exp = config.Get<MyExperiment>();
EXPECT_EQ(5, my_exp.factor);
EXPECT_EQ(1, my_exp.offset);
}
TEST(Config, SetNullSetsTheOptionBackToDefault) {
Config config;
config.Set<MyExperiment>(new MyExperiment(5, 1));
config.Set<MyExperiment>(NULL);
const MyExperiment& my_exp = config.Get<MyExperiment>();
EXPECT_EQ(MyExperiment::kDefaultFactor, my_exp.factor);
EXPECT_EQ(MyExperiment::kDefaultOffset, my_exp.offset);
}
struct Algo1_CostFunction {
static const ConfigOptionID identifier =
ConfigOptionID::kAlgo1CostFunctionForTest;
Algo1_CostFunction() {}
virtual int cost(int x) const {
return x;
}
virtual ~Algo1_CostFunction() {}
};
struct SqrCost : Algo1_CostFunction {
virtual int cost(int x) const {
return x*x;
}
};
TEST(Config, SupportsPolymorphism) {
Config config;
config.Set<Algo1_CostFunction>(new SqrCost());
EXPECT_EQ(25, config.Get<Algo1_CostFunction>().cost(5));
}
} // namespace
} // namespace webrtc