16e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 26e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 36e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// found in the LICENSE file. 46e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 56e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 66e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "tools/gn/functions.h" 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "tools/gn/test_with_scope.h" 86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST(FunctionProcessFileTemplates, SingleString) { 106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) TestWithScope setup; 116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) std::vector<Value> args; 136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Value sources(NULL, Value::LIST); 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) sources.list_value().push_back(Value(NULL, "//src/foo.txt")); 166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) args.push_back(sources); 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Value expansion(NULL, "1234{{source_name_part}}5678"); 196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) args.push_back(expansion); 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Err err; 226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Value result = functions::RunProcessFileTemplate( 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) setup.scope(), NULL, args, &err); 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_FALSE(err.has_error()); 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ASSERT_TRUE(result.type() == Value::LIST); 276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ASSERT_EQ(1u, result.list_value().size()); 286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ASSERT_TRUE(result.list_value()[0].type() == Value::STRING); 296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ASSERT_EQ("1234foo5678", result.list_value()[0].string_value()); 306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST(FunctionProcessFileTemplates, MultipleStrings) { 336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) TestWithScope setup; 346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) std::vector<Value> args; 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Value sources(NULL, Value::LIST); 386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) sources.list_value().push_back(Value(NULL, "//src/one.txt")); 396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) sources.list_value().push_back(Value(NULL, "//src/two.txt")); 406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) args.push_back(sources); 416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Value expansions(NULL, Value::LIST); 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) expansions.list_value().push_back( 446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Value(NULL, "1234{{source_name_part}}5678")); 456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) expansions.list_value().push_back( 466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Value(NULL, "ABCD{{source_file_part}}EFGH")); 476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) args.push_back(expansions); 486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Err err; 506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) Value result = functions::RunProcessFileTemplate( 516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) setup.scope(), NULL, args, &err); 526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_FALSE(err.has_error()); 536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ASSERT_TRUE(result.type() == Value::LIST); 556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ASSERT_EQ(4u, result.list_value().size()); 566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ASSERT_TRUE(result.list_value()[0].type() == Value::STRING); 576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ASSERT_TRUE(result.list_value()[1].type() == Value::STRING); 586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ASSERT_TRUE(result.list_value()[2].type() == Value::STRING); 596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ASSERT_TRUE(result.list_value()[3].type() == Value::STRING); 606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ASSERT_EQ("1234one5678", result.list_value()[0].string_value()); 616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ASSERT_EQ("ABCDone.txtEFGH", result.list_value()[1].string_value()); 626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ASSERT_EQ("1234two5678", result.list_value()[2].string_value()); 636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ASSERT_EQ("ABCDtwo.txtEFGH", result.list_value()[3].string_value()); 646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 65