1 // 2 // Copyright (C) 2015 Google, Inc. 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at: 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 // 16 17 #include <base/at_exit.h> 18 #include <base/command_line.h> 19 #include <base/macros.h> 20 #include <gtest/gtest.h> 21 22 #include "service/settings.h" 23 #include "service/switches.h" 24 25 using bluetooth::Settings; 26 using namespace bluetooth::switches; 27 28 namespace { 29 30 class SettingsTest : public ::testing::Test { 31 public: 32 SettingsTest() = default; 33 34 void SetUp() override { base::CommandLine::Reset(); } 35 36 void TearDown() override { base::CommandLine::Reset(); } 37 38 protected: 39 base::AtExitManager exit_manager_; 40 Settings settings_; 41 42 private: 43 DISALLOW_COPY_AND_ASSIGN(SettingsTest); 44 }; 45 46 TEST_F(SettingsTest, EmptyCommandLine) { 47 const base::CommandLine::CharType* argv[] = {"program"}; 48 EXPECT_TRUE(base::CommandLine::Init(arraysize(argv), argv)); 49 EXPECT_TRUE(settings_.Init()); 50 } 51 52 TEST_F(SettingsTest, UnexpectedSwitches1) { 53 const base::CommandLine::CharType* argv[] = { 54 "program", "--create-ipc-socket=foobar", "--foobarbaz"}; 55 EXPECT_TRUE(base::CommandLine::Init(arraysize(argv), argv)); 56 EXPECT_FALSE(settings_.Init()); 57 } 58 59 TEST_F(SettingsTest, UnexpectedSwitches2) { 60 const base::CommandLine::CharType* argv[] = {"program", "--foobarbaz"}; 61 EXPECT_TRUE(base::CommandLine::Init(arraysize(argv), argv)); 62 EXPECT_FALSE(settings_.Init()); 63 } 64 65 TEST_F(SettingsTest, UnexpectedArguments1) { 66 const base::CommandLine::CharType* argv[] = {"program", "foobarbaz"}; 67 EXPECT_TRUE(base::CommandLine::Init(arraysize(argv), argv)); 68 EXPECT_FALSE(settings_.Init()); 69 } 70 71 TEST_F(SettingsTest, UnexpectedArguments2) { 72 const base::CommandLine::CharType* argv[] = { 73 "program", "--create-ipc-socket=foobar", "foobarbaz"}; 74 EXPECT_TRUE(base::CommandLine::Init(arraysize(argv), argv)); 75 EXPECT_FALSE(settings_.Init()); 76 } 77 78 TEST_F(SettingsTest, TooManyIpcOptions) { 79 const base::CommandLine::CharType* argv[] = { 80 "program", "--create-ipc-socket=foobar", 81 "--android-ipc-socket-suffix=foobar"}; 82 EXPECT_TRUE(base::CommandLine::Init(arraysize(argv), argv)); 83 EXPECT_FALSE(settings_.Init()); 84 } 85 86 TEST_F(SettingsTest, GoodArgumentsCreateIpc) { 87 const base::CommandLine::CharType* argv[] = {"program", 88 "--create-ipc-socket=foobar"}; 89 EXPECT_TRUE(base::CommandLine::Init(arraysize(argv), argv)); 90 EXPECT_TRUE(settings_.Init()); 91 } 92 93 TEST_F(SettingsTest, GoodArgumentsAndroidIpc) { 94 const base::CommandLine::CharType* argv[] = { 95 "program", "--android-ipc-socket-suffix=foobar"}; 96 EXPECT_TRUE(base::CommandLine::Init(arraysize(argv), argv)); 97 EXPECT_TRUE(settings_.Init()); 98 } 99 100 } // namespace 101