public void StringUtility_CompareNoCase_2()
 {
     Assert.IsTrue(StringUtility.CompareNoCase(string.Empty, string.Empty) == 0);
     Assert.IsTrue(StringUtility.CompareNoCase(" ", " ") == 0);
     Assert.IsTrue(StringUtility.CompareNoCase("Hello", "HELLO") == 0);
     Assert.IsFalse(StringUtility.CompareNoCase("Hello", "HELLO2") == 0);
 }
 public void StringUtility_CompareNoCase_1()
 {
     Assert.IsTrue(StringUtility.CompareNoCase('A', 'a') == 0);
     Assert.IsTrue(StringUtility.CompareNoCase('A', 'A') == 0);
     Assert.IsTrue(StringUtility.CompareNoCase(' ', ' ') == 0);
     Assert.IsFalse(StringUtility.CompareNoCase(' ', 'A') == 0);
 }
        private static bool _CompareDatabases
        (
            [CanBeNull] string first,
            [CanBeNull] string second
        )
        {
            if (string.IsNullOrEmpty(first) && string.IsNullOrEmpty(second))
            {
                return(true);
            }

            return(StringUtility.CompareNoCase(first, second) == 0);
        }
Beispiel #4
0
        public static string GetRelativePath
        (
            [NotNull] string absolutePath,
            [NotNull] string baseDirectory
        )
        {
            Code.NotNullNorEmpty(absolutePath, "absolutePath");
            Code.NotNullNorEmpty(baseDirectory, "baseDirectory");

            // absolutePath = Path.GetFullPath(absolutePath);
            // baseDirectory = Path.GetFullPath(baseDirectory);

#if PORTABLE
            string mainSeparator = "\\";
            string altSeparator  = "/";
#else
            string mainSeparator = char.ToString(Path.DirectorySeparatorChar);
            string altSeparator  = char.ToString(Path.AltDirectorySeparatorChar);
#endif

            string[] separators =
            {
                mainSeparator,
                altSeparator
            };

            string[] absoluteParts = StringUtility.SplitString
                                     (
                absolutePath,
                separators,
                StringSplitOptions.RemoveEmptyEntries
                                     );
            string[] baseParts = StringUtility.SplitString
                                 (
                baseDirectory,
                separators,
                StringSplitOptions.RemoveEmptyEntries
                                 );
            int length = Math.Min
                         (
                absoluteParts.Length,
                baseParts.Length
                         );

            int offset = 0;
            for (int i = 0; i < length; i++)
            {
                if (StringUtility.CompareNoCase
                    (
                        absoluteParts[i],
                        baseParts[i]
                    ))
                {
                    offset++;
                }
                else
                {
                    break;
                }
            }

            if (0 == offset)
            {
                if (!absolutePath.StartsWith(mainSeparator)) // Linux
                {
                    throw new ArgumentException
                          (
                              "Paths do not have a common base!"
                          );
                }
            }

            var relativePath = new StringBuilder();

            for (int i = 0; i < baseParts.Length - offset; i++)
            {
                relativePath.Append("..");
                relativePath.Append(mainSeparator);
            }

            for (int i = offset; i < absoluteParts.Length - 1; i++)
            {
                relativePath.Append(absoluteParts[i]);
                relativePath.Append(mainSeparator);
            }

            relativePath.Append(absoluteParts[absoluteParts.Length - 1]);

            return(relativePath.ToString());
        }