| #include <gtest/gtest.h> |
| |
| #include "caffe2/utils/knobs.h" |
| #include "caffe2/utils/knob_patcher.h" |
| |
| using namespace caffe2; |
| |
| TEST(KnobsTest, TestKnob) { |
| auto p = KnobPatcher("example_knob", false); |
| EXPECT_FALSE(CheckKnobExampleKnob()); |
| EXPECT_FALSE(CheckKnob("example_knob")); |
| |
| p = KnobPatcher("example_knob", true); |
| EXPECT_TRUE(CheckKnobExampleKnob()); |
| EXPECT_TRUE(CheckKnob("example_knob")); |
| |
| // Test nested patchers |
| { |
| auto p2 = KnobPatcher("example_knob", false); |
| EXPECT_FALSE(CheckKnobExampleKnob()); |
| EXPECT_FALSE(CheckKnob("example_knob")); |
| |
| auto p3 = KnobPatcher("example_knob", true); |
| EXPECT_TRUE(CheckKnobExampleKnob()); |
| EXPECT_TRUE(CheckKnob("example_knob")); |
| } |
| EXPECT_TRUE(CheckKnobExampleKnob()); |
| EXPECT_TRUE(CheckKnob("example_knob")); |
| } |
| |
| TEST(KnobsTest, TestUnknownKnob) { |
| // Unknown knob names should throw an exception |
| EXPECT_THROW(CheckKnob("this_knob_does_not_exist"), std::exception); |
| } |