Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
            }
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        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);
        }