1010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// found in the LICENSE file. 4010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 5010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "tools/gn/test_with_scope.h" 7010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "tools/gn/value.h" 8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 9010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TEST(Value, ToString) { 10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) Value strval(NULL, "hi\" $me\\you\\$\\\""); 11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_EQ("hi\" $me\\you\\$\\\"", strval.ToString(false)); 12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_EQ("\"hi\\\" \\$me\\you\\\\\\$\\\\\\\"\"", strval.ToString(true)); 13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Void type. 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ("<void>", Value().ToString(false)); 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Test lists, bools, and ints. 18010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) Value listval(NULL, Value::LIST); 19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) listval.list_value().push_back(Value(NULL, "hi\"me")); 20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) listval.list_value().push_back(Value(NULL, true)); 21010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) listval.list_value().push_back(Value(NULL, false)); 22010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) listval.list_value().push_back(Value(NULL, static_cast<int64>(42))); 23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // Printing lists always causes embedded strings to be quoted (ignoring the 24010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) // quote flag), or else they wouldn't make much sense. 25010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_EQ("[\"hi\\\"me\", true, false, 42]", listval.ToString(false)); 26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) EXPECT_EQ("[\"hi\\\"me\", true, false, 42]", listval.ToString(true)); 27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Scopes. 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) TestWithScope setup; 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Scope* scope = new Scope(setup.scope()); 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Value scopeval(NULL, scoped_ptr<Scope>(scope)); 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ("{ }", scopeval.ToString(false)); 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scope->SetValue("a", Value(NULL, static_cast<int64>(42)), NULL); 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) scope->SetValue("b", Value(NULL, "hello, world"), NULL); 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) EXPECT_EQ("{\n a = 42\n b = \"hello, world\"\n}", scopeval.ToString(false)); 37010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)} 38010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) 39