private static void AssertEqualRelativePaths( BuildXLContext context, string objPath, Remapper remapper, RelativePath expectedPath, RelativePath actualPath) { if (remapper?.PathAtomStringRemapper != null) { var expectedAtoms = expectedPath.GetAtoms(); var actualAtoms = actualPath.GetAtoms(); XAssert.AreEqual( expectedAtoms.Length, actualAtoms.Length, $"{nameof(AbsolutePath)} values don't match for objPath: {objPath}"); for (int i = 0; i < expectedAtoms.Length; ++i) { AssertEqualPathAtoms(context, objPath, remapper, expectedAtoms[i], actualAtoms[i]); } } else { XAssert.AreEqual(expectedPath, actualPath, $"{nameof(RelativePath)} values don't match for objPath: {objPath}"); } }
/// <inheridoc/> public override string ToString() { if (!IsDefined) { return("undefined"); } switch (Type) { case PrimitiveValueType.String: return(I($"\"{m_string}\"")); case PrimitiveValueType.Number: return(m_number.ToString(CultureInfo.InvariantCulture)); case PrimitiveValueType.Path: return("<" + nameof(AbsolutePath) + ":" + m_path.Value.Value + ">"); case PrimitiveValueType.RelativePath: return("<" + nameof(RelativePath) + ":" + string.Join(",", m_relativePath.GetAtoms().Select(a => a.StringId.Value)) + ">"); case PrimitiveValueType.PathAtom: return("<" + nameof(PathAtom) + ":" + m_pathAtom.StringId.Value + ">"); } return(string.Empty); }
/// <nodoc /> public RelativePath Remap(RelativePath relativePath) { if (m_oldPathTable == null || !relativePath.IsValid) { return(relativePath); } return(RelativePath.Create(relativePath.GetAtoms().Select(Remap).ToArray())); }
public static void Add(this PipDataBuilder @this, string prefix, RelativePath value) { var escaping = PipDataFragmentEscaping.CRuntimeArgumentRules; var separator = System.IO.Path.DirectorySeparatorChar.ToString(); using (@this.StartFragment(escaping, separator)) { if (!string.IsNullOrEmpty(prefix)) { @this.Add(prefix); } foreach (var atom in value.GetAtoms()) { @this.Add(atom); } } }