[PackageManager][TCSACR-442] Add TCs for new APIs 24/264324/3
authorSangyoon Jang <jeremy.jang@samsung.com>
Tue, 7 Sep 2021 11:23:07 +0000 (20:23 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Mon, 27 Sep 2021 05:20:42 +0000 (14:20 +0900)
Change-Id: Iea1e3885c774d5c45b5bf790d38997b63a49a26e
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
tct-suite-vs/Resource/Tizen.Packagemanager.Tests/org.example.samplerpk.rpk [new file with mode: 0644]
tct-suite-vs/Tizen.Packagemanager.Tests/Tizen.Packagemanager.Tests.sln
tct-suite-vs/Tizen.Packagemanager.Tests/testcase/TSPackage.cs
tct-suite-vs/Tizen.Packagemanager.Tests/testcase/TSPackageFilter.cs
tct-suite-vs/Tizen.Packagemanager.Tests/testcase/support/TestHelper.cs
tool/script/pack.py
tool/script/template/inst.py

diff --git a/tct-suite-vs/Resource/Tizen.Packagemanager.Tests/org.example.samplerpk.rpk b/tct-suite-vs/Resource/Tizen.Packagemanager.Tests/org.example.samplerpk.rpk
new file mode 100644 (file)
index 0000000..4bca712
Binary files /dev/null and b/tct-suite-vs/Resource/Tizen.Packagemanager.Tests/org.example.samplerpk.rpk differ
index 19c0fd3..930041d 100755 (executable)
@@ -1,72 +1,78 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26730.15
-MinimumVisualStudioVersion = 15.0.26124.0
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Packagemanager.Tests", "Tizen.Packagemanager.Tests.csproj", "{D92BEEAC-3B2A-45F8-8C53-53B92550404A}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "nunit.framework", "..\nunit.framework\nunit.framework.csproj", "{B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "nunitlite", "..\nunitlite\nunitlite.csproj", "{FDB8025A-C029-461F-895E-287B4C65939B}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoTemplate", "..\Template\AutoTemplate\AutoTemplate.csproj", "{B11ABB0C-C3C1-4B5C-8251-A15628A775F3}"
-EndProject
-Global
-       GlobalSection(SolutionConfigurationPlatforms) = preSolution
-               Debug|Any CPU = Debug|Any CPU
-               Debug|x64 = Debug|x64
-               Debug|x86 = Debug|x86
-               Release|Any CPU = Release|Any CPU
-               Release|x64 = Release|x64
-               Release|x86 = Release|x86
-       EndGlobalSection
-       GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|x64.ActiveCfg = Debug|Any CPU
-               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|x64.Build.0 = Debug|Any CPU
-               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|x86.ActiveCfg = Debug|Any CPU
-               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|x86.Build.0 = Debug|Any CPU
-               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|x64.ActiveCfg = Release|Any CPU
-               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|x64.Build.0 = Release|Any CPU
-               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|x86.ActiveCfg = Release|Any CPU
-               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|x86.Build.0 = Release|Any CPU
-               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|x64.ActiveCfg = Debug|Any CPU
-               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|x64.Build.0 = Debug|Any CPU
-               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|x86.ActiveCfg = Debug|Any CPU
-               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|x86.Build.0 = Debug|Any CPU
-               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|x64.ActiveCfg = Release|Any CPU
-               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|x64.Build.0 = Release|Any CPU
-               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|x86.ActiveCfg = Release|Any CPU
-               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|x86.Build.0 = Release|Any CPU
-               {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|x64.ActiveCfg = Debug|Any CPU
-               {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|x64.Build.0 = Debug|Any CPU
-               {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|x86.ActiveCfg = Debug|Any CPU
-               {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|x86.Build.0 = Debug|Any CPU
-               {FDB8025A-C029-461F-895E-287B4C65939B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {FDB8025A-C029-461F-895E-287B4C65939B}.Release|Any CPU.Build.0 = Release|Any CPU
-               {FDB8025A-C029-461F-895E-287B4C65939B}.Release|x64.ActiveCfg = Release|Any CPU
-               {FDB8025A-C029-461F-895E-287B4C65939B}.Release|x64.Build.0 = Release|Any CPU
-               {FDB8025A-C029-461F-895E-287B4C65939B}.Release|x86.ActiveCfg = Release|Any CPU
-               {FDB8025A-C029-461F-895E-287B4C65939B}.Release|x86.Build.0 = Release|Any CPU
-               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.NUI|Any CPU.ActiveCfg = Debug|Any CPU
-               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.NUI|Any CPU.Build.0 = Debug|Any CPU
-               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Release|Any CPU.Build.0 = Release|Any CPU
-       EndGlobalSection
-       GlobalSection(SolutionProperties) = preSolution
-               HideSolutionNode = FALSE
-       EndGlobalSection
-       GlobalSection(ExtensibilityGlobals) = postSolution
-               SolutionGuid = {ED382B91-9930-40B6-B3D7-362304C78680}
-       EndGlobalSection
-EndGlobal
+Microsoft Visual Studio Solution File, Format Version 12.00\r
+# Visual Studio Version 16\r
+VisualStudioVersion = 16.0.31624.102\r
+MinimumVisualStudioVersion = 15.0.26124.0\r
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Packagemanager.Tests", "Tizen.Packagemanager.Tests.csproj", "{D92BEEAC-3B2A-45F8-8C53-53B92550404A}"\r
+EndProject\r
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "nunit.framework", "..\nunit.framework\nunit.framework.csproj", "{B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}"\r
+EndProject\r
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "nunitlite", "..\nunitlite\nunitlite.csproj", "{FDB8025A-C029-461F-895E-287B4C65939B}"\r
+EndProject\r
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoTemplate", "..\Template\AutoTemplate\AutoTemplate.csproj", "{B11ABB0C-C3C1-4B5C-8251-A15628A775F3}"\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
+               Debug|Any CPU = Debug|Any CPU\r
+               Debug|x64 = Debug|x64\r
+               Debug|x86 = Debug|x86\r
+               Release|Any CPU = Release|Any CPU\r
+               Release|x64 = Release|x64\r
+               Release|x86 = Release|x86\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
+               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|x64.ActiveCfg = Debug|Any CPU\r
+               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|x64.Build.0 = Debug|Any CPU\r
+               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|x86.ActiveCfg = Debug|Any CPU\r
+               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Debug|x86.Build.0 = Debug|Any CPU\r
+               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|Any CPU.Build.0 = Release|Any CPU\r
+               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|x64.ActiveCfg = Release|Any CPU\r
+               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|x64.Build.0 = Release|Any CPU\r
+               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|x86.ActiveCfg = Release|Any CPU\r
+               {D92BEEAC-3B2A-45F8-8C53-53B92550404A}.Release|x86.Build.0 = Release|Any CPU\r
+               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|x64.ActiveCfg = Debug|Any CPU\r
+               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|x64.Build.0 = Debug|Any CPU\r
+               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|x86.ActiveCfg = Debug|Any CPU\r
+               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Debug|x86.Build.0 = Debug|Any CPU\r
+               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|Any CPU.Build.0 = Release|Any CPU\r
+               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|x64.ActiveCfg = Release|Any CPU\r
+               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|x64.Build.0 = Release|Any CPU\r
+               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|x86.ActiveCfg = Release|Any CPU\r
+               {B9E7C1FD-CB38-42F7-AC43-7BD2E5B4D216}.Release|x86.Build.0 = Release|Any CPU\r
+               {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|x64.ActiveCfg = Debug|Any CPU\r
+               {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|x64.Build.0 = Debug|Any CPU\r
+               {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|x86.ActiveCfg = Debug|Any CPU\r
+               {FDB8025A-C029-461F-895E-287B4C65939B}.Debug|x86.Build.0 = Debug|Any CPU\r
+               {FDB8025A-C029-461F-895E-287B4C65939B}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+               {FDB8025A-C029-461F-895E-287B4C65939B}.Release|Any CPU.Build.0 = Release|Any CPU\r
+               {FDB8025A-C029-461F-895E-287B4C65939B}.Release|x64.ActiveCfg = Release|Any CPU\r
+               {FDB8025A-C029-461F-895E-287B4C65939B}.Release|x64.Build.0 = Release|Any CPU\r
+               {FDB8025A-C029-461F-895E-287B4C65939B}.Release|x86.ActiveCfg = Release|Any CPU\r
+               {FDB8025A-C029-461F-895E-287B4C65939B}.Release|x86.Build.0 = Release|Any CPU\r
+               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Debug|x64.ActiveCfg = Debug|Any CPU\r
+               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Debug|x64.Build.0 = Debug|Any CPU\r
+               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Debug|x86.ActiveCfg = Debug|Any CPU\r
+               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Debug|x86.Build.0 = Debug|Any CPU\r
+               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Release|Any CPU.Build.0 = Release|Any CPU\r
+               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Release|x64.ActiveCfg = Release|Any CPU\r
+               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Release|x64.Build.0 = Release|Any CPU\r
+               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Release|x86.ActiveCfg = Release|Any CPU\r
+               {B11ABB0C-C3C1-4B5C-8251-A15628A775F3}.Release|x86.Build.0 = Release|Any CPU\r
+       EndGlobalSection\r
+       GlobalSection(SolutionProperties) = preSolution\r
+               HideSolutionNode = FALSE\r
+       EndGlobalSection\r
+       GlobalSection(ExtensibilityGlobals) = postSolution\r
+               SolutionGuid = {ED382B91-9930-40B6-B3D7-362304C78680}\r
+       EndGlobalSection\r
+EndGlobal\r
index 0aeb1a0..325467b 100644 (file)
@@ -20,6 +20,7 @@ namespace Tizen.Applications.Tests
         private Package _tpkPackage = null;
         private Package _wgtPackage = null;
         private Package _watchPackage = null;
+        private Package _rpkPackage = null;
         private const string MainAppId = "tpkpkgtest";
         private const string DependencyPkg1 = "dependency_package_1";
         private const string DependencyPkg1Type = "wants";
@@ -34,6 +35,7 @@ namespace Tizen.Applications.Tests
             _tpkPackage = TestHelper.TpkPackage;
             _wgtPackage = TestHelper.WgtPackage;
             _watchPackage = TestHelper.WatchPackage;
+            _rpkPackage = TestHelper.RpkPackage;
         }
 
         [TestFixtureTearDown]
@@ -716,5 +718,30 @@ namespace Tizen.Applications.Tests
             Assert.AreEqual(dependency.Type, "wants", "dependency Type should be wants");
             Assert.AreEqual(dependency.RequiredVersion, "1.0.0", "dependency RequiredVersion should be 1.0.0");
         }
+
+        [Test]
+        [Category("P1")]
+        [Description("Checks if AllowedPackagesAndPrivileges property return correct value")]
+        [Property("SPEC", "Tizen.Applications.Package.AllowedPackagesAndPrivileges A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRO")]
+        [Property("AUTHOR", "Sangyoon Jang, jeremy.jang@samsung.com")]
+        public void AllowedPackagesAndPrivileges_READ_ONLY()
+        {
+            // PRECONDITION
+            Assert.IsNotNull(_rpkPackage, "Precondition failed: testPackage should not be null");
+
+            // TEST CODE
+            var allowedPackagesAndPrivileges = _rpkPackage.AllowedPackagesAndPrivileges;
+
+            Assert.IsTrue(allowedPackagesAndPrivileges is IReadOnlyDictionary<string, IEnumerable<string>>, "Package AllowedPackagesAndPrivileges should be of type IReadOnlyDictionary<string, IEnumerable<string>>");
+            Assert.IsNotNull(allowedPackagesAndPrivileges, "allowedPackagesAndPrivileges should not be null.");
+            Assert.IsNotEmpty(allowedPackagesAndPrivileges, "allowedPackagesAndPrivileges should be not empty.");
+            Assert.AreEqual(allowedPackagesAndPrivileges.Count(), 3, "Number of elements of returned allowedPackagesAndPrivileges should correct.");
+
+            var requiredPrivileges = allowedPackagesAndPrivileges.Where(kvp => kvp.Key == "org.tizen.alarm").FirstOrDefault().Value;
+            Assert.IsNotNull(requiredPrivileges, "requiredPrivileges should not be null.");
+            Assert.AreEqual(requiredPrivileges.Count(), 1, "Number of elements of requiredPrivileges should correct.");
+        }
     }
 }
index 7e2f1c7..b05d2ef 100755 (executable)
@@ -41,7 +41,7 @@ namespace Tizen.Applications.Tests
         }
 
         [Test]
-        [Category("P0")]
+        [Category("P1")]
         [Description("Check if PackageFilter returns proper object")]
         [Property("SPEC", "Tizen.Applications.PackageFilter.PackageFilter C")]
         [Property("SPEC_URL", "-")]
@@ -64,6 +64,56 @@ namespace Tizen.Applications.Tests
 
         [Test]
         [Category("P1")]
+        [Description("Check if PackageFilter returns proper object")]
+        [Property("SPEC", "Tizen.Applications.PackageFilter.PackageFilter C")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("AUTHOR", "Sangyoon Jang, jeremy.jang@samsung.com")]
+        [Property("COVPARAM", "System.Collections.Generic.IDictionary<string,string>")]
+        public void PackageFilter_INIT_WITH_STRING_FILTER()
+        {
+            // TEST CODE
+            Dictionary<string, string> stringFilters = new Dictionary<string, string>();
+            stringFilters.Add(PackageFilter.Keys.ResourceType, "tizen.ai");
+            PackageFilter filter = new PackageFilter(stringFilters);
+            Assert.IsInstanceOf<PackageFilter>(filter);
+
+            var packageStringFilters = filter.StringFilters as Dictionary<string, string>;
+            Assert.IsNotNull(packageStringFilters, "Filters property in constructed PackageFilter object should not be null");
+            Assert.IsTrue(packageStringFilters.Count == 1, string.Format("Package Filters Count, Expected: 1, Actual: {0}", packageStringFilters.Count));
+            Assert.IsTrue(packageStringFilters[PackageFilter.Keys.ResourceType] == "tizen.ai", string.Format("Package Filters {0}, Expected: tizen.ai, Actual: {1}", PackageFilter.Keys.ResourceType, packageStringFilters[PackageFilter.Keys.ResourceType]));
+        }
+
+        [Test]
+        [Category("P1")]
+        [Description("Check if PackageFilter returns proper object")]
+        [Property("SPEC", "Tizen.Applications.PackageFilter.PackageFilter C")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "CONSTR")]
+        [Property("AUTHOR", "Sangyoon Jang, jeremy.jang@samsung.com")]
+        [Property("COVPARAM", "System.Collections.Generic.IDictionary<string,bool>, System.Collections.Generic.IDictionary<string,string>")]
+        public void PackageFilter_INIT_WITH_BOOL_STRING_FILTER()
+        {
+            // TEST CODE
+            Dictionary<string, bool> filters = new Dictionary<string, bool>();
+            filters.Add(PackageFilter.Keys.Preload, true);
+            Dictionary<string, string> stringFilters = new Dictionary<string, string>();
+            stringFilters.Add(PackageFilter.Keys.ResourceType, "tizen.ai");
+            PackageFilter filter = new PackageFilter(filters, stringFilters);
+            Assert.IsInstanceOf<PackageFilter>(filter);
+
+            var packageFilters = filter.Filters as Dictionary<string, bool>;
+            Assert.IsNotNull(packageFilters, "Filters property in constructed PackageFilter object should not be null");
+            Assert.IsTrue(packageFilters.Count == 1, string.Format("Package Filters Count, Expected: 1, Actual: {0}", packageFilters.Count));
+            Assert.IsTrue(packageFilters[PackageFilter.Keys.Preload] == true, string.Format("Package Filters {0}, Expected: true, Actual: {1}", PackageFilter.Keys.Preload, packageFilters[PackageFilter.Keys.Preload]));
+            var packageStringFilters = filter.StringFilters as Dictionary<string, string>;
+            Assert.IsNotNull(packageStringFilters, "Filters property in constructed PackageFilter object should not be null");
+            Assert.IsTrue(packageStringFilters.Count == 1, string.Format("Package Filters Count, Expected: 1, Actual: {0}", packageStringFilters.Count));
+            Assert.IsTrue(packageStringFilters[PackageFilter.Keys.ResourceType] == "tizen.ai", string.Format("Package Filters {0}, Expected: tizen.ai, Actual: {1}", PackageFilter.Keys.ResourceType, packageStringFilters[PackageFilter.Keys.ResourceType]));
+        }
+
+        [Test]
+        [Category("P1")]
         [Description("Check if Filters peroperty has correct values")]
         [Property("SPEC", "Tizen.Applications.PackageFilter.Filters A")]
         [Property("SPEC_URL", "-")]
@@ -95,6 +145,30 @@ namespace Tizen.Applications.Tests
 
         [Test]
         [Category("P1")]
+        [Description("Check if StringFilters peroperty has correct values")]
+        [Property("SPEC", "Tizen.Applications.PackageFilter.StringFilters A")]
+        [Property("SPEC_URL", "-")]
+        [Property("CRITERIA", "PRO")]
+        [Property("AUTHOR", "Sangyoon Jang, jeremy.jang@samsung.com")]
+        public void StringFilters_READ_ONLY()
+        {
+            // TEST CODE
+            Dictionary<string, string> filters = new Dictionary<string, string>();
+
+            string valueString = "tizen.ai";
+            filters.Add(PackageFilter.Keys.ResourceType, valueString);
+
+            PackageFilter filter = new PackageFilter(filters);
+            Assert.IsInstanceOf<PackageFilter>(filter);
+
+            var packageFilters = filter.StringFilters as Dictionary<string, string>;
+            Assert.IsNotNull(packageFilters, "StringFilters property in constructed PackageFilter object should not be null");
+            Assert.IsTrue(packageFilters.Count == 1, string.Format("Package Filters Count, Expected: 1, Actual: {0}", packageFilters.Count));
+            Assert.AreEqual(valueString, packageFilters[PackageFilter.Keys.ResourceType], string.Format("Package Filters {0}, Expected: {1}, Actual: {2}", PackageFilter.Keys.ResourceType, valueString, packageFilters[PackageFilter.Keys.ResourceType]));
+        }
+
+        [Test]
+        [Category("P1")]
         [Description("Check if Filters Keys has correct values as mentioned in SPEC")]
         [Property("SPEC", "Tizen.Applications.PackageFilter.Keys A")]
         [Property("SPEC_URL", "-")]
index 9504757..8f037ad 100755 (executable)
@@ -43,10 +43,12 @@ namespace Tizen.Applications.Tests
         private static Lazy<Package> _tpkPackage = null;
         private static Lazy<Package> _watchPackage = null;
         private static Lazy<Package> _wgtPackage = null;
+        private static Lazy<Package> _rpkPackage = null;
 
         internal static Package TpkPackage { get { return _tpkPackage.Value; } }
         internal static Package WatchPackage { get { return _watchPackage.Value; } }
         internal static Package WgtPackage { get { return _wgtPackage.Value; } }
+        internal static Package RpkPackage { get { return _rpkPackage.Value; } }
         internal static Dictionary<Package, PackageData> TestPackages { get { return null;  } }
 
         static TestHelper()
@@ -54,6 +56,7 @@ namespace Tizen.Applications.Tests
             _tpkPackage = new Lazy<Package>(() => PackageManager.GetPackage(TpkTestData.Id));
             _wgtPackage = new Lazy<Package>(() => PackageManager.GetPackage(WgtTestData.Id));
             _watchPackage = new Lazy<Package>(() => PackageManager.GetPackage(WatchTestData.Id));
+            _rpkPackage = new Lazy<Package>(() => PackageManager.GetPackage(RpkTestData.Id));
 
             // check the external storage for the test related to external storage.
             string profile;
@@ -148,6 +151,12 @@ namespace Tizen.Applications.Tests
         internal static int WatchAppCount = 1;
     }
 
+    internal class RpkTestData\r
+    {\r
+        internal static string Id = "org.example.samplerpk";\r
+        internal static string AppId = "org.example.samplerpk";\r
+    }
+
     internal class PackageData
     {
         public string Id { get; set; }
index 9b0edf4..cb51048 100755 (executable)
@@ -128,6 +128,9 @@ def copy_helper_application(folder_path , dest):
             elif filepath.endswith('.wgt'):
                 shutil.copy(filepath, dest)
                 #print(filepath)
+            elif filepath.endswith('.rpk'):
+                shutil.copy(filepath, dest)
+                print(filepath)
 
 
 def file_count(path):
index b0f3f8e..593f6d6 100755 (executable)
@@ -153,6 +153,22 @@ def uninstPKGs():
                     if "Failure" in line:
                         action_status = False
                         break
+            elif file.endswith(".rpk"):
+                pkg_id = getPKGID(os.path.basename(os.path.splitext(file)[0]))
+                if not pkg_id:
+                    print ("rpk pkg_id is None. file name is : %s " % (file))
+                    action_status = False
+                    continue
+
+                print ("rpk pkg_id : %s" % (pkg_id))
+                (return_code, output) = doRemoteCMD(
+                    "pkgcmd -un %s" % pkg_id)
+
+                for line in output:
+                    if "Failure" in line:
+                        action_status = False
+                        break
+
 
     (return_code, output) = doRemoteCMD(
         "rm -rf %s" % PKG_SRC_DIR)
@@ -311,6 +327,15 @@ def instPKGs():
                     if "Failure" in line:
                         action_status = False
                         break
+            elif file.endswith(".rpk"):
+                if not doRemoteCopy(root + '/' + file, "%s/%s" % (SRC_DIR, file)):
+                    action_status = False
+                (return_code, output) = doRemoteCMD("pkgcmd -ip %s/%s" % (SRC_DIR, file))
+                for line in output:
+                    if "Failure" in line:
+                        action_status = False
+                        break
+                doRemoteCMD("rm -rf %s/%s" % (SRC_DIR, file))
 
 
     return action_status