internal static string ValueToString(this SingleValue value, params object[] args) { if (value == null) { return("<null>"); } StringBuilder sb = new (); sb.Append(value.GetType().Name); sb.Append("("); if (args != null) { for (int i = 0; i < args.Length; i++) { if (i > 0) { sb.Append(","); } sb.Append(args[i] == null ? "<null>" : args[i].ToString()); } } sb.Append(")"); return(sb.ToString()); }
public void TestAssertInInnerTextForPlusSymbol() { this.MyTestInitialize(TestContext.GetCurrentMethod()); // same issue for SByteValue, Int16Value, IntegerValue, DecimalValue, SingleValue, DoubleValue { var v = new SByteValue(); v.InnerText = "+100"; sbyte v2 = v.Value; string t = v.InnerText; // Verify value and text Log.VerifyValue(v2, (sbyte)100, "{0}.Value", v.GetType().Name); Log.VerifyValue(t, "+100", "{0}.InnerText", v.GetType().Name); } { var v = new Int16Value(); v.InnerText = "+100"; Int16 v2 = v.Value; string t = v.InnerText; // Verify value and text Log.VerifyValue(v2, (Int16)100, "{0}.Value", v.GetType().Name); Log.VerifyValue(t, "+100", "{0}.InnerText", v.GetType().Name); } { var v = new Int32Value(); v.InnerText = "+100"; int v2 = v.Value; string t = v.InnerText; // Verify value and text Log.VerifyValue(v2, (int)100, "{0}.Value", v.GetType().Name); Log.VerifyValue(t, "+100", "{0}.InnerText", v.GetType().Name); } { var v = new IntegerValue(); v.InnerText = "+100"; long v2 = v.Value; string t = v.InnerText; // Verify value and text Log.VerifyValue(v2, (long)100, "{0}.Value", v.GetType().Name); Log.VerifyValue(t, "+100", "{0}.InnerText", v.GetType().Name); } { var v = new DecimalValue(); v.InnerText = "+100"; decimal v2 = v.Value; string t = v.InnerText; // Verify value and text Log.VerifyValue(v2, (decimal)100, "{0}.Value", v.GetType().Name); Log.VerifyValue(t, "+100", "{0}.InnerText", v.GetType().Name); } { var v = new SingleValue(); v.InnerText = "+100"; float v2 = v.Value; string t = v.InnerText; // Verify value and text Log.VerifyValue(v2, (float)100, "{0}.Value", v.GetType().Name); Log.VerifyValue(t, "+100", "{0}.InnerText", v.GetType().Name); } { var v = new DoubleValue(); v.InnerText = "+100"; double v2 = v.Value; string t = v.InnerText; // Verify value and text Log.VerifyValue(v2, (double)100, "{0}.Value", v.GetType().Name); Log.VerifyValue(t, "+100", "{0}.InnerText", v.GetType().Name); } }
public void TestAssertInInnerTextForPlusSymbol() { // same issue for SByteValue, Int16Value, IntegerValue, DecimalValue, SingleValue, DoubleValue { var v = new SByteValue(); v.InnerText = "+100"; sbyte v2 = v.Value; string t = v.InnerText; // Verify value and text Log.VerifyValue(v2, (sbyte)100, "{0}.Value", v.GetType().Name); Log.VerifyValue(t, "+100", "{0}.InnerText", v.GetType().Name); } { var v = new Int16Value(); v.InnerText = "+100"; short v2 = v.Value; string t = v.InnerText; // Verify value and text Log.VerifyValue(v2, (short)100, "{0}.Value", v.GetType().Name); Log.VerifyValue(t, "+100", "{0}.InnerText", v.GetType().Name); } { var v = new Int32Value(); v.InnerText = "+100"; int v2 = v.Value; string t = v.InnerText; // Verify value and text Log.VerifyValue(v2, 100, "{0}.Value", v.GetType().Name); Log.VerifyValue(t, "+100", "{0}.InnerText", v.GetType().Name); } { var v = new IntegerValue(); v.InnerText = "+100"; long v2 = v.Value; string t = v.InnerText; // Verify value and text Log.VerifyValue(v2, 100L, "{0}.Value", v.GetType().Name); Log.VerifyValue(t, "+100", "{0}.InnerText", v.GetType().Name); } { var v = new DecimalValue(); v.InnerText = "+100"; decimal v2 = v.Value; string t = v.InnerText; // Verify value and text Log.VerifyValue(v2, 100M, "{0}.Value", v.GetType().Name); Log.VerifyValue(t, "+100", "{0}.InnerText", v.GetType().Name); } { var v = new SingleValue(); v.InnerText = "+100"; float v2 = v.Value; string t = v.InnerText; // Verify value and text Log.VerifyValue(v2, 100F, "{0}.Value", v.GetType().Name); Log.VerifyValue(t, "+100", "{0}.InnerText", v.GetType().Name); } { var v = new DoubleValue(); v.InnerText = "+100"; double v2 = v.Value; string t = v.InnerText; // Verify value and text Log.VerifyValue(v2, 100D, "{0}.Value", v.GetType().Name); Log.VerifyValue(t, "+100", "{0}.InnerText", v.GetType().Name); } }
/// <summary> /// Returns true if a ValueNode graph contains a cycle /// </summary> /// <param name="node">Node to evaluate</param> /// <param name="seenNodes">Set of nodes previously seen on the current arc. Callers may pass a non-empty set /// to test whether adding that set to this node would create a cycle. Contents will be modified by the walk /// and should not be used by the caller after returning</param> /// <param name="allNodesSeen">Optional. The set of all nodes encountered during a walk after DetectCycle returns</param> /// <returns></returns> public static bool DetectCycle(this SingleValue node, HashSet <SingleValue> seenNodes, HashSet <SingleValue>?allNodesSeen) { if (node == null) { return(false); } if (seenNodes.Contains(node)) { return(true); } seenNodes.Add(node); if (allNodesSeen != null) { allNodesSeen.Add(node); } bool foundCycle = false; switch (node) { // // Leaf nodes // case UnknownValue: case NullValue: case SystemTypeValue: case RuntimeTypeHandleValue: case KnownStringValue: case ConstIntValue: case MethodParameterValue: case MethodThisParameterValue: case MethodReturnValue: case GenericParameterValue: case RuntimeTypeHandleForGenericParameterValue: case SystemReflectionMethodBaseValue: case RuntimeMethodHandleValue: case FieldValue: break; // // Nodes with children // case ArrayValue: ArrayValue av = (ArrayValue)node; foundCycle = av.Size.DetectCycle(seenNodes, allNodesSeen); foreach (ValueBasicBlockPair pair in av.IndexValues.Values) { foreach (var v in pair.Value) { foundCycle |= v.DetectCycle(seenNodes, allNodesSeen); } } break; case RuntimeTypeHandleForNullableValueWithDynamicallyAccessedMembers value: foundCycle = value.UnderlyingTypeValue.DetectCycle(seenNodes, allNodesSeen); break; case NullableValueWithDynamicallyAccessedMembers value: foundCycle = value.UnderlyingTypeValue.DetectCycle(seenNodes, allNodesSeen); break; default: throw new Exception(String.Format("Unknown node type: {0}", node.GetType().Name)); } seenNodes.Remove(node); return(foundCycle); }