public void JsonBuilder_OpenArray_Can_Be_Nested_In_OpenProperty() { JsonBuilder target = new JsonBuilder(); Assert.IsTrue(target.OpenObject()); Assert.IsTrue(target.OpenProperty("first")); Assert.IsTrue(target.OpenArray()); Assert.IsTrue(target.WriteValue(1)); target.CloseToken(); target.CloseToken(); Assert.IsTrue(target.OpenProperty("second")); Assert.IsTrue(target.OpenArray()); Assert.IsTrue(target.WriteValue(2)); Assert.AreEqual("{\"first\":[1],\"second\":[2]}", target.Finish()); }
public void JsonBuilder_OpenObject_Can_Be_Nested_In_OpenArray() { JsonBuilder target = new JsonBuilder(); Assert.IsTrue(target.OpenArray()); Assert.IsTrue(target.OpenObject()); Assert.IsTrue(target.OpenProperty("value")); Assert.IsTrue(target.WriteValue(1)); target.CloseToken(); target.CloseToken(); Assert.IsTrue(target.OpenObject()); Assert.IsTrue(target.OpenProperty("value")); Assert.IsTrue(target.WriteValue(2)); Assert.AreEqual("[{\"value\":1},{\"value\":2}]", target.Finish()); }
/// <summary> /// Recursively build a complex object. /// </summary> /// <param name="writer">The writer to use.</param> /// <param name="width">The length of the recursive array.</param> /// <param name="depth">The depth of the recursive object.</param> private static void RecursiveObject(JsonBuilder writer, int width, int depth) { writer.OpenObject(); writer.OpenProperty(Constants.LogicalProperty); writer.WriteValue(Constants.LogicalValue); writer.CloseToken(); writer.OpenProperty(Constants.IntegralProperty); writer.WriteValue(Constants.IntegralValue); writer.CloseToken(); writer.OpenProperty(Constants.FloatProperty); writer.WriteValue(Constants.FloatValue); writer.CloseToken(); writer.OpenProperty(Constants.TextProperty); writer.WriteValue(Constants.TextValue); writer.CloseToken(); if (depth > 0) { writer.OpenProperty(Constants.ArrayProperty); writer.OpenArray(); for (int i = 0; i < width; i++) { int shallow = depth - 1; JsonDna.RecursiveObject(writer, width, shallow); } writer.CloseToken(); writer.CloseToken(); } writer.CloseToken(); }
public void JsonBuilder_OpenArray_Can_Be_Nested_In_OpenArray() { JsonBuilder target = new JsonBuilder(); Assert.IsTrue(target.OpenArray()); Assert.IsTrue(target.OpenArray()); Assert.IsTrue(target.WriteValue(1)); target.CloseToken(); Assert.IsTrue(target.OpenArray()); Assert.IsTrue(target.WriteValue(2)); Assert.AreEqual("[[1],[2]]", target.Finish()); }
/// <summary> /// Execute a single test iteration. /// </summary> /// <param name="watch">The stopwatch timing the iteration.</param> /// <returns>A value indicating whether or not the test is valid.</returns> public bool Execute(Stopwatch watch) { JsonBuilder writer = JsonDna.PerpareWriter(); writer.OpenArray(); writer.WriteValue(Constants.LogicalValue); writer.WriteValue(Constants.IntegralValue); writer.WriteValue(Constants.FloatValue); writer.WriteValue(Constants.TextValue); writer.CloseToken(); return(JsonDna.ConfirmWriter(writer, Constants.ArrayJson, watch)); }
public void JsonBuilder_Writing_Truncates_Object_When_Capacity_Is_Exceeded() { JsonBuilder target = new JsonBuilder(50, 4); Assert.IsTrue(target.OpenObject()); bool succeeded = true; for (int i = 0; succeeded; i++) { if (target.OpenProperty(i.ToString(CultureInfo.InvariantCulture))) { succeeded = target.WriteValue(i); target.CloseToken(); continue; } break; } Assert.AreEqual("{\"0\":0,\"1\":1,\"2\":2,\"3\":3,\"(truncated)\":true}", target.Finish()); }