Home | History | Annotate | Download | only in gn
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "testing/gtest/include/gtest/gtest.h"
      6 #include "tools/gn/test_with_scope.h"
      7 #include "tools/gn/value.h"
      8 
      9 TEST(Value, ToString) {
     10   Value strval(NULL, "hi\" $me\\you\\$\\\"");
     11   EXPECT_EQ("hi\" $me\\you\\$\\\"", strval.ToString(false));
     12   EXPECT_EQ("\"hi\\\" \\$me\\you\\\\\\$\\\\\\\"\"", strval.ToString(true));
     13 
     14   // Void type.
     15   EXPECT_EQ("<void>", Value().ToString(false));
     16 
     17   // Test lists, bools, and ints.
     18   Value listval(NULL, Value::LIST);
     19   listval.list_value().push_back(Value(NULL, "hi\"me"));
     20   listval.list_value().push_back(Value(NULL, true));
     21   listval.list_value().push_back(Value(NULL, false));
     22   listval.list_value().push_back(Value(NULL, static_cast<int64>(42)));
     23   // Printing lists always causes embedded strings to be quoted (ignoring the
     24   // quote flag), or else they wouldn't make much sense.
     25   EXPECT_EQ("[\"hi\\\"me\", true, false, 42]", listval.ToString(false));
     26   EXPECT_EQ("[\"hi\\\"me\", true, false, 42]", listval.ToString(true));
     27 
     28   // Scopes.
     29   TestWithScope setup;
     30   Scope* scope = new Scope(setup.scope());
     31   Value scopeval(NULL, scoped_ptr<Scope>(scope));
     32   EXPECT_EQ("{ }", scopeval.ToString(false));
     33 
     34   scope->SetValue("a", Value(NULL, static_cast<int64>(42)), NULL);
     35   scope->SetValue("b", Value(NULL, "hello, world"), NULL);
     36   EXPECT_EQ("{\n  a = 42\n  b = \"hello, world\"\n}", scopeval.ToString(false));
     37 }
     38 
     39