// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "remoting/base/session_options.h" #include "testing/gtest/include/gtest/gtest.h" namespace remoting { TEST(SessionOptionsTest, ShouldBeAbleToAppendOptions) { SessionOptions options; options.Import("A:, B C :1, DE:2, EF"); ASSERT_TRUE(options.Get("A")); ASSERT_EQ(*options.Get("B C "), "1"); ASSERT_EQ(*options.Get("DE"), "2"); ASSERT_FALSE(options.Get("EF")); ASSERT_FALSE(options.Get(" EF")); ASSERT_FALSE(options.Get("--FF")); options.Append("A", "100"); options.Append("--FF", "3"); ASSERT_EQ(*options.Get("A"), "100"); ASSERT_EQ(*options.Get("--FF"), "3"); } TEST(SessionOptionsTest, ShouldRemoveEmptyKeys) { SessionOptions options; options.Import("A:1,:,B:"); ASSERT_TRUE(options.Get("A")); ASSERT_TRUE(options.Get("B")); ASSERT_FALSE(options.Get("")); } TEST(SessionOptionsTest, ShouldRemoveNonASCIIKeyOrValue) { SessionOptions options; options.Import("\xE9\x9B\xAA:value,key:\xE9\xA3\x9E,key2:value2"); ASSERT_FALSE(options.Get("\xE9\x9B\xAA")); ASSERT_FALSE(options.Get("key")); ASSERT_EQ(*options.Get("key2"), "value2"); } TEST(SessionOptionsTest, ImportAndExport) { SessionOptions options; options.Import("A:,B:,C:D,E:V"); std::string result = options.Export(); SessionOptions other; other.Append("C", "X"); other.Import(result); ASSERT_EQ(options.Export(), other.Export()); } TEST(SessionOptionsTest, ConvertToBool) { SessionOptions options; options.Import("A:,B:x,C:true,D:TRUE,E:1,F:2,G:FALSE,H:0,I"); ASSERT_TRUE(*options.GetBool("A")); ASSERT_FALSE(options.GetBool("B")); ASSERT_TRUE(*options.GetBool("C")); ASSERT_TRUE(*options.GetBool("D")); ASSERT_TRUE(*options.GetBool("E")); ASSERT_FALSE(options.GetBool("F")); ASSERT_FALSE(*options.GetBool("G")); ASSERT_FALSE(*options.GetBool("H")); ASSERT_FALSE(options.GetBool("I")); } TEST(SessionOptionsTest, ConvertToint) { SessionOptions options; options.Import("A:100,B:-200,C:x,D:"); ASSERT_EQ(*options.GetInt("A"), 100); ASSERT_EQ(*options.GetInt("B"), -200); ASSERT_FALSE(options.GetInt("C")); ASSERT_FALSE(options.GetInt("D")); } } // namespace remoting