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")); }
public void IsChildOfMultipleParentsWithNullItemInList() { Assert.Throws <ArgumentNullException>(() => File.IsSubDirectory(new List <string> { "d:\\", null }, "c:\\")); }
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")); }
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)); }
public void IntersectionBothNull() { var fisI = File.Intersection(null, null); Assert.IsInstanceOf <List <FileInfo> >(fisI); Assert.AreEqual(0, fisI.Count); }
public void NameCannExactMatchPatternDoubleWildcard() { var name = $"{Guid.NewGuid().ToString()}.{Guid.NewGuid().ToString()}"; var f = new FileInfo($"c:\\directory\\{name}"); Assert.IsTrue(File.NameMatch(f, "*.*")); }
public void UnionBothNull() { var fisU = File.Union(null, null); Assert.IsInstanceOf <List <FileInfo> >(fisU); Assert.AreEqual(0, fisU.Count); }
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")); }
public void BothNullWillReturnAnEmptyList() { // var fi = File.RelativeComplement(null, null); Assert.IsInstanceOf <List <FileInfo> >(fi); Assert.AreEqual(0, fi.Count); }
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)); }
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())); }
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())); }
public void IsChildOfMultipleParents() { Assert.IsTrue( File.IsSubDirectory(new List <string> { "c:\\A\\", "c:\\A\\B\\C\\" }, "c:\\A\\B\\") ); }
public void ChildCannotBeNull() { Assert.Throws <ArgumentNullException>(() => File.IsSubDirectory(new List <string> { "D:\\A\\B\\", "c:\\A\\B\\C\\" }, null) ); }
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); }
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")); }
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); }
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")); }
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")); }
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")); }
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); }
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); }
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")); }
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")); }
public void SpacesAreNotIgnoredWithQuestionMark() { var f = new FileInfo("c:\\directory\\blah blah.txt"); Assert.IsTrue(File.NameMatch(f, "blah?blah.txt")); }
public void NameCannExactMatchPatternSimple() { var f = new FileInfo($"c:\\{Guid.NewGuid().ToString()}.{Guid.NewGuid().ToString()}"); Assert.IsTrue(File.NameMatch(f, "*")); }
public void NameCannotBeNull() { Assert.Throws <ArgumentNullException>(() => File.NameMatch(new FileInfo("c:\\text.txt"), null)); }
public void FileCannotBeNull() { Assert.Throws <ArgumentNullException>(() => File.NameMatch(null, "*.*")); }
public void MultipleWildCard() { var f = new FileInfo("c:\\directory\\blahAblahBblah.txt"); Assert.IsTrue(File.NameMatch(f, "*A*B*.txt")); }
public void SpacesAreNotIgnoredWithWildcard() { var f = new FileInfo("c:\\directory\\blah blah.txt"); Assert.IsTrue(File.NameMatch(f, "* blah.txt")); }