public void TestDeleteNestedProperty() { var plist = new PDictionary(); var primary = new PDictionary(); var icons = new PDictionary(); var files = new PArray(); plist.Add("CFBundleIdentifier", "com.microsoft.delete-nested-property"); plist.Add("CFBundleIcons", icons); icons.Add("CFBundlePrimaryIcon", primary); primary.Add("CFBundleIconFiles", files); files.Add("icon0"); files.Add("icon1"); var expected = (PDictionary)plist.Clone(); files.Add("icon2"); TestExecuteTask(plist, PropertyListEditorAction.Delete, ":CFBundleIcons:CFBundlePrimaryIcon:CFBundleIconFiles:2", null, null, expected); var plist2 = (PDictionary)expected.Clone(); files.Remove(); var expected2 = (PDictionary)plist.Clone(); TestExecuteTask(plist2, PropertyListEditorAction.Delete, ":CFBundleIcons:CFBundlePrimaryIcon:CFBundleIconFiles", null, null, expected2); }
public void TestMergeRoot() { var expected = new PDictionary(); var primary = new PDictionary(); var icons = new PDictionary(); var files = new PArray(); expected.Add("CFBundleIdentifier", "com.microsoft.merge-root"); expected.Add("CFBundleIcons", icons); icons.Add("CFBundlePrimaryIcon", primary); primary.Add("UIPrerenderedIcon", new PBoolean(true)); primary.Add("CFBundleIconFiles", files); files.Add("icon0"); files.Add("icon1"); files.Add("icon2"); var plist = (PDictionary)expected.Clone(); plist.Remove("CFBundleIcons"); var merge = (PDictionary)expected.Clone(); merge.Remove("CFBundleIdentifier"); var tmp = Path.Combine(Cache.CreateTemporaryDirectory(), "tmpfile"); merge.Save(tmp); TestExecuteTask(plist, PropertyListEditorAction.Merge, null, null, tmp, expected); }
public void TestMergeArrays() { var plist = new PDictionary(); var array0 = new PArray(); array0.Add("item0"); array0.Add("item1"); array0.Add("item2"); array0.Add("item3"); plist.Add("CFBundleIdentifier", "com.microsoft.merge-arrays"); plist.Add("CFArrayItems", array0); var array1 = new PArray(); array1.Add("item2"); array1.Add("item3"); var expected = (PDictionary)plist.Clone(); array0.RemoveAt(3); array0.RemoveAt(2); var tmp = Path.Combine(Cache.CreateTemporaryDirectory(), "tmpfile"); array1.Save(tmp); TestExecuteTask(plist, PropertyListEditorAction.Merge, ":CFArrayItems", null, tmp, expected); }
public void TestAddNestedProperty() { var plist = new PDictionary(); plist.Add("CFBundleIdentifier", "com.microsoft.add-nested-property"); var expected = (PDictionary)plist.Clone(); var primary = new PDictionary(); var icons = new PDictionary(); primary.Add("UIPrerenderedIcon", new PBoolean(true)); icons.Add("CFBundlePrimaryIcon", primary); expected.Add("CFBundleIcons", icons); TestExecuteTask(plist, PropertyListEditorAction.Add, ":CFBundleIcons:CFBundlePrimaryIcon:UIPrerenderedIcon", "bool", "true", expected); plist = (PDictionary)expected.Clone(); var files = new PArray(); primary.Add("CFBundleIconFiles", files); TestExecuteTask(plist, PropertyListEditorAction.Add, ":CFBundleIcons:CFBundlePrimaryIcon:CFBundleIconFiles", "array", null, expected); plist = (PDictionary)expected.Clone(); files.Add("icon0"); TestExecuteTask(plist, PropertyListEditorAction.Add, ":CFBundleIcons:CFBundlePrimaryIcon:CFBundleIconFiles:", "string", "icon0", expected); }
public void TestMergeArrays() { var plist = new PDictionary(); var array0 = new PArray(); array0.Add("item0"); array0.Add("item1"); array0.Add("item2"); array0.Add("item3"); plist.Add("CFBundleIdentifier", "com.microsoft.merge-arrays"); plist.Add("CFArrayItems", array0); var array1 = new PArray(); array1.Add("item2"); array1.Add("item3"); var expected = (PDictionary)plist.Clone(); array0.RemoveAt(3); array0.RemoveAt(2); var tmp = Path.GetTempFileName(); array1.Save(tmp); try { TestExecuteTask(plist, PropertyListEditorAction.Merge, ":CFArrayItems", null, tmp, expected); } finally { File.Delete(tmp); } }
public void TestDeleteProperty() { var plist = new PDictionary(); plist.Add("CFBundleIdentifier", "com.microsoft.delete-property"); plist.Add("CFBundleShortVersionString", "1.0"); var expected = (PDictionary)plist.Clone(); plist.Add("CFBundleVersion", "1"); TestExecuteTask(plist, PropertyListEditorAction.Delete, ":CFBundleVersion", null, null, expected); TestExecuteTask(plist, PropertyListEditorAction.Delete, ":CFDoesNotExist", null, null, null); }
public void TestAddArrayValue() { var plist = new PDictionary(); var primary = new PDictionary(); var icons = new PDictionary(); var files = new PArray(); plist.Add("CFBundleIdentifier", "com.microsoft.add-array-value"); plist.Add("CFBundleIcons", icons); icons.Add("CFBundlePrimaryIcon", primary); primary.Add("CFBundleIconFiles", files); files.Add("icon0"); files.Add("icon1"); files.Add("icon2"); var expected = (PDictionary)plist.Clone(); files.RemoveAt(0); TestExecuteTask(plist, PropertyListEditorAction.Add, ":CFBundleIcons:CFBundlePrimaryIcon:CFBundleIconFiles:0", "string", "icon0", expected); }
public void TestSetArrayValue() { var plist = new PDictionary(); var primary = new PDictionary(); var icons = new PDictionary(); var files = new PArray(); plist.Add("CFBundleIdentifier", "com.microsoft.set-array-value"); plist.Add("CFBundleIcons", icons); icons.Add("CFBundlePrimaryIcon", primary); primary.Add("CFBundleIconFiles", files); files.Add("icon0"); files.Add("icon1"); files.Add("icon2"); var expected = (PDictionary)plist.Clone(); files[0] = new PString("icon"); TestExecuteTask(plist, PropertyListEditorAction.Set, ":CFBundleIcons:CFBundlePrimaryIcon:CFBundleIconFiles:0", "string", "icon0", expected); // Note: this will fail due to the index being out of range TestExecuteTask(plist, PropertyListEditorAction.Set, ":CFBundleIcons:CFBundlePrimaryIcon:CFBundleIconFiles:3", "string", "icon3", null); }