public override JsonElement Execute(JsonElement input) { input = ExecutedOn.Execute(input); if (input.ValueKind != JsonValueKind.Array) { return(JsonElementFactory.CreateNull()); } List <JsonElement> array = input.EnumerateArray().ToList(); if (IsAllArrayElemets) { return(input); } if (ExactElementsAccess != null && ExactElementsAccess.Any()) { IEnumerable <JsonElement> res = array.GetByIndexes(ExactElementsAccess); return(JsonElementFactory.CreateArray(res)); } List <JsonElement> result = array.GetSlice(SliceStart, SliceEnd, SliceStep); return(JsonElementFactory.CreateArray(result)); }
public void DifferentTypes_ReturnsFalse() { JsonElement n1 = JsonElementFactory.CreateBool(true); JsonElement n2 = JsonElementFactory.CreateArray(new List <object> { 1, "abc", 3 }); bool result = JsonElementEqualityComparer.Default.Equals(n1, n2); Assert.False(result); }
public void SameArrays_ReturnsTrue() { JsonElement n1 = JsonElementFactory.CreateArray(new List <object> { 1, "abc", false }); JsonElement n2 = JsonElementFactory.CreateArray(new List <object> { 1, "abc", false }); bool result = JsonElementEqualityComparer.Default.Equals(n1, n2); Assert.True(result); }
public override JsonElement Execute(JsonElement input) { JsonElement result = JsonElementFactory.CreateNull(); if (PropertyChain.Length == 0) { result = input; } foreach (string p in PropertyChain) { if (p == "length" && input.TryGetArrayOrStringLength(out int length)) { result = JsonElementFactory.CreateNumber(length); } else if (input.ValueKind == JsonValueKind.Object && input.TryGetProperty(p, out JsonElement t)) { result = t; input = t; } else { return(JsonElementFactory.CreateNull()); } } if (IsWhildcard) { JsonElement[] resultArray = new JsonElement[0]; if (result.ValueKind == JsonValueKind.Object) { resultArray = result.EnumerateObject().Select(x => x.Value).ToArray(); } else if (result.ValueKind == JsonValueKind.Array) { return(result); } return(JsonElementFactory.CreateArray(resultArray)); } if (IsRecursive) { return(JsonElementFactory.CreateArray(result.EnumerateRecursively())); } return(result); }