コード例 #1
0
        public void SimpleComplement()
        {
            var fisA = new List <FileInfo>
            {
                new FileInfo("z:\\c.txt"),
            };

            var fisB = new List <FileInfo>
            {
                new FileInfo("z:\\a.txt"),
                new FileInfo("z:\\b.txt"),
                new FileInfo("z:\\c.txt")
            };
            var fisC = File.RelativeComplement(fisA, fisB);

            Assert.AreEqual(2, fisC.Count);
            Assert.AreEqual(1, fisC.Count(f => f.FullName == "z:\\a.txt"));
            Assert.AreEqual(1, fisC.Count(f => f.FullName == "z:\\b.txt"));

            Assert.AreEqual(1, fisA.Count);
            Assert.AreEqual(1, fisA.Count(f => f.FullName == "z:\\c.txt"));

            Assert.AreEqual(3, fisB.Count);
            Assert.AreEqual(1, fisB.Count(f => f.FullName == "z:\\a.txt"));
            Assert.AreEqual(1, fisB.Count(f => f.FullName == "z:\\b.txt"));
            Assert.AreEqual(1, fisB.Count(f => f.FullName == "z:\\c.txt"));
        }
コード例 #2
0
 public void IsChildOfMultipleParentsWithNullItemInList()
 {
     Assert.Throws <ArgumentNullException>(() =>
                                           File.IsSubDirectory(new List <string> {
         "d:\\", null
     }, "c:\\"));
 }
コード例 #3
0
        public void SimpleIntersectionWithDuplicates()
        {
            var fisA = new List <FileInfo>
            {
                new FileInfo("z:\\a.txt"),
                new FileInfo("z:\\b.txt"),
                new FileInfo("z:\\b.txt")
            };
            var fisB = new List <FileInfo>
            {
                new FileInfo("z:\\b.txt"),
                new FileInfo("z:\\b.txt"),
                new FileInfo("z:\\c.txt")
            };

            var fisI = File.Intersection(fisA, fisB);

            Assert.AreEqual(1, fisI.Count);
            Assert.IsTrue(fisI.Any(f => f.FullName == "z:\\b.txt"));

            // nothing has changed
            Assert.AreEqual(3, fisA.Count);
            Assert.IsTrue(fisA.Any(f => f.FullName == "z:\\a.txt"));
            Assert.AreEqual(2, fisA.Count(f => f.FullName == "z:\\b.txt"));

            Assert.AreEqual(3, fisB.Count);
            Assert.IsTrue(fisB.Any(f => f.FullName == "z:\\b.txt"));
            Assert.AreEqual(2, fisB.Count(f => f.FullName == "z:\\b.txt"));
        }
コード例 #4
0
        public void LargeRelativeComplementWithOneMatch()
        {
            const int count = 10000;
            var       fisA  = new List <FileInfo>(count);

            for (var i = 0; i < count; ++i)
            {
                fisA.Add(new FileInfo($"c:\\{Guid.NewGuid()}.txt"));
            }

            // B has everything in A and one extra
            var extra = new FileInfo($"c:\\{Guid.NewGuid()}.txt");
            var fisB  = new List <FileInfo>(fisA)
            {
                extra
            };

            //
            var fisC = File.RelativeComplement(fisA, fisB);

            // Return the list of elements that are in B but not in A
            // in other words ... just 'extra'
            Assert.AreEqual(1, fisC.Count);
            Assert.IsTrue(File.Equals(fisC[0], extra));
        }
コード例 #5
0
        public void IntersectionBothNull()
        {
            var fisI = File.Intersection(null, null);

            Assert.IsInstanceOf <List <FileInfo> >(fisI);
            Assert.AreEqual(0, fisI.Count);
        }
コード例 #6
0
        public void NameCannExactMatchPatternDoubleWildcard()
        {
            var name = $"{Guid.NewGuid().ToString()}.{Guid.NewGuid().ToString()}";
            var f    = new FileInfo($"c:\\directory\\{name}");

            Assert.IsTrue(File.NameMatch(f, "*.*"));
        }
コード例 #7
0
        public void UnionBothNull()
        {
            var fisU = File.Union(null, null);

            Assert.IsInstanceOf <List <FileInfo> >(fisU);
            Assert.AreEqual(0, fisU.Count);
        }
コード例 #8
0
        public void RemoveDuplicateUnion()
        {
            var fisA = new List <FileInfo>
            {
                new FileInfo("z:\\a.txt")
            };
            var fisB = new List <FileInfo>
            {
                new FileInfo("z:\\a.txt"),
                new FileInfo("z:\\b.txt")
            };

            var fisU = File.Union(fisA, fisB);

            Assert.AreEqual(2, fisU.Count);
            Assert.IsTrue(fisU.Any(f => f.FullName == "z:\\a.txt"));
            Assert.IsTrue(fisU.Any(f => f.FullName == "z:\\b.txt"));

            // nothing has changed
            Assert.AreEqual(1, fisA.Count);
            Assert.IsTrue(fisA.Any(f => f.FullName == "z:\\a.txt"));

            Assert.AreEqual(2, fisB.Count);
            Assert.IsTrue(fisB.Any(f => f.FullName == "z:\\a.txt"));
            Assert.IsTrue(fisB.Any(f => f.FullName == "z:\\b.txt"));
        }
