Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(252)

Side by Side Diff: tools/gn/functions_unittest.cc

Issue 223783005: Add support for reading .gypi files. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tools/gn/function_read_file.cc ('k') | tools/gn/input_conversion.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "testing/gtest/include/gtest/gtest.h" 5 #include "testing/gtest/include/gtest/gtest.h"
6 #include "tools/gn/functions.h" 6 #include "tools/gn/functions.h"
7 #include "tools/gn/parse_tree.h" 7 #include "tools/gn/parse_tree.h"
8 #include "tools/gn/test_with_scope.h" 8 #include "tools/gn/test_with_scope.h"
9 #include "tools/gn/value.h" 9 #include "tools/gn/value.h"
10 10
11 TEST(Functions, Defined) { 11 TEST(Functions, Defined) {
12 TestWithScope setup; 12 TestWithScope setup;
13 13
14 //InputFile input_file(SourceFile("//foo"));
15 FunctionCallNode function_call; 14 FunctionCallNode function_call;
16 Err err; 15 Err err;
17 16
18 // Test an undefined identifier. 17 // Test an undefined identifier.
19 Token undefined_token(Location(), Token::IDENTIFIER, "undef"); 18 Token undefined_token(Location(), Token::IDENTIFIER, "undef");
20 ListNode args_list_identifier_undefined; 19 ListNode args_list_identifier_undefined;
21 args_list_identifier_undefined.append_item( 20 args_list_identifier_undefined.append_item(
22 scoped_ptr<ParseNode>(new IdentifierNode(undefined_token))); 21 scoped_ptr<ParseNode>(new IdentifierNode(undefined_token)));
23 Value result = functions::RunDefined(setup.scope(), &function_call, 22 Value result = functions::RunDefined(setup.scope(), &function_call,
24 &args_list_identifier_undefined, &err); 23 &args_list_identifier_undefined, &err);
25 ASSERT_EQ(Value::BOOLEAN, result.type()); 24 ASSERT_EQ(Value::BOOLEAN, result.type());
26 EXPECT_FALSE(result.boolean_value()); 25 EXPECT_FALSE(result.boolean_value());
27 26
28 // Define a value that's itself a scope value. 27 // Define a value that's itself a scope value.
29 const char kDef[] = "def"; // Defined variable name. 28 const char kDef[] = "def"; // Defined variable name.
30 Scope nested(setup.scope()); 29 setup.scope()->SetValue(kDef,
31 setup.scope()->SetValue(kDef, Value(NULL, &nested), NULL); 30 Value(NULL, scoped_ptr<Scope>(new Scope(setup.scope()))),
31 NULL);
32 32
33 // Test the defined identifier. 33 // Test the defined identifier.
34 Token defined_token(Location(), Token::IDENTIFIER, kDef); 34 Token defined_token(Location(), Token::IDENTIFIER, kDef);
35 ListNode args_list_identifier_defined; 35 ListNode args_list_identifier_defined;
36 args_list_identifier_defined.append_item( 36 args_list_identifier_defined.append_item(
37 scoped_ptr<ParseNode>(new IdentifierNode(defined_token))); 37 scoped_ptr<ParseNode>(new IdentifierNode(defined_token)));
38 result = functions::RunDefined(setup.scope(), &function_call, 38 result = functions::RunDefined(setup.scope(), &function_call,
39 &args_list_identifier_defined, &err); 39 &args_list_identifier_defined, &err);
40 ASSERT_EQ(Value::BOOLEAN, result.type()); 40 ASSERT_EQ(Value::BOOLEAN, result.type());
41 EXPECT_TRUE(result.boolean_value()); 41 EXPECT_TRUE(result.boolean_value());
42 42
43 // Should also work by passing an accessor node so you can do 43 // Should also work by passing an accessor node so you can do
44 // "defined(def.foo)" to see if foo is defined on the def scope. 44 // "defined(def.foo)" to see if foo is defined on the def scope.
45 scoped_ptr<AccessorNode> undef_accessor(new AccessorNode); 45 scoped_ptr<AccessorNode> undef_accessor(new AccessorNode);
46 undef_accessor->set_base(defined_token); 46 undef_accessor->set_base(defined_token);
47 undef_accessor->set_member(scoped_ptr<IdentifierNode>( 47 undef_accessor->set_member(scoped_ptr<IdentifierNode>(
48 new IdentifierNode(undefined_token))); 48 new IdentifierNode(undefined_token)));
49 ListNode args_list_accessor_defined; 49 ListNode args_list_accessor_defined;
50 args_list_accessor_defined.append_item(undef_accessor.PassAs<ParseNode>()); 50 args_list_accessor_defined.append_item(undef_accessor.PassAs<ParseNode>());
51 result = functions::RunDefined(setup.scope(), &function_call, 51 result = functions::RunDefined(setup.scope(), &function_call,
52 &args_list_accessor_defined, &err); 52 &args_list_accessor_defined, &err);
53 ASSERT_EQ(Value::BOOLEAN, result.type()); 53 ASSERT_EQ(Value::BOOLEAN, result.type());
54 EXPECT_FALSE(result.boolean_value()); 54 EXPECT_FALSE(result.boolean_value());
55 } 55 }
OLDNEW
« no previous file with comments | « tools/gn/function_read_file.cc ('k') | tools/gn/input_conversion.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698