From 1aca9bf2b5b50f114b310dad374c82e6e61cef74 Mon Sep 17 00:00:00 2001 From: Lukacs Berki Date: Thu, 11 Feb 2016 14:28:51 +0000 Subject: Add a few extra tests for XcodeProvider. -- MOS_MIGRATED_REVID=114431043 --- .../build/lib/rules/objc/XcodeProviderTest.java | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'src/test/java/com/google/devtools/build/lib/rules/objc/XcodeProviderTest.java') diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/XcodeProviderTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/XcodeProviderTest.java index 551e35d4bb..e858598ccf 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/XcodeProviderTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/XcodeProviderTest.java @@ -16,8 +16,12 @@ package com.google.devtools.build.lib.rules.objc; import static com.google.common.truth.Truth.assertThat; import static com.google.devtools.build.lib.rules.objc.XcodeProvider.xcodeTargetName; +import static org.junit.Assert.fail; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.vfs.PathFragment; import org.junit.Test; import org.junit.runner.RunWith; @@ -25,6 +29,9 @@ import org.junit.runners.JUnit4; /** * Tests for XcodeProvider. + * + *

We test {@code rootEach} individually. Because it is used as test utility code, any wrong + * behavior may go undetected otherwise. */ @RunWith(JUnit4.class) public class XcodeProviderTest { @@ -39,4 +46,37 @@ public class XcodeProviderTest { assertThat(xcodeTargetName(Label.parseAbsolute("@repo_name//foo:bar"))) .isEqualTo("bar_external_repo_name_foo"); } + + private static Iterable fragments(String... paths) { + return Iterables.transform(ImmutableList.copyOf(paths), PathFragment.TO_PATH_FRAGMENT); + } + + @Test + public void testRootEach_nonEmptySequence() { + assertThat(XcodeProvider.rootEach("$(prefix)", fragments("a", "b/c"))) + .containsExactly("$(prefix)/a", "$(prefix)/b/c") + .inOrder(); + } + + @Test + public void testRootEach_emptyFragment() { + assertThat(XcodeProvider.rootEach("$(foo)", fragments("", "bar", "."))) + .containsExactly("$(foo)", "$(foo)/bar", "$(foo)") + .inOrder(); + } + + @Test + public void testRootEach_noElements() { + assertThat(XcodeProvider.rootEach("$(prefix)", fragments())) + .isEmpty(); + } + + @Test + public void testRootEach_errorForTrailingSlash() { + try { + XcodeProvider.rootEach("$(prefix)/", fragments("a")); + fail("should have thrown"); + } catch (IllegalArgumentException expected) { + } + } } -- cgit v1.2.3