using System; using System.Collections.Generic; using System.Linq; using System.Text; using Topten.JsonKit; using Xunit; namespace TestCases { public class TestDictionaryUtils { [Fact] public void DictionaryPaths() { var dict = new Dictionary(); dict.SetPath("settings.subSettings.settingA", 23); dict.SetPath("settings.subSettings.settingB", 24); Assert.True(dict.ContainsKey("settings")); Assert.True(((IDictionary)dict["settings"]).ContainsKey("subSettings")); Assert.Equal(23, dict.GetPath("settings.subSettings.settingA")); Assert.Equal(24, dict.GetPath("settings.subSettings.settingB")); Assert.True(dict.PathExists("settings.subSettings")); Assert.True(dict.PathExists("settings.subSettings.settingA")); Assert.False(dict.PathExists("missing_in_action")); } [Fact] public void DictionaryReparseType() { // Create and initialize and object then convert it to a dictionary var o = new DaObject() { id = 101, Name = "#101" }; var oDict = Json.Reparse>(o); // Store that dictionary at a path inside another dictionary var dict = new Dictionary(); dict.SetPath("settings.daObject", oDict); // Get it back out, but reparse it back into a strongly typed object var o2 = dict.GetPath("settings.daObject"); Assert.Equal(o2.id, o.id); Assert.Equal(o2.Name, o.Name); } [Fact] public void ObjectAtPath() { // Create and initialize and object then convert it to a dictionary var o = new DaObject() { id = 101, Name = "#101" }; var oDict = Json.Reparse>(o); // Store that dictionary at a path inside another dictionary var dict = new Dictionary(); dict.SetPath("settings.daObject", oDict); // Get it back as an object (and update dict to hold an actual DaObject var o2 = dict.GetObjectAtPath("settings.daObject"); // Modify it o2.id = 102; o2.Name = "modified"; // Save the dictionary and make sure we got the change var json = Json.Format(dict); Assert.Contains("102", json); Assert.Contains("modified", json); } [Fact] public void NewObjectAtPath() { // Create a new object at a path var dict = new Dictionary(); var o2 = dict.GetObjectAtPath("settings.daObject"); // Modify it o2.id = 103; o2.Name = "new guy"; // Save the dictionary and make sure we got the change var json = Json.Format(dict); Assert.Contains("103", json); Assert.Contains("new guy", json); } } }