Example #1
0
        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);
            }
        }
Example #3
0
        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);
            }
        }
Example #4
0
        /// <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);
        }