public void FindAllRelationships1() { NativeBuiltinType ns = new NativeBuiltinType(BuiltinType.NativeByte); NativeSymbolIterator it = new NativeSymbolIterator(); List <NativeSymbolRelationship> list = it.FindAllNativeSymbolRelationships(ns); Assert.Equal(1, list.Count); EnsureIsSymbol(ns, list); }
public void FindAllNativeSymbols1() { NativeBuiltinType child = new NativeBuiltinType(BuiltinType.NativeByte); NativePointer par = new NativePointer(child); NativeSymbolIterator it = new NativeSymbolIterator(); List <NativeSymbol> list = it.FindAllNativeSymbols(par); Assert.True(list.Contains(child)); Assert.True(list.Contains(par)); }
public void FindAllRelationships2() { NativeBuiltinType child = new NativeBuiltinType(BuiltinType.NativeByte); NativePointer par = new NativePointer(child); NativeSymbolIterator it = new NativeSymbolIterator(); List <NativeSymbolRelationship> list = it.FindAllNativeSymbolRelationships(par); Assert.Equal(2, list.Count); EnsureIsSymbol(par, list); EnsureIsSymbol(child, list); EnsureIsParent(par, list); }
public void FindAllRelationships3() { NativePointer ptr1 = new NativePointer(); NativePointer ptr2 = new NativePointer(ptr1); ptr1.RealType = ptr2; NativeSymbolIterator it = new NativeSymbolIterator(); List <NativeSymbolRelationship> list = it.FindAllNativeSymbolRelationships(ptr1); EnsureIsSymbol(ptr1, list); EnsureIsSymbol(ptr2, list); }
private bool EqualsRecursive(NativeType left, NativeType right) { // Quick sanity check if (!EqualsTopLevel(left, right)) { return(false); } NativeSymbolIterator it = new NativeSymbolIterator(); Dictionary <string, NativeDefinedType> leftMap = new Dictionary <string, NativeDefinedType>(); Dictionary <string, NativeDefinedType> rightMap = new Dictionary <string, NativeDefinedType>(); foreach (NativeDefinedType nt in it.FindAllReachableDefinedTypes(left)) { if (!leftMap.ContainsKey(nt.Name)) { leftMap.Add(nt.Name, nt); } } foreach (NativeDefinedType nt in it.FindAllReachableDefinedTypes(right)) { if (!rightMap.ContainsKey(nt.Name)) { rightMap.Add(nt.Name, nt); } } if (leftMap.Count != rightMap.Count) { return(false); } foreach (NativeDefinedType leftDefined in leftMap.Values) { NativeDefinedType rightDefined = null; if (!rightMap.TryGetValue(leftDefined.Name, out rightDefined) || !EqualsTopLevel(leftDefined, rightDefined)) { return(false); } } return(true); }