public static FileNode GetFileNode(DirNode dirNode, params string[] tokens) { DirNode currentDirNode = dirNode; for (int i = 0; i < tokens.Length; ++i) { if (i == tokens.Length - 1) { FileNode fileNode = currentDirNode.GetFileNode(tokens[i]); if (fileNode == null) { Test.Error("FileNode {0} doesn't exist.", tokens[i]); return(null); } return(fileNode); } else { currentDirNode = currentDirNode.GetDirNode(tokens[i]); if (currentDirNode == null) { Test.Error("DirNode {0} doesn't exist.", tokens[i]); return(null); } } } return(null); }
public static bool Equals(DirNode dirNodeA, DirNode dirNodeB) { // The same node if (dirNodeA == dirNodeB) { return(true); } // Empty node equals to null if ((dirNodeA == null || dirNodeA.IsEmpty) && (dirNodeB == null || dirNodeB.IsEmpty)) { return(true); } // Compare two nodes if (null != dirNodeA && null != dirNodeB) { if (dirNodeA.FileNodeCount != dirNodeB.FileNodeCount || dirNodeA.NonEmptyDirNodeCount != dirNodeB.NonEmptyDirNodeCount) { return(false); } foreach (FileNode fileNodeA in dirNodeA.FileNodes) { FileNode fileNodeB = dirNodeB.GetFileNode(fileNodeA.Name); if (!DMLibDataHelper.Equals(fileNodeA, fileNodeB)) { return(false); } } foreach (DirNode subDirNodeA in dirNodeA.DirNodes) { DirNode subDirNodeB = dirNodeB.GetDirNode(subDirNodeA.Name); if (!DMLibDataHelper.Equals(subDirNodeA, subDirNodeB)) { return(false); } } return(true); } return(false); }
private static void PrepareDirSourceData(long fileSizeInB) { foreach (DMLibTransferDirection direction in GetAllDirectoryValidDirections()) { string dirName = GetTransferDirName(direction); string fileName = dirName; string sourceDataInfoKey = GetSourceDataInfoKey(direction); DMLibDataInfo sourceDataInfo = GetSourceDataInfo(sourceDataInfoKey); DirNode subDirNode = new DirNode(dirName); DMLibDataHelper.AddOneFileInBytes(subDirNode, fileName, fileSizeInB); sourceDataInfo.RootNode.AddDirNode(subDirNode); directoryNodes.Add(dirName, subDirNode); expectedFileNodes.Add(fileName, subDirNode.GetFileNode(fileName)); } }
public static bool Equals(DirNode dirNodeA, DirNode dirNodeB) { // The same node if (dirNodeA == dirNodeB) { return(true); } // Empty node equals to null if ((dirNodeA == null || dirNodeA.IsEmpty) && (dirNodeB == null || dirNodeB.IsEmpty)) { return(true); } // Compare two nodes if (null != dirNodeA && null != dirNodeB) { if (dirNodeA.FileNodeCount != dirNodeB.FileNodeCount || dirNodeA.NonEmptyDirNodeCount != dirNodeB.NonEmptyDirNodeCount) { return(false); } if ((null != dirNodeA.Metadata) && (dirNodeA.Metadata.Count > 0)) { if (null == dirNodeB.Metadata) { return(false); } if (dirNodeA.Metadata.Count != dirNodeB.Metadata.Count) { return(false); } foreach (var keyValue in dirNodeA.Metadata) { if (!string.Equals(dirNodeB.Metadata[keyValue.Key], keyValue.Value)) { return(false); } } } else { if ((null != dirNodeB.Metadata) && (dirNodeB.Metadata.Count > 0)) { return(false); } } foreach (FileNode fileNodeA in dirNodeA.FileNodes) { FileNode fileNodeB = dirNodeB.GetFileNode(fileNodeA.Name); FileNode fileNodeAA = fileNodeA; if (null == fileNodeB) { fileNodeB = dirNodeB.GetFileNode(DMLibTestHelper.EscapeInvalidCharacters(fileNodeA.Name)); if (null != fileNodeB) { fileNodeAA = fileNodeA.Clone(DMLibTestHelper.EscapeInvalidCharacters(fileNodeA.Name)); } } if (!DMLibDataHelper.Equals(fileNodeAA, fileNodeB)) { return(false); } } foreach (DirNode subDirNodeA in dirNodeA.DirNodes) { Test.Info("Verifying subfolder: {0} ", subDirNodeA.Name); DirNode subDirNodeB = dirNodeB.GetDirNode(subDirNodeA.Name); if (null == subDirNodeB) { subDirNodeB = dirNodeB.GetDirNode(DMLibTestHelper.EscapeInvalidCharacters(subDirNodeA.Name)); } if (!DMLibDataHelper.Equals(subDirNodeA, subDirNodeB)) { return(false); } } return(true); } return(false); }