Home | History | Annotate | Download | only in test
      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