public void CreateNumberEvaluationResult() {
            // Arrange
            var variable = new MockNodeVariable {
                Id = 20,
                Parent = null,
                StackFrame = null,
                Name = "v_number",
                TypeName = "number",
                Value = "55",
                Class = null,
                Text = null
            };
            var factory = new EvaluationResultFactory();

            // Act
            NodeEvaluationResult result = factory.Create(variable);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(variable.Name, result.Expression);
            Assert.IsNull(result.Frame);
            Assert.AreEqual(variable.Name, result.FullName);
            Assert.AreEqual(variable.Id, result.Handle);
            Assert.AreEqual(string.Format("0x{0:x}", int.Parse(variable.Value)), result.HexValue);
            Assert.AreEqual(variable.Value.Length, result.StringLength);
            Assert.AreEqual(variable.Value, result.StringValue);
            Assert.AreEqual(NodeExpressionType.None, result.Type);
            Assert.AreEqual(NodeVariableType.Number, result.TypeName);
        }
        public void CreateBooleanEvaluationResult() {
            // Arrange
            var variable = new MockNodeVariable {
                Id = 21,
                Parent = null,
                StackFrame = null,
                Name = "v_boolean",
                TypeName = "boolean",
                Value = "false",
                Class = null,
                Text = null
            };
            var factory = new EvaluationResultFactory();

            // Act
            NodeEvaluationResult result = factory.Create(variable);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(variable.Name, result.Expression);
            Assert.IsNull(result.Frame);
            Assert.AreEqual(variable.Name, result.FullName);
            Assert.AreEqual(variable.Id, result.Handle);
            Assert.IsNull(result.HexValue);
            Assert.AreEqual(variable.Value.Length, result.StringLength);
            Assert.AreEqual(variable.Value, result.StringValue);
            Assert.AreEqual(NodeExpressionType.Boolean, result.Type);
            Assert.AreEqual(NodeVariableType.Boolean, result.TypeName);
        }
        public void CreateEvaluationResultForPrototypeChild() {
            // Arrange
            const string parentName = "parent";
            var variable = new MockNodeVariable {
                Id = 19,
                Parent = new NodeEvaluationResult(
                    0,
                    null,
                    null,
                    "Object",
                    NodeVariableType.Prototype,
                    parentName + "." + NodeVariableType.Prototype,
                    NodeExpressionType.Expandable,
                    null),
                StackFrame = null,
                Name = "name",
                TypeName = "number",
                Value = "0",
                Class = "Number",
                Text = null
            };
            var factory = new EvaluationResultFactory();

            // Act
            NodeEvaluationResult result = factory.Create(variable);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(variable.Name, result.Expression);
            Assert.IsNull(result.Frame);
            Assert.AreEqual(string.Format(@"{0}.{1}", parentName, variable.Name), result.FullName);
            Assert.AreEqual(variable.Id, result.Handle);
            Assert.AreEqual(string.Format("0x{0:x}", int.Parse(variable.Value)), result.HexValue);
            Assert.AreEqual(variable.Value, result.StringValue);
            Assert.AreEqual(result.Type, NodeExpressionType.None);
            Assert.AreEqual(NodeVariableType.Number, result.TypeName);
        }
        public void CreateObjectElementWithInvalidIdentifierEvaluationResult() {
            // Arrange
            var variable = new MockNodeVariable {
                Id = 19,
                Parent = new NodeEvaluationResult(0, null, null, "Object", "v_object", "v_object", NodeExpressionType.Expandable, null),
                StackFrame = null,
                Name = "123name",
                TypeName = "number",
                Value = "0",
                Class = "Number",
                Text = null
            };
            var factory = new EvaluationResultFactory();

            // Act
            NodeEvaluationResult result = factory.Create(variable);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(variable.Name, result.Expression);
            Assert.IsNull(result.Frame);
            Assert.AreEqual(string.Format(@"{0}[""{1}""]", variable.Parent.Expression, variable.Name), result.FullName);
            Assert.AreEqual(variable.Id, result.Handle);
            Assert.AreEqual(string.Format("0x{0:x}", int.Parse(variable.Value)), result.HexValue);
            Assert.AreEqual(variable.Value, result.StringValue);
            Assert.AreEqual(result.Type, NodeExpressionType.None);
            Assert.AreEqual(NodeVariableType.Number, result.TypeName);
        }
        public void CreateUnknownEvaluationResultWithEmptyValue() {
            // Arrange
            var variable = new MockNodeVariable {
                Id = 26,
                Parent = null,
                StackFrame = null,
                Name = "v_unknown",
                TypeName = "unknown",
                Value = null,
                Class = null,
                Text = "Unknown"
            };
            var factory = new EvaluationResultFactory();

            // Act
            NodeEvaluationResult result = factory.Create(variable);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(variable.Name, result.Expression);
            Assert.IsNull(result.Frame);
            Assert.AreEqual(variable.Name, result.FullName);
            Assert.AreEqual(variable.Id, result.Handle);
            Assert.IsNull(result.HexValue);
            Assert.AreEqual(variable.Text, result.StringValue);
            Assert.AreEqual(NodeExpressionType.None, result.Type);
            Assert.AreEqual(NodeVariableType.Unknown, result.TypeName);
        }
        public void CreateErrorEvaluationResult() {
            // Arrange
            var variable = new MockNodeVariable {
                Id = 26,
                Parent = null,
                StackFrame = null,
                Name = "v_error",
                TypeName = "error",
                Value = "Error: dsfdsf",
                Class = null,
                Text = null
            };
            var factory = new EvaluationResultFactory();

            // Act
            NodeEvaluationResult result = factory.Create(variable);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(variable.Name, result.Expression);
            Assert.IsNull(result.Frame);
            Assert.AreEqual(variable.Name, result.FullName);
            Assert.AreEqual(variable.Id, result.Handle);
            Assert.IsNull(result.HexValue);
            Assert.AreEqual(variable.Value.Substring(7), result.StringValue);
            Assert.AreEqual(result.Type, NodeExpressionType.Expandable);
            Assert.AreEqual(NodeVariableType.Error, result.TypeName);
        }
        public void CreateArrayEvaluationResult() {
            // Arrange
            var variable = new MockNodeVariable {
                Id = 19,
                Parent = null,
                StackFrame = null,
                Name = "v_array",
                TypeName = "object",
                Value = null,
                Class = "Array",
                Text = null
            };
            var factory = new EvaluationResultFactory();

            // Act
            NodeEvaluationResult result = factory.Create(variable);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(variable.Name, result.Expression);
            Assert.IsNull(result.Frame);
            Assert.AreEqual(variable.Name, result.FullName);
            Assert.AreEqual(variable.Id, result.Handle);
            Assert.IsNull(result.HexValue);
            Assert.AreEqual(string.Format("{{{0}}}", variable.Class), result.StringValue);
            Assert.AreEqual(result.Type, NodeExpressionType.Expandable);
            Assert.AreEqual(NodeVariableType.Object, result.TypeName);
        }
        public void CreateFunctionWithTextEvaluationResult() {
            // Arrange
            var variable = new MockNodeVariable {
                Id = 23,
                Parent = null,
                StackFrame = null,
                Name = "v_function",
                TypeName = "function",
                Value = "55",
                Class = null,
                Text = "function(){...}"
            };
            var factory = new EvaluationResultFactory();

            // Act
            NodeEvaluationResult result = factory.Create(variable);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(variable.Name, result.Expression);
            Assert.IsNull(result.Frame);
            Assert.AreEqual(variable.Name, result.FullName);
            Assert.AreEqual(variable.Id, result.Handle);
            Assert.IsNull(result.HexValue);
            Assert.AreEqual(variable.Text, result.StringValue);
            Assert.AreEqual(NodeExpressionType.Function | NodeExpressionType.Expandable, result.Type);
            Assert.AreEqual(NodeVariableType.Function, result.TypeName);
        }