public void Replace_a_property_value_with_a_new_value() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books/0/author"); patchDocument.AddOperation(new ReplaceOperation() { Path = pointer, Value = new JValue("Bob Brown") }); new JsonPatcher().Patch(ref sample, patchDocument); Assert.Equal("Bob Brown", (string)pointer.Find(sample)); }
public void Remove_a_property() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books/0/author"); patchDocument.AddOperation(new RemoveOperation() { Path = pointer }); new JsonPatcher().Patch(ref sample, patchDocument); Assert.Throws(typeof(ArgumentException), () => { pointer.Find(sample); }); }
protected override void Analyze(AnnotatedCodeLocation annotatedCodeLocation, string annotatedCodeLocationPointer) { var pointer = new JsonPointer(annotatedCodeLocationPointer); JToken token = pointer.Evaluate(Context.InputLogToken); if (token.HasProperty(SarifPropertyName.Importance)) { if (!annotatedCodeLocationPointer.Contains(SarifPropertyName.CodeFlows)) { string importancePointer = annotatedCodeLocationPointer.AtProperty(SarifPropertyName.Importance); LogResult(importancePointer, nameof(RuleResources.SARIF011_Default)); } } }
public void Replace_a_property_value_with_an_object() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books/0/author"); patchDocument.AddOperation(new ReplaceOperation() { Path = pointer, Value = new JObject(new[] { new JProperty("hello", "world") }) }); new JsonPatcher().Patch(ref sample, patchDocument); var newPointer = new JsonPointer("/books/0/author/hello"); Assert.Equal("world", (string)newPointer.Find(sample)); }
public void Test_a_value() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books/0/author"); patchDocument.AddOperation(new TestOperation() { Path = pointer, Value = new JValue("Billy Burton") }); Assert.Throws(typeof(InvalidOperationException), () => { patchDocument.ApplyTo(sample); }); }
public void Test_a_value() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books/0/author"); patchDocument.AddOperation(new TestOperation() { Path = pointer, Value = new JValue("Billy Burton") }); Assert.Throws(typeof(InvalidOperationException), () => { var patcher = new JsonPatcher(); patcher.Patch(ref sample, patchDocument); }); }
private JsonPatchResult _Copy(JsonValue json) { var results = JsonPointer.Parse(From).Evaluate(json); if (results.Error != null) { return(new JsonPatchResult(json, results.Error)); } var(result, success) = JsonPointerFunctions.InsertValue(json, Path, results.Result); if (!success) { return(new JsonPatchResult(json, "Could not add the value")); } return(new JsonPatchResult(result)); }
public void Append_array_elements_wrongDataType() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books/"); patchDocument.AddOperation(new AddEachOperation() { Path = pointer, Value = new JObject(new[] { new JProperty("producer", "Kingston") }) }); Assert.Throws(typeof(ArgumentException), () => { patchDocument.ApplyTo(sample); }); }
protected override void Analyze(Region region, string regionPointer) { var jsonPointer = new JsonPointer(regionPointer); var regionToken = jsonPointer.Evaluate(Context.InputLogToken); if (regionToken.HasProperty(SarifPropertyName.EndLine) && region.EndLine < region.StartLine) { string endLinePointer = regionPointer.AtProperty(SarifPropertyName.EndLine); LogResult( endLinePointer, nameof(RuleResources.SARIF012_Default), region.EndLine.ToInvariantString(), region.StartLine.ToInvariantString()); } }
public void Copy_property() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var frompointer = new JsonPointer("/books/0/ISBN"); var topointer = new JsonPointer("/books/1/ISBN"); patchDocument.AddOperation(new AddOperation() { Path = frompointer, Value = new JValue("21123123") }); patchDocument.AddOperation(new CopyOperation() { FromPath = frompointer, Path = topointer }); var patcher = new JsonPatcher(); patcher.Patch(ref sample, patchDocument); var result = new JsonPointer("/books/1/ISBN").Find(sample); Assert.Equal("21123123", result); }
private void RunTestCase(ParsingTestCase test, JsonPointerRepresentation format) { JsonPointer jPointer = null; Action action = () => jPointer = new JsonPointer(test.Value, format); if (test.Valid) { action.Should().NotThrow(); jPointer.ReferenceTokens.Should().ContainInOrder(test.ReferenceTokens); jPointer.ReferenceTokens.Length.Should().Be(test.ReferenceTokens.Length); } else { action.Should().Throw <ArgumentException>(); } }
public void Constructor_TemplateExists_ShouldSetCorrectValues() { // Arrange JsonSchemaKeywords.RegisterXsdKeywords(); var expectedId = "https://dev.altinn.studio/org/repository/app/model/model.schema.json"; // Act var actualJsonTemplate = new GeneralJsonTemplate(new Uri(expectedId), "model"); // Assert JsonSchema jsonSchema = JsonSchema.FromText(actualJsonTemplate.GetJsonString()); var idKeyword = jsonSchema.GetKeyword <IdKeyword>(); idKeyword.Id.Should().Be(expectedId); var messageType = jsonSchema.FollowReference(JsonPointer.Parse("#/$defs/model")).Should().NotBeNull(); }
protected override void Analyze(Region region, string regionPointer) { var jsonPointer = new JsonPointer(regionPointer); JToken regionToken = jsonPointer.Evaluate(Context.InputLogToken); if (!region.IsBinaryRegion && !region.IsLineColumnBasedTextRegion && !region.IsOffsetBasedTextRegion) { // {0}: This 'region' object does not specify 'startLine', 'charOffset', or 'byteOffset'. // As a result, it is impossible to determine whether this 'region' object describes // a line/column text region, a character offset/length text region, or a binary region. LogResult( regionPointer, nameof(RuleResources.SARIF1007_RegionPropertiesMustBeConsistent_Error_RegionStartPropertyMustBePresent_Text)); } if (regionToken.HasProperty(SarifPropertyName.EndLine) && region.EndLine < region.StartLine) { string endLinePointer = regionPointer.AtProperty(SarifPropertyName.EndLine); // {0}: In this 'region' object, the 'endLine' property '{1}' is less than the 'startLine' // property '{2}'. The properties of a 'region' object must be internally consistent. LogResult( endLinePointer, nameof(RuleResources.SARIF1007_RegionPropertiesMustBeConsistent_Error_EndLineMustNotPrecedeStartLine_Text), region.EndLine.ToInvariantString(), region.StartLine.ToInvariantString()); } if (RegionIsOnOneLine(region, regionToken) && regionToken.HasProperty(SarifPropertyName.EndColumn) && region.EndColumn < region.StartColumn) { string endColumnPointer = regionPointer.AtProperty(SarifPropertyName.EndColumn); // {0}: In this 'region' object, the 'endColumn' property '{1}' is less than the 'startColumn' // property '{2}'. The properties of a 'region' object must be internally consistent. LogResult( endColumnPointer, nameof(RuleResources.SARIF1007_RegionPropertiesMustBeConsistent_Error_EndColumnMustNotPrecedeStartColumn_Text), region.EndColumn.ToInvariantString(), region.StartColumn.ToInvariantString()); } }
/// <summary> /// Creates a new parameter <see cref="OasFieldExpression"/>. /// </summary> /// <param name="expressionType"> /// The expression type. This must be <see cref="OasFieldExpressionType.Request"/> or <see cref="OasFieldExpressionType.Response"/>. /// </param> /// <param name="pointer"> /// The JSON pointer. /// </param> public OasFieldExpression(OasFieldExpressionType expressionType, JsonPointer pointer) { switch (expressionType) { case OasFieldExpressionType.Request: case OasFieldExpressionType.Response: break; default: throw new ArgumentOutOfRangeException(nameof(expressionType)); } ExpressionType = expressionType; ExpressionSource = OasFieldExpressionSource.Body; Name = null; Pointer = pointer; }
public void Move_array_element() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var frompointer = new JsonPointer("/books/1"); var topointer = new JsonPointer("/books/0/child"); patchDocument.AddOperation(new MoveOperation() { FromPath = frompointer, Path = topointer }); var patcher = new JsonPatcher(); patcher.Patch(ref sample, patchDocument); var result = topointer.Find(sample); Assert.IsType(typeof(JObject), result); }
public void Move_property() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var frompointer = new JsonPointer("/books/0/author"); var topointer = new JsonPointer("/books/1/author"); patchDocument.AddOperation(new MoveOperation() { FromPath = frompointer, Path = topointer }); var patcher = new JsonPatcher(); patcher.Patch(ref sample, patchDocument); var result = (string)topointer.Find(sample); Assert.Equal("F. Scott Fitzgerald", result); }
private static IOpenApiReferenceable ResolveReferenceOnParameterElement( OpenApiParameter parameterElement, string propertyName, string mapKey, JsonPointer pointer) { switch (propertyName) { case OpenApiConstants.Schema: return(parameterElement.Schema); case OpenApiConstants.Examples when mapKey != null: return(parameterElement.Examples[mapKey]); default: throw new OpenApiException(string.Format(SRResource.InvalidReferenceId, pointer)); } }
public void Add_an_array_element() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books"); patchDocument.AddOperation(new AddOperation() { Path = pointer, Value = new JObject(new[] { new JProperty("author", "James Brown") }) }); patchDocument.ApplyTo(sample); var list = sample["books"] as JArray; Assert.Equal(3, list.Count); }
public override JsonElement Apply(JsonElement data) { var expected = _components.SelectMany(c => c.Apply(data).Flatten()) .Where(e => e.ValueKind == JsonValueKind.String); if (data.ValueKind != JsonValueKind.Object) { return(expected.AsJsonElement()); } var paths = expected.Select(e => e.GetString()) .Select(p => new { Path = p, Pointer = JsonPointer.Parse(p == string.Empty ? "" : $"/{p.Replace('.', '/')}") }) .Select(p => new { Path = p.Path, Value = p.Pointer.Evaluate(data) }); return(paths.Where(p => p.Value == null) .Select(k => k.Path.AsJsonElement()) .AsJsonElement()); }
public void Replace_a_property_value_with_an_object() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books/0/author"); patchDocument.AddOperation(new ReplaceOperation() { Path = pointer, Value = new JObject(new[] { new JProperty("hello", "world") }) }); patchDocument.ApplyTo(new JsonNetTargetAdapter(sample)); var newPointer = new JsonPointer("/books/0/author/hello"); Assert.Equal("world", (string)newPointer.Find(sample)); }
/// <summary> /// Creates a new simple <see cref="OasFieldExpression"/>. /// </summary> /// <param name="expressionType"> /// The expression type. This must be <see cref="OasFieldExpressionType.Url"/>, <see cref="OasFieldExpressionType.Method"/> /// or <see cref="OasFieldExpressionType.StatusCode"/>. /// </param> public OasFieldExpression(OasFieldExpressionType expressionType) { switch (expressionType) { case OasFieldExpressionType.Url: case OasFieldExpressionType.Method: case OasFieldExpressionType.StatusCode: break; default: throw new ArgumentOutOfRangeException(nameof(expressionType)); } ExpressionType = expressionType; ExpressionSource = OasFieldExpressionSource.None; Name = null; Pointer = default; }
protected override void Analyze(Region region, string regionPointer) { var jsonPointer = new JsonPointer(regionPointer); JToken regionToken = jsonPointer.Evaluate(Context.InputLogToken); if (RegionIsOnOneLine(region, regionToken) && regionToken.HasProperty(SarifPropertyName.EndColumn) && region.EndColumn < region.StartColumn) { string endColumnPointer = regionPointer.AtProperty(SarifPropertyName.EndColumn); LogResult( endColumnPointer, nameof(RuleResources.SARIF1013_Default), region.EndColumn.ToInvariantString(), region.StartColumn.ToInvariantString()); } }
public void TestRemoveArrayElement() { using var doc = JsonDocument.Parse(@"{ ""foo"": [ ""bar"", ""qux"", ""baz"" ] }"); using var expected = JsonDocument.Parse(@"{ ""foo"": [ ""bar"", ""baz"" ] }"); var documentBuilder = new JsonDocumentBuilder(doc.RootElement); JsonPointer location; Assert.IsTrue(JsonPointer.TryParse(@"/foo/1", out location)); Assert.IsTrue(location.TryRemove(ref documentBuilder)); JsonDocument result = documentBuilder.ToJsonDocument(); JsonElementEqualityComparer.Instance.Equals(expected.RootElement, result.RootElement); }
private static IOpenApiReferenceable ResolveReferenceOnResponseElement( OpenApiResponse responseElement, string propertyName, string mapKey, JsonPointer pointer) { switch (propertyName) { case OpenApiConstants.Headers when mapKey != null: return(responseElement.Headers[mapKey]); case OpenApiConstants.Links when mapKey != null: return(responseElement.Links[mapKey]); default: throw new OpenApiException(string.Format(SRResource.InvalidReferenceId, pointer)); } }
public async Task Analyze_SimpleContent_Restriction(string path) { JsonSchemaKeywords.RegisterXsdKeywords(); var schema = await ResourceHelpers.LoadJsonSchemaTestData(path); var analyzer = new SeresJsonSchemaAnalyzer(); var metadata = analyzer.AnalyzeSchema(schema, new Uri("dummy", UriKind.Relative)); metadata.GetCompatibleTypes(JsonPointer.Parse("#/$defs/ageType")).Should().Contain(CompatibleXsdType.SimpleType); metadata.GetCompatibleTypes(JsonPointer.Parse("#/$defs/limitedAgeType")).Should().Contain(CompatibleXsdType.SimpleTypeRestriction); metadata.GetCompatibleTypes(JsonPointer.Parse("#/$defs/genderType")).Should().Contain(CompatibleXsdType.SimpleType); metadata.GetCompatibleTypes(JsonPointer.Parse("#/$defs/limitedGenderType")).Should().Contain(CompatibleXsdType.SimpleTypeRestriction); metadata.GetCompatibleTypes(JsonPointer.Parse("#/$defs/person")).Should().Contain(CompatibleXsdType.SimpleContentExtension); metadata.GetCompatibleTypes(JsonPointer.Parse("#/$defs/limitedPerson")).Should().Contain(CompatibleXsdType.SimpleContentRestriction); metadata.GetCompatibleTypes(JsonPointer.Parse("#/$defs/limitedPerson-inline")).Should().Contain(CompatibleXsdType.SimpleContentRestriction); }
public void GetWithRefTest() { using var doc = JsonDocument.Parse(@"{""foo"": [""bar"", ""baz""]}"); var root = doc.RootElement; JsonPointer pointer; Assert.IsTrue(JsonPointer.TryParse("/foo/0", out pointer)); JsonElement value; Assert.IsTrue(pointer.TryGetValue(root, out value)); var comparer = JsonElementEqualityComparer.Instance; var expected = root.GetProperty("foo")[0]; Assert.IsTrue(comparer.Equals(value, expected)); }
public void ValidateReturnsValidOnUnknownFormat() { JsonSchemaOptions.OutputFormat = SchemaValidationOutputFormat.Detailed; var schema = new JsonSchema().Type(JsonSchemaType.String).Format(StringFormat.GetFormat("Int32")); var json = (JsonValue)"32"; var expected = new SchemaValidationResults { IsValid = true, RelativeLocation = JsonPointer.Parse("#/format"), InstanceLocation = JsonPointer.Parse("#"), Keyword = "format", AnnotationValue = "Int32" }; var results = schema.Validate(json); results.AssertValid(expected); }
public void Add_an_non_existing_member_property() // Why isn't this replace? { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books/0/ISBN"); patchDocument.AddOperation(new AddOperation() { Path = pointer, Value = new JValue("213324234343") }); var patcher = new JsonPatcher(); patcher.Patch(ref sample, patchDocument); var result = (string)pointer.Find(sample); Assert.Equal("213324234343", result); }
private JToken GetSpecifiedToken(CommonOptions options) { string pointer = GetSpecifiedPointer(options.JsonPointer); JToken token; if (pointer == PointerSegmentSeparator) { token = _rootToken; } else { var jPointer = new JsonPointer(pointer); token = jPointer.Evaluate(_rootToken); } return(token); }
public void Add_an_array_element() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books"); patchDocument.AddOperation(new AddOperation() { Path = pointer, Value = new JObject(new[] { new JProperty("author", "James Brown") }) }); var patcher = new JsonPatcher(); patcher.Patch(ref sample, patchDocument); var list = sample["books"] as JArray; Assert.Equal(3, list.Count); }
public async Task IsValidComplexType_ComplexType_ShouldReturnTrue(string path, string jsonPointer, string testCase) { _testOutputHelper.WriteLine($"{testCase}"); var schema = await ResourceHelpers.LoadJsonSchemaTestData(path); var normalizer = new JsonSchemaNormalizer(); var normalizedSchema = normalizer.Normalize(schema); var json = JsonSerializer.Serialize(normalizedSchema, new JsonSerializerOptions { WriteIndented = true }); var analyzer = new SeresJsonSchemaAnalyzer(); var results = analyzer.AnalyzeSchema(schema, new Uri("dummy", UriKind.Relative)); results.GetCompatibleTypes(JsonPointer.Parse(jsonPointer)).Should().Contain(CompatibleXsdType.ComplexType); }
private Region GetRegionFromJPointer(string jPointer) { JsonPointer jsonPointer = new JsonPointer(jPointer); JToken jToken = jsonPointer.Evaluate(Context.InputLogToken); IJsonLineInfo lineInfo = jToken; Region region = null; if (lineInfo.HasLineInfo()) { region = new Region { StartLine = lineInfo.LineNumber, StartColumn = lineInfo.LinePosition }; } return(region); }
public void Remove_an_array_element() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books/0"); patchDocument.AddOperation(new RemoveOperation() { Path = pointer }); patchDocument.ApplyTo(sample); Assert.Throws(typeof(ArgumentException), () => { var x = pointer.Find("/books/1"); }); }
internal (JsonSchema, Uri) FindSubschema(JsonPointer pointer, Uri currentUri) { IRefResolvable resolvable = this; for (var i = 0; i < pointer.Segments.Length; i++) { var segment = pointer.Segments[i]; var newResolvable = resolvable.ResolvePointerSegment(segment.Value); if (newResolvable == null) { // TODO: document that this process does not consider `$id` in extraneous data if (resolvable is JsonSchema subSchema && subSchema.OtherData != null && subSchema.OtherData.TryGetValue(segment.Value, out var element)) { var newPointer = JsonPointer.Create(pointer.Segments.Skip(i + 1), true); var value = newPointer.Evaluate(element); var asSchema = FromText(value.ToString()); return(asSchema, currentUri); } return(null, currentUri); } if (newResolvable is JsonSchema schema && schema.Keywords != null) { var idKeyword = schema.Keywords.OfType <IdKeyword>().SingleOrDefault(); if (idKeyword != null && i != pointer.Segments.Length - 1) { currentUri = idKeyword.UpdateUri(currentUri); } } resolvable = newResolvable; } if (!(resolvable is JsonSchema)) { resolvable = resolvable.ResolvePointerSegment(null); } return(resolvable as JsonSchema, currentUri); }
protected override void Analyze(AnnotatedCodeLocation annotatedCodeLocation, string annotatedCodeLocationPointer) { var pointer = new JsonPointer(annotatedCodeLocationPointer); JToken token = pointer.Evaluate(Context.InputLogToken); if (token.HasProperty(SarifPropertyName.Essential)) { string essentialPointer = annotatedCodeLocationPointer.AtProperty(SarifPropertyName.Essential); // Emit a different warning depending on whether or not this annotatedCodeLocation // occurs in a codeFlow, because the "importance" property is only meaningful within // a codeFlow. string formatId = annotatedCodeLocationPointer.Contains(SarifPropertyName.CodeFlows) ? nameof(RuleResources.SARIF005_Default) : nameof(RuleResources.SARIF005_OnlyInCodeFlow); LogResult(essentialPointer, formatId); } }
public void Copy_array_element() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var frompointer = new JsonPointer("/books/0"); var topointer = new JsonPointer("/books/-"); patchDocument.AddOperation(new CopyOperation() { FromPath = frompointer, Path = topointer }); patchDocument.ApplyTo(sample); var result = new JsonPointer("/books/2").Find(sample); Assert.IsType(typeof(JObject), result); }
public void Remove_an_array_element() { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books/0"); patchDocument.AddOperation(new RemoveOperation() { Path = pointer }); var patcher = new JsonPatcher(); patcher.Patch(ref sample, patchDocument); Assert.Throws(typeof(ArgumentException), () => { var x = pointer.Find("/books/1"); }); }
public void RunEvaluationTests(EvaluationTestCase test) { JsonPointer jPointer = new JsonPointer(test.Pointer); JToken documentToken = JToken.Parse(test.Document); JToken actualResult = null; Action action = () => actualResult = jPointer.Evaluate(documentToken); if (test.Valid) { action.Should().NotThrow(); JToken expectedResult = JToken.Parse(test.Result); s_comparer.Equals(expectedResult, actualResult).Should().BeTrue(); } else { action.Should().Throw <ArgumentException>().WithMessage($"*{test.Pointer}*"); } }
public override async Task ExecuteAsync(SetMaintenancePacket setMaintenancePacket, ClientSession session) { var servers = (await _channelHttpClient.GetChannelsAsync().ConfigureAwait(false)) ?.Where(c => c.Type == ServerType.WorldServer).ToList(); var patch = new JsonPatch(PatchOperation.Replace(JsonPointer.Create <ChannelInfo>(o => o.IsMaintenance), setMaintenancePacket.MaintenanceMode.AsJsonElement())); if (setMaintenancePacket.IsGlobal == false) { await _channelHttpClient.PatchAsync(_channel.ChannelId, patch); } else { foreach (var server in servers ?? new List <ChannelInfo>()) { await _channelHttpClient.PatchAsync(server.Id, patch); } } }
public override JsonElement Apply(JsonElement data) { if (_path == null) { return(data); } var path = _path.Apply(data); var pathString = path.Stringify() !; var pointer = JsonPointer.Parse(pathString == string.Empty ? "" : $"/{pathString.Replace('.', '/')}"); var pathEval = pointer.Evaluate(data); if (pathEval != null) { return(pathEval.Value); } return(_defaultValue?.Apply(data) ?? ((string?)null).AsJsonElement()); }
public void Add_an_non_existing_member_property() // Why isn't this replace? { var sample = PatchTests.GetSample2(); var patchDocument = new PatchDocument(); var pointer = new JsonPointer("/books/0/ISBN"); patchDocument.AddOperation(new AddOperation() { Path = pointer, Value = new JValue("213324234343") }); patchDocument.ApplyTo(sample); var result = (string)pointer.Find(sample); Assert.Equal("213324234343", result); }
protected override void Analyze(CodeFlow codeFlow, string codeFlowPointer) { var pointer = new JsonPointer(codeFlowPointer); JToken codeFlowToken = pointer.Evaluate(Context.InputLogToken); JProperty locationsProperty = codeFlowToken.Children<JProperty>() .FirstOrDefault(prop => prop.Name.Equals(SarifPropertyName.Locations, StringComparison.Ordinal)); if (locationsProperty != null) { JArray annotatedCodeLocationArray = locationsProperty.Value as JArray; string annotatedCodeLocationsPointer = codeFlowPointer.AtProperty(SarifPropertyName.Locations); ReportMissingStepProperty( annotatedCodeLocationArray, annotatedCodeLocationsPointer); ReportInvalidStepValues( codeFlow.Locations.ToArray(), annotatedCodeLocationArray, annotatedCodeLocationsPointer); } }