• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2017 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 "gn/xcode_object.h"
6 
7 #include "util/test/test.h"
8 
9 namespace {
10 
11 // Instantiate a PBXSourcesBuildPhase object.
GetPBXSourcesBuildPhaseObject()12 std::unique_ptr<PBXSourcesBuildPhase> GetPBXSourcesBuildPhaseObject() {
13   std::unique_ptr<PBXSourcesBuildPhase> pbx_sources_build_phase(
14       new PBXSourcesBuildPhase());
15   return pbx_sources_build_phase;
16 }
17 
18 // Instantiate a PBXFrameworksBuildPhase object.
GetPBXFrameworksBuildPhaseObject()19 std::unique_ptr<PBXFrameworksBuildPhase> GetPBXFrameworksBuildPhaseObject() {
20   std::unique_ptr<PBXFrameworksBuildPhase> pbx_frameworks_build_phase(
21       new PBXFrameworksBuildPhase());
22   return pbx_frameworks_build_phase;
23 }
24 
25 // Instantiate a PBXShellScriptBuildPhase object with arbitrary names.
GetPBXShellScriptBuildPhaseObject()26 std::unique_ptr<PBXShellScriptBuildPhase> GetPBXShellScriptBuildPhaseObject() {
27   std::unique_ptr<PBXShellScriptBuildPhase> pbx_shell_script_build_phase(
28       new PBXShellScriptBuildPhase("name", "shell_script"));
29   return pbx_shell_script_build_phase;
30 }
31 
32 // Instantiate a PBXGroup object with arbitrary names.
GetPBXGroupObject()33 std::unique_ptr<PBXGroup> GetPBXGroupObject() {
34   std::unique_ptr<PBXGroup> pbx_group(new PBXGroup("/dir1/dir2", "group"));
35   return pbx_group;
36 }
37 
38 // Instantiate a PBXProject object with arbitrary names.
GetPBXProjectObject()39 std::unique_ptr<PBXProject> GetPBXProjectObject() {
40   std::unique_ptr<PBXProject> pbx_project(
41       new PBXProject("project", {"config"}, "out/build", PBXAttributes()));
42   return pbx_project;
43 }
44 
45 // Instantiate a PBXFileReference object with arbitrary names.
GetPBXFileReferenceObject()46 std::unique_ptr<PBXFileReference> GetPBXFileReferenceObject() {
47   std::unique_ptr<PBXFileReference> pbx_file_reference(new PBXFileReference(
48       "product.app", "product.app", "wrapper.application"));
49   return pbx_file_reference;
50 }
51 
52 // Instantiate a PBXBuildFile object.
GetPBXBuildFileObject(const PBXFileReference * file_reference,const PBXSourcesBuildPhase * build_phase)53 std::unique_ptr<PBXBuildFile> GetPBXBuildFileObject(
54     const PBXFileReference* file_reference,
55     const PBXSourcesBuildPhase* build_phase) {
56   std::unique_ptr<PBXBuildFile> pbx_build_file(
57       new PBXBuildFile(file_reference, build_phase));
58   return pbx_build_file;
59 }
60 
61 // Instantiate a PBXAggregateTarget object with arbitrary names.
GetPBXAggregateTargetObject()62 std::unique_ptr<PBXAggregateTarget> GetPBXAggregateTargetObject() {
63   std::unique_ptr<PBXAggregateTarget> pbx_aggregate_target(
64       new PBXAggregateTarget("target_name", "shell_script", {"config_name"},
65                              PBXAttributes()));
66   return pbx_aggregate_target;
67 }
68 
69 // Instantiate a PBXNativeTarget object with arbitrary names.
GetPBXNativeTargetObject(const PBXFileReference * product_reference)70 std::unique_ptr<PBXNativeTarget> GetPBXNativeTargetObject(
71     const PBXFileReference* product_reference) {
72   std::unique_ptr<PBXNativeTarget> pbx_native_target(new PBXNativeTarget(
73       "target_name", "ninja gn_unittests", {"config_name"}, PBXAttributes(),
74       "com.apple.product-type.application", "product_name", product_reference));
75   return pbx_native_target;
76 }
77 
78 // Instantiate a PBXContainerItemProxy object.
GetPBXContainerItemProxyObject(const PBXProject * project,const PBXTarget * target)79 std::unique_ptr<PBXContainerItemProxy> GetPBXContainerItemProxyObject(
80     const PBXProject* project,
81     const PBXTarget* target) {
82   std::unique_ptr<PBXContainerItemProxy> pbx_container_item_proxy(
83       new PBXContainerItemProxy(project, target));
84   return pbx_container_item_proxy;
85 }
86 
87 // Instantiate a PBXTargetDependency object.
GetPBXTargetDependencyObject(const PBXTarget * target,std::unique_ptr<PBXContainerItemProxy> container_item_proxy)88 std::unique_ptr<PBXTargetDependency> GetPBXTargetDependencyObject(
89     const PBXTarget* target,
90     std::unique_ptr<PBXContainerItemProxy> container_item_proxy) {
91   std::unique_ptr<PBXTargetDependency> pbx_target_dependency(
92       new PBXTargetDependency(target, std::move(container_item_proxy)));
93   return pbx_target_dependency;
94 }
95 
96 // Instantiate a XCBuildConfiguration object with arbitrary names.
GetXCBuildConfigurationObject()97 std::unique_ptr<XCBuildConfiguration> GetXCBuildConfigurationObject() {
98   std::unique_ptr<XCBuildConfiguration> xc_build_configuration(
99       new XCBuildConfiguration("config_name", PBXAttributes()));
100   return xc_build_configuration;
101 }
102 
103 // Instantiate a XCConfigurationList object with arbitrary names.
GetXCConfigurationListObject(const PBXObject * owner_reference)104 std::unique_ptr<XCConfigurationList> GetXCConfigurationListObject(
105     const PBXObject* owner_reference) {
106   std::unique_ptr<XCConfigurationList> xc_configuration_list(
107       new XCConfigurationList({"config_list_name"}, PBXAttributes(),
108                               owner_reference));
109   return xc_configuration_list;
110 }
111 
112 }  // namespace
113 
114 // Tests that instantiating Xcode objects doesn't crash.
TEST(XcodeObject,InstantiatePBXSourcesBuildPhase)115 TEST(XcodeObject, InstantiatePBXSourcesBuildPhase) {
116   std::unique_ptr<PBXSourcesBuildPhase> pbx_sources_build_phase =
117       GetPBXSourcesBuildPhaseObject();
118 }
119 
TEST(XcodeObject,InstantiatePBXFrameworksBuildPhase)120 TEST(XcodeObject, InstantiatePBXFrameworksBuildPhase) {
121   std::unique_ptr<PBXFrameworksBuildPhase> pbx_frameworks_build_phase =
122       GetPBXFrameworksBuildPhaseObject();
123 }
124 
TEST(XcodeObject,InstantiatePBXShellScriptBuildPhase)125 TEST(XcodeObject, InstantiatePBXShellScriptBuildPhase) {
126   std::unique_ptr<PBXShellScriptBuildPhase> pbx_shell_script_build_phase =
127       GetPBXShellScriptBuildPhaseObject();
128 }
129 
TEST(XcodeObject,InstantiatePBXGroup)130 TEST(XcodeObject, InstantiatePBXGroup) {
131   std::unique_ptr<PBXGroup> pbx_group = GetPBXGroupObject();
132 }
133 
TEST(XcodeObject,InstantiatePBXProject)134 TEST(XcodeObject, InstantiatePBXProject) {
135   std::unique_ptr<PBXProject> pbx_project = GetPBXProjectObject();
136 }
137 
TEST(XcodeObject,InstantiatePBXFileReference)138 TEST(XcodeObject, InstantiatePBXFileReference) {
139   std::unique_ptr<PBXFileReference> pbx_file_reference =
140       GetPBXFileReferenceObject();
141 }
142 
TEST(XcodeObject,InstantiatePBXBuildFile)143 TEST(XcodeObject, InstantiatePBXBuildFile) {
144   std::unique_ptr<PBXFileReference> pbx_file_reference =
145       GetPBXFileReferenceObject();
146   std::unique_ptr<PBXSourcesBuildPhase> pbx_sources_build_phase =
147       GetPBXSourcesBuildPhaseObject();
148   std::unique_ptr<PBXBuildFile> pbx_build_file = GetPBXBuildFileObject(
149       pbx_file_reference.get(), pbx_sources_build_phase.get());
150 }
151 
TEST(XcodeObject,InstantiatePBXAggregateTarget)152 TEST(XcodeObject, InstantiatePBXAggregateTarget) {
153   std::unique_ptr<PBXAggregateTarget> pbx_aggregate_target =
154       GetPBXAggregateTargetObject();
155 }
156 
TEST(XcodeObject,InstantiatePBXNativeTarget)157 TEST(XcodeObject, InstantiatePBXNativeTarget) {
158   std::unique_ptr<PBXFileReference> product_reference =
159       GetPBXFileReferenceObject();
160   std::unique_ptr<PBXNativeTarget> pbx_native_target =
161       GetPBXNativeTargetObject(product_reference.get());
162 }
163 
TEST(XcodeObject,InstantiatePBXContainerItemProxy)164 TEST(XcodeObject, InstantiatePBXContainerItemProxy) {
165   std::unique_ptr<PBXFileReference> product_reference =
166       GetPBXFileReferenceObject();
167   std::unique_ptr<PBXNativeTarget> pbx_native_target =
168       GetPBXNativeTargetObject(product_reference.get());
169   std::unique_ptr<PBXProject> pbx_project = GetPBXProjectObject();
170   std::unique_ptr<PBXContainerItemProxy> pbx_container_item_proxy =
171       GetPBXContainerItemProxyObject(pbx_project.get(),
172                                      pbx_native_target.get());
173 }
174 
TEST(XcodeObject,InstantiatePBXTargetDependency)175 TEST(XcodeObject, InstantiatePBXTargetDependency) {
176   std::unique_ptr<PBXFileReference> product_reference =
177       GetPBXFileReferenceObject();
178   std::unique_ptr<PBXProject> pbx_project = GetPBXProjectObject();
179   std::unique_ptr<PBXNativeTarget> pbx_native_target =
180       GetPBXNativeTargetObject(product_reference.get());
181   std::unique_ptr<PBXContainerItemProxy> pbx_container_item_proxy =
182       GetPBXContainerItemProxyObject(pbx_project.get(),
183                                      pbx_native_target.get());
184   std::unique_ptr<PBXTargetDependency> pbx_target_dependency =
185       GetPBXTargetDependencyObject(pbx_native_target.get(),
186                                    std::move(pbx_container_item_proxy));
187 }
188 
TEST(XcodeObject,InstantiateXCBuildConfiguration)189 TEST(XcodeObject, InstantiateXCBuildConfiguration) {
190   std::unique_ptr<XCBuildConfiguration> xc_build_configuration =
191       GetXCBuildConfigurationObject();
192 }
193 
TEST(XcodeObject,InstantiateXCConfigurationList)194 TEST(XcodeObject, InstantiateXCConfigurationList) {
195   std::unique_ptr<PBXFileReference> product_reference =
196       GetPBXFileReferenceObject();
197   std::unique_ptr<PBXNativeTarget> pbx_native_target =
198       GetPBXNativeTargetObject(product_reference.get());
199   std::unique_ptr<XCConfigurationList> xc_configuration_list =
200       GetXCConfigurationListObject(pbx_native_target.get());
201 }
202 
203 // Tests that the mapping between PBXObject and PBXObjectClass.
TEST(XcodeObject,PBXSourcesBuildPhaseObjectToClass)204 TEST(XcodeObject, PBXSourcesBuildPhaseObjectToClass) {
205   std::unique_ptr<PBXSourcesBuildPhase> pbx_sources_build_phase =
206       GetPBXSourcesBuildPhaseObject();
207   EXPECT_EQ(PBXSourcesBuildPhaseClass, pbx_sources_build_phase->Class());
208 }
209 
TEST(XcodeObject,PBXFrameworksBuildPhaseObjectToClass)210 TEST(XcodeObject, PBXFrameworksBuildPhaseObjectToClass) {
211   std::unique_ptr<PBXFrameworksBuildPhase> pbx_frameworks_build_phase =
212       GetPBXFrameworksBuildPhaseObject();
213   EXPECT_EQ(PBXFrameworksBuildPhaseClass, pbx_frameworks_build_phase->Class());
214 }
215 
TEST(XcodeObject,PBXShellScriptBuildPhaseObjectToClass)216 TEST(XcodeObject, PBXShellScriptBuildPhaseObjectToClass) {
217   std::unique_ptr<PBXShellScriptBuildPhase> pbx_shell_script_build_phase =
218       GetPBXShellScriptBuildPhaseObject();
219   EXPECT_EQ(PBXShellScriptBuildPhaseClass,
220             pbx_shell_script_build_phase->Class());
221 }
222 
TEST(XcodeObject,PBXGroupObjectToClass)223 TEST(XcodeObject, PBXGroupObjectToClass) {
224   std::unique_ptr<PBXGroup> pbx_group = GetPBXGroupObject();
225   EXPECT_EQ(PBXGroupClass, pbx_group->Class());
226 }
227 
TEST(XcodeObject,PBXProjectObjectToClass)228 TEST(XcodeObject, PBXProjectObjectToClass) {
229   std::unique_ptr<PBXProject> pbx_project = GetPBXProjectObject();
230   EXPECT_EQ(PBXProjectClass, pbx_project->Class());
231 }
232 
TEST(XcodeObject,PBXFileReferenceObjectToClass)233 TEST(XcodeObject, PBXFileReferenceObjectToClass) {
234   std::unique_ptr<PBXFileReference> pbx_file_reference =
235       GetPBXFileReferenceObject();
236   EXPECT_EQ(PBXFileReferenceClass, pbx_file_reference->Class());
237 }
238 
TEST(XcodeObject,PBXBuildFileObjectToClass)239 TEST(XcodeObject, PBXBuildFileObjectToClass) {
240   std::unique_ptr<PBXFileReference> pbx_file_reference =
241       GetPBXFileReferenceObject();
242   std::unique_ptr<PBXSourcesBuildPhase> pbx_sources_build_phase =
243       GetPBXSourcesBuildPhaseObject();
244   std::unique_ptr<PBXBuildFile> pbx_build_file = GetPBXBuildFileObject(
245       pbx_file_reference.get(), pbx_sources_build_phase.get());
246   EXPECT_EQ(PBXBuildFileClass, pbx_build_file->Class());
247 }
248 
TEST(XcodeObject,PBXAggregateTargetObjectToClass)249 TEST(XcodeObject, PBXAggregateTargetObjectToClass) {
250   std::unique_ptr<PBXAggregateTarget> pbx_aggregate_target =
251       GetPBXAggregateTargetObject();
252   EXPECT_EQ(PBXAggregateTargetClass, pbx_aggregate_target->Class());
253 }
254 
TEST(XcodeObject,PBXNativeTargetObjectToClass)255 TEST(XcodeObject, PBXNativeTargetObjectToClass) {
256   std::unique_ptr<PBXFileReference> product_reference =
257       GetPBXFileReferenceObject();
258   std::unique_ptr<PBXNativeTarget> pbx_native_target =
259       GetPBXNativeTargetObject(product_reference.get());
260   EXPECT_EQ(PBXNativeTargetClass, pbx_native_target->Class());
261 }
262 
TEST(XcodeObject,PBXContainerItemProxyObjectToClass)263 TEST(XcodeObject, PBXContainerItemProxyObjectToClass) {
264   std::unique_ptr<PBXFileReference> product_reference =
265       GetPBXFileReferenceObject();
266   std::unique_ptr<PBXNativeTarget> pbx_native_target =
267       GetPBXNativeTargetObject(product_reference.get());
268   std::unique_ptr<PBXProject> pbx_project = GetPBXProjectObject();
269   std::unique_ptr<PBXContainerItemProxy> pbx_container_item_proxy =
270       GetPBXContainerItemProxyObject(pbx_project.get(),
271                                      pbx_native_target.get());
272   EXPECT_EQ(PBXContainerItemProxyClass, pbx_container_item_proxy->Class());
273 }
274 
TEST(XcodeObject,PBXTargetDependencyObjectToClass)275 TEST(XcodeObject, PBXTargetDependencyObjectToClass) {
276   std::unique_ptr<PBXFileReference> product_reference =
277       GetPBXFileReferenceObject();
278   std::unique_ptr<PBXProject> pbx_project = GetPBXProjectObject();
279   std::unique_ptr<PBXNativeTarget> pbx_native_target =
280       GetPBXNativeTargetObject(product_reference.get());
281   std::unique_ptr<PBXContainerItemProxy> pbx_container_item_proxy =
282       GetPBXContainerItemProxyObject(pbx_project.get(),
283                                      pbx_native_target.get());
284   std::unique_ptr<PBXTargetDependency> pbx_target_dependency =
285       GetPBXTargetDependencyObject(pbx_native_target.get(),
286                                    std::move(pbx_container_item_proxy));
287   EXPECT_EQ(PBXTargetDependencyClass, pbx_target_dependency->Class());
288 }
289 
TEST(XcodeObject,XCBuildConfigurationObjectToClass)290 TEST(XcodeObject, XCBuildConfigurationObjectToClass) {
291   std::unique_ptr<XCBuildConfiguration> xc_build_configuration =
292       GetXCBuildConfigurationObject();
293   EXPECT_EQ(XCBuildConfigurationClass, xc_build_configuration->Class());
294 }
295 
TEST(XcodeObject,XCConfigurationListObjectToClass)296 TEST(XcodeObject, XCConfigurationListObjectToClass) {
297   std::unique_ptr<PBXFileReference> product_reference =
298       GetPBXFileReferenceObject();
299   std::unique_ptr<PBXNativeTarget> pbx_native_target =
300       GetPBXNativeTargetObject(product_reference.get());
301   std::unique_ptr<XCConfigurationList> xc_configuration_list =
302       GetXCConfigurationListObject(pbx_native_target.get());
303   EXPECT_EQ(XCConfigurationListClass, xc_configuration_list->Class());
304 }
305 
306 // Tests the mapping between PBXObjectClass and it's name as a string.
TEST(XcodeObject,ClassToString)307 TEST(XcodeObject, ClassToString) {
308   EXPECT_STREQ("PBXAggregateTarget", ToString(PBXAggregateTargetClass));
309   EXPECT_STREQ("PBXBuildFile", ToString(PBXBuildFileClass));
310   EXPECT_STREQ("PBXAggregateTarget", ToString(PBXAggregateTargetClass));
311   EXPECT_STREQ("PBXBuildFile", ToString(PBXBuildFileClass));
312   EXPECT_STREQ("PBXContainerItemProxy", ToString(PBXContainerItemProxyClass));
313   EXPECT_STREQ("PBXFileReference", ToString(PBXFileReferenceClass));
314   EXPECT_STREQ("PBXFrameworksBuildPhase",
315                ToString(PBXFrameworksBuildPhaseClass));
316   EXPECT_STREQ("PBXGroup", ToString(PBXGroupClass));
317   EXPECT_STREQ("PBXNativeTarget", ToString(PBXNativeTargetClass));
318   EXPECT_STREQ("PBXProject", ToString(PBXProjectClass));
319   EXPECT_STREQ("PBXSourcesBuildPhase", ToString(PBXSourcesBuildPhaseClass));
320   EXPECT_STREQ("PBXTargetDependency", ToString(PBXTargetDependencyClass));
321   EXPECT_STREQ("XCBuildConfiguration", ToString(XCBuildConfigurationClass));
322   EXPECT_STREQ("XCConfigurationList", ToString(XCConfigurationListClass));
323   EXPECT_STREQ("PBXShellScriptBuildPhase",
324                ToString(PBXShellScriptBuildPhaseClass));
325 }
326 
327 // Tests the mapping between PBXObject and it's name as a string.
TEST(XcodeObject,PBXSourcesBuildPhaseName)328 TEST(XcodeObject, PBXSourcesBuildPhaseName) {
329   std::unique_ptr<PBXSourcesBuildPhase> pbx_sources_build_phase =
330       GetPBXSourcesBuildPhaseObject();
331   EXPECT_EQ("Sources", pbx_sources_build_phase->Name());
332 }
333 
TEST(XcodeObject,PBXFrameworksBuildPhaseName)334 TEST(XcodeObject, PBXFrameworksBuildPhaseName) {
335   std::unique_ptr<PBXFrameworksBuildPhase> pbx_frameworks_build_phase =
336       GetPBXFrameworksBuildPhaseObject();
337   EXPECT_EQ("Frameworks", pbx_frameworks_build_phase->Name());
338 }
339 
TEST(XcodeObject,PBXShellScriptBuildPhaseName)340 TEST(XcodeObject, PBXShellScriptBuildPhaseName) {
341   std::unique_ptr<PBXShellScriptBuildPhase> pbx_shell_script_build_phase =
342       GetPBXShellScriptBuildPhaseObject();
343   EXPECT_EQ("Action \"Compile and copy name via ninja\"",
344             pbx_shell_script_build_phase->Name());
345 }
346 
TEST(XcodeObject,PBXGroupName)347 TEST(XcodeObject, PBXGroupName) {
348   PBXGroup pbx_group_with_name(std::string(), "name");
349   EXPECT_EQ("name", pbx_group_with_name.Name());
350 
351   PBXGroup pbx_group_with_path("path", std::string());
352   EXPECT_EQ("path", pbx_group_with_path.Name());
353 
354   PBXGroup pbx_group_empty{std::string(), std::string()};
355   EXPECT_EQ(std::string(), pbx_group_empty.Name());
356 }
357 
TEST(XcodeObject,PBXProjectName)358 TEST(XcodeObject, PBXProjectName) {
359   std::unique_ptr<PBXProject> pbx_project = GetPBXProjectObject();
360   EXPECT_EQ("project", pbx_project->Name());
361 }
362 
TEST(XcodeObject,PBXFileReferenceName)363 TEST(XcodeObject, PBXFileReferenceName) {
364   std::unique_ptr<PBXFileReference> pbx_file_reference =
365       GetPBXFileReferenceObject();
366   EXPECT_EQ("product.app", pbx_file_reference->Name());
367 }
368 
TEST(XcodeObject,PBXBuildFileName)369 TEST(XcodeObject, PBXBuildFileName) {
370   std::unique_ptr<PBXFileReference> pbx_file_reference =
371       GetPBXFileReferenceObject();
372   std::unique_ptr<PBXSourcesBuildPhase> pbx_sources_build_phase =
373       GetPBXSourcesBuildPhaseObject();
374   std::unique_ptr<PBXBuildFile> pbx_build_file = GetPBXBuildFileObject(
375       pbx_file_reference.get(), pbx_sources_build_phase.get());
376   EXPECT_EQ("product.app in Sources", pbx_build_file->Name());
377 }
378 
TEST(XcodeObject,PBXAggregateTargetName)379 TEST(XcodeObject, PBXAggregateTargetName) {
380   std::unique_ptr<PBXAggregateTarget> pbx_aggregate_target =
381       GetPBXAggregateTargetObject();
382   EXPECT_EQ("target_name", pbx_aggregate_target->Name());
383 }
384 
TEST(XcodeObject,PBXNativeTargetName)385 TEST(XcodeObject, PBXNativeTargetName) {
386   std::unique_ptr<PBXFileReference> product_reference =
387       GetPBXFileReferenceObject();
388   std::unique_ptr<PBXNativeTarget> pbx_native_target =
389       GetPBXNativeTargetObject(product_reference.get());
390   EXPECT_EQ("target_name", pbx_native_target->Name());
391 }
392 
TEST(XcodeObject,PBXContainerItemProxyName)393 TEST(XcodeObject, PBXContainerItemProxyName) {
394   std::unique_ptr<PBXFileReference> product_reference =
395       GetPBXFileReferenceObject();
396   std::unique_ptr<PBXNativeTarget> pbx_native_target =
397       GetPBXNativeTargetObject(product_reference.get());
398   std::unique_ptr<PBXProject> pbx_project = GetPBXProjectObject();
399   std::unique_ptr<PBXContainerItemProxy> pbx_container_item_proxy =
400       GetPBXContainerItemProxyObject(pbx_project.get(),
401                                      pbx_native_target.get());
402   EXPECT_EQ("PBXContainerItemProxy", pbx_container_item_proxy->Name());
403 }
404 
TEST(XcodeObject,PBXTargetDependencyName)405 TEST(XcodeObject, PBXTargetDependencyName) {
406   std::unique_ptr<PBXFileReference> product_reference =
407       GetPBXFileReferenceObject();
408   std::unique_ptr<PBXProject> pbx_project = GetPBXProjectObject();
409   std::unique_ptr<PBXNativeTarget> pbx_native_target =
410       GetPBXNativeTargetObject(product_reference.get());
411   std::unique_ptr<PBXContainerItemProxy> pbx_container_item_proxy =
412       GetPBXContainerItemProxyObject(pbx_project.get(),
413                                      pbx_native_target.get());
414   std::unique_ptr<PBXTargetDependency> pbx_target_dependency =
415       GetPBXTargetDependencyObject(pbx_native_target.get(),
416                                    std::move(pbx_container_item_proxy));
417   EXPECT_EQ("PBXTargetDependency", pbx_target_dependency->Name());
418 }
419 
TEST(XcodeObject,XCBuildConfigurationName)420 TEST(XcodeObject, XCBuildConfigurationName) {
421   std::unique_ptr<XCBuildConfiguration> xc_build_configuration =
422       GetXCBuildConfigurationObject();
423   EXPECT_EQ("config_name", xc_build_configuration->Name());
424 }
425 
TEST(XcodeObject,XCConfigurationListName)426 TEST(XcodeObject, XCConfigurationListName) {
427   std::unique_ptr<PBXFileReference> product_reference =
428       GetPBXFileReferenceObject();
429   std::unique_ptr<PBXNativeTarget> pbx_native_target =
430       GetPBXNativeTargetObject(product_reference.get());
431   std::unique_ptr<XCConfigurationList> xc_configuration_list =
432       GetXCConfigurationListObject(pbx_native_target.get());
433   EXPECT_EQ("Build configuration list for PBXNativeTarget \"target_name\"",
434             xc_configuration_list->Name());
435 }
436