コード例 #9
0
        public void BothNullWillReturnAnEmptyList()
        {
            //
            var fi = File.RelativeComplement(null, null);

            Assert.IsInstanceOf <List <FileInfo> >(fi);
            Assert.AreEqual(0, fi.Count);
        }
コード例 #10
0
        public void NotEqualDifferentLenght()
        {
            const string name1 = "FiLeNamEE.tXT";
            const string name2 = "FiLeNamE.tXT";
            var          f     = new FileInfo($"c:\\directory\\{name1}");

            Assert.IsFalse(File.NameMatch(f, name2));
        }
コード例 #11
0
        public void ExactMatchIgnoreCase()
        {
            const string name = "FiLeNamE.tXT";
            var          f    = new FileInfo($"c:\\directory\\{name}");

            Assert.IsTrue(File.NameMatch(f, name));
            Assert.IsTrue(File.NameMatch(f, name.ToLower()));
            Assert.IsTrue(File.NameMatch(f, name.ToUpper()));
        }
コード例 #12
0
        public void EqualWithQuestionMark()
        {
            const string name1 = "FiLeNamEE.tXT";
            const string name2 = "FiLeNamE?.tXT";
            var          f     = new FileInfo($"c:\\directory\\{name1}");

            Assert.IsTrue(File.NameMatch(f, name2));
            Assert.IsTrue(File.NameMatch(f, name2.ToLower()));
            Assert.IsTrue(File.NameMatch(f, name2.ToUpper()));
        }
コード例 #13
0
 public void IsChildOfMultipleParents()
 {
     Assert.IsTrue(
         File.IsSubDirectory(new List <string>
     {
         "c:\\A\\",
         "c:\\A\\B\\C\\"
     }, "c:\\A\\B\\")
         );
 }
コード例 #14
0
 public void ChildCannotBeNull()
 {
     Assert.Throws <ArgumentNullException>(() =>
                                           File.IsSubDirectory(new List <string>
     {
         "D:\\A\\B\\",
         "c:\\A\\B\\C\\"
     },
                                                               null)
                                           );
 }
コード例 #15
0
        public void ComplementWithNullB()
        {
            var fis = new List <FileInfo>
            {
                new FileInfo("z:\\a.txt"),
                new FileInfo("z:\\b.txt"),
            };
            var fisC = File.RelativeComplement(fis, null);

            Assert.AreEqual(0, fisC.Count);
            Assert.IsInstanceOf <List <FileInfo> >(fisC);
        }
コード例 #16
0
        public void ComplementWithNullA()
        {
            var fis = new List <FileInfo>
            {
                new FileInfo("z:\\a.txt"),
                new FileInfo("z:\\b.txt"),
            };
            var fisC = File.RelativeComplement(null, fis);

            Assert.AreEqual(2, fisC.Count);
            Assert.AreEqual(1, fisC.Count(f => f.FullName == "z:\\a.txt"));
            Assert.AreEqual(1, fisC.Count(f => f.FullName == "z:\\b.txt"));
        }
コード例 #17
0
        public void LargeRelativeComplementWithNoMatch()
        {
            const int count = 10000;
            var       fisA  = new List <FileInfo>(count);

            for (var i = 0; i < count; ++i)
            {
                fisA.Add(new FileInfo($"c:\\{Guid.NewGuid()}.txt"));
            }

            // B has everything in A
            var fisB = new List <FileInfo>(fisA);
            var fisC = File.RelativeComplement(fisA, fisB);

            // everything in A is in B ... so nothing is in C
            Assert.AreEqual(0, fisC.Count);
        }
コード例 #18
0
        public void IntersectionSecondListIsNullList()
        {
            var fis = new List <FileInfo>
            {
                new FileInfo("z:\\a.txt"),
                new FileInfo("z:\\b.txt")
            };

            var fisI = File.Intersection(fis, null);

            Assert.IsInstanceOf <List <FileInfo> >(fisI);
            Assert.AreEqual(0, fisI.Count);

            Assert.AreEqual(2, fis.Count);
            Assert.IsTrue(fis.Any(f => f.FullName == "z:\\a.txt"));
            Assert.IsTrue(fis.Any(f => f.FullName == "z:\\b.txt"));
        }
コード例 #19
0
        public void UnionSecondListIsNullList()
        {
            var fis = new List <FileInfo>
            {
                new FileInfo("z:\\a.txt"),
                new FileInfo("z:\\b.txt")
            };

            var fisU = File.Union(fis, null);

            Assert.AreEqual(2, fisU.Count);
            Assert.IsTrue(fisU.Any(f => f.FullName == "z:\\a.txt"));
            Assert.IsTrue(fisU.Any(f => f.FullName == "z:\\b.txt"));

            Assert.AreEqual(2, fis.Count);
            Assert.IsTrue(fis.Any(f => f.FullName == "z:\\a.txt"));
            Assert.IsTrue(fis.Any(f => f.FullName == "z:\\b.txt"));
        }
コード例 #20
0
        public void RemoveDuplicates()
        {
            var fis = new List <FileInfo>
            {
                new FileInfo("z:\\a.txt"),
                new FileInfo("z:\\a.txt"),
                new FileInfo("z:\\a.txt"),
                new FileInfo("z:\\a.txt")
            };

            var fisD = File.Distinct(fis);

            Assert.AreEqual(1, fisD.Count);
            Assert.IsTrue(fisD.Any(f => f.FullName == "z:\\a.txt"));

            // nothing has changed
            Assert.AreEqual(4, fis.Count(f => f.FullName == "z:\\a.txt"));
        }
コード例 #21
0
        public void LargeRelativeComplemenAllMatch()
        {
            const int count = 10000;
            // A has nothing in it at all.
            var fisA = new List <FileInfo>();

            var fisB = new List <FileInfo>(count);

            for (var i = 0; i < count; ++i)
            {
                fisB.Add(new FileInfo($"c:\\{Guid.NewGuid()}.txt"));
            }

            // Return the list of elements that are in B but not in A
            // in other words ... everything.
            var fisC = File.RelativeComplement(fisA, fisB);

            // everything in A is in B ... so nothing is in C
            Assert.AreEqual(count, fisC.Count);
        }
コード例 #22
0
        public void UnionSecondListIsEmpty()
        {
            var fisA = new List <FileInfo>
            {
                new FileInfo("z:\\a.txt"),
                new FileInfo("z:\\b.txt")
            };
            var fisB = new List <FileInfo>();

            var fisU = File.Union(fisA, fisB);

            Assert.AreEqual(2, fisU.Count);
            Assert.IsTrue(fisU.Any(f => f.FullName == "z:\\a.txt"));
            Assert.IsTrue(fisU.Any(f => f.FullName == "z:\\b.txt"));

            // nothing has changed
            Assert.AreEqual(2, fisA.Count);
            Assert.IsTrue(fisA.Any(f => f.FullName == "z:\\a.txt"));
            Assert.IsTrue(fisA.Any(f => f.FullName == "z:\\b.txt"));

            Assert.AreEqual(0, fisB.Count);
        }
コード例 #23
0
        public void ExactIntersection()
        {
            var fisA = new List <FileInfo>
            {
                new FileInfo("z:\\a.txt")
            };
            var fisB = new List <FileInfo>
            {
                new FileInfo("z:\\a.txt")
            };

            var fisI = File.Intersection(fisA, fisB);

            Assert.AreEqual(1, fisI.Count);
            Assert.IsTrue(fisI.Any(f => f.FullName == "z:\\a.txt"));

            // nothing has changed
            Assert.AreEqual(1, fisA.Count);
            Assert.IsTrue(fisA.Any(f => f.FullName == "z:\\a.txt"));

            Assert.AreEqual(1, fisB.Count);
            Assert.IsTrue(fisB.Any(f => f.FullName == "z:\\a.txt"));
        }
コード例 #24
0
        public void NoIntersectionAtAll()
        {
            var fisA = new List <FileInfo>
            {
                new FileInfo("z:\\a.txt")
            };
            var fisB = new List <FileInfo>
            {
                new FileInfo("z:\\b.txt")
            };

            var fisI = File.Intersection(fisA, fisB);

            Assert.AreEqual(0, fisI.Count);
            Assert.IsInstanceOf <List <FileInfo> >(fisI);

            // nothing has changed
            Assert.AreEqual(1, fisA.Count);
            Assert.IsTrue(fisA.Any(f => f.FullName == "z:\\a.txt"));

            Assert.AreEqual(1, fisB.Count);
            Assert.IsTrue(fisB.Any(f => f.FullName == "z:\\b.txt"));
        }
コード例 #25
0
        public void SpacesAreNotIgnoredWithQuestionMark()
        {
            var f = new FileInfo("c:\\directory\\blah blah.txt");

            Assert.IsTrue(File.NameMatch(f, "blah?blah.txt"));
        }
コード例 #26
0
        public void NameCannExactMatchPatternSimple()
        {
            var f = new FileInfo($"c:\\{Guid.NewGuid().ToString()}.{Guid.NewGuid().ToString()}");

            Assert.IsTrue(File.NameMatch(f, "*"));
        }
コード例 #27
0
 public void NameCannotBeNull()
 {
     Assert.Throws <ArgumentNullException>(() => File.NameMatch(new FileInfo("c:\\text.txt"), null));
 }
コード例 #28
0
 public void FileCannotBeNull()
 {
     Assert.Throws <ArgumentNullException>(() => File.NameMatch(null, "*.*"));
 }
コード例 #29
0
        public void MultipleWildCard()
        {
            var f = new FileInfo("c:\\directory\\blahAblahBblah.txt");

            Assert.IsTrue(File.NameMatch(f, "*A*B*.txt"));
        }
コード例 #30
0
        public void SpacesAreNotIgnoredWithWildcard()
        {
            var f = new FileInfo("c:\\directory\\blah blah.txt");

            Assert.IsTrue(File.NameMatch(f, "* blah.txt"));
        }