public void Test_17_MoveActionsAndCommitViaResourceManager()
        {
			string basePath = "Win32\\";
			if (Marshal.SizeOf(typeof(IntPtr)) == 8)
				basePath = "x64\\";

#if DEBUG
			basePath += "debug\\";
#else
			basePath += "release\\";
#endif

            string assembly1 = Workshare.TestUtils.TestFileUtils.MakeRootPathAbsolute(basePath + @"Workshare.Policy.Actions.BlockUserAction.dll");
            string assembly2 = Workshare.TestUtils.TestFileUtils.MakeRootPathAbsolute(basePath + @"Workshare.Policy.Actions.AlertUserAction.dll");
            string assembly3 = Workshare.TestUtils.TestFileUtils.MakeRootPathAbsolute(basePath + @"Workshare.Policy.Actions.CleanUserAction.dll");
            string assembly4 = Workshare.TestUtils.TestFileUtils.MakeRootPathAbsolute(basePath + @"Workshare.Policy.Actions.PDFUserAction.dll");
            string assembly5 = Workshare.TestUtils.TestFileUtils.MakeRootPathAbsolute(basePath + @"Workshare.Policy.Actions.ZipUserAction.dll");
            string assembly6 = Workshare.TestUtils.TestFileUtils.MakeRootPathAbsolute(basePath + @"Workshare.Policy.Actions.TagMimeAction.dll");

            IResourceManager resourceManager = ResourceManagerFactory.CreateResourceManager("");
            resourceManager.ResourceActions.Add(assembly1);
            resourceManager.ResourceActions.Add(assembly2);
            resourceManager.ResourceActions.Add(assembly3);
            resourceManager.ResourceActions.Add(assembly4);
            resourceManager.ResourceActions.Add(assembly5);
            resourceManager.ResourceActions.Add(assembly6);


            ResourceListController controller = new ResourceListController();
            controller.ResourceManager = resourceManager;

            // Store the actions and their order
            IResourceActions storedActions = ResourceManagerFactory.CreateResourceActions();

            // Check the standard actions have been installed and are in the default order
            Assert.IsTrue(resourceManager.ResourceActions.Count == 6, "Expected 6 actions to be installed - this test should be run on a standard, clean, install");
            int i = 0;
            string[] expectedActionNamesDefault = {"Block", "Alert", "Clean", "PDF", "Zip", "Email Subject Tagger"};
            foreach (IResourceAction resourceAction in resourceManager.ResourceActions)
            {
                Assert.IsTrue(String.Compare(expectedActionNamesDefault[i], resourceAction.Name) == 0, String.Format(System.Globalization.CultureInfo.CurrentCulture, "Action name expected: {0}, actual: {1}", expectedActionNamesDefault[i], resourceAction.Name));
                i++;
            }
            controller.Remove(1);
            controller.Remove(2);
            // Commit the changes
            controller.Commit();

            i = 0;
            string[] expectedActionNamesAfterMove = { "Block", "Clean", "Zip", "Email Subject Tagger" };
            foreach (IResourceAction resourceAction in resourceManager.ResourceActions)
            {
                Assert.IsTrue(String.Compare(expectedActionNamesAfterMove[i], resourceAction.Name) == 0, String.Format(System.Globalization.CultureInfo.CurrentCulture, "Action name expected: {0}, actual: {1}", expectedActionNamesAfterMove[i], resourceAction.Name));
                i++;
            }
        }
		public ActionAddInManagerUI(IResourceManager resourceManager)
			: base(WorkshareFormUtility.DialogLevel.Secondary)
		{
			InitializeComponent();
			m_controller = new ResourceListController();
			checkedListBox1.SuspendLayout();
			try
			{
				m_controller.ResourceManager = resourceManager;
                foreach (IResourceAction action in m_controller)
                {
                    checkedListBox1.Items.Add(action.Name);
                }
				UpdateList();
				checkedListBox1.ItemCheck += new ItemCheckEventHandler(checkedListBox1_ItemCheck);
				checkedListBox1.SelectedIndex = checkedListBox1.Items.Count > 0 ? 0 : -1;
            }
			finally
			{
				checkedListBox1.ResumeLayout();
			}
		}
        public void Test_18_TestResourceActionNameValidation()
        {
            ResourceListController resourceListController = new ResourceListController();
            string errorMessage;

            //empty name
            bool validationResult = resourceListController.ValidateResourceActionName(@"   ", out errorMessage);
            Assert.IsFalse(validationResult, "Should not allow empty resource action names");
            Assert.AreEqual(Properties.AdminUIResources.ACTION_NAME_INVALID_EMPTY, errorMessage, "incorrect error on empty resource action names");

            //begins with space
            errorMessage = null;
            validationResult = resourceListController.ValidateResourceActionName(@" A Property Name", out errorMessage);
            Assert.IsFalse(validationResult, "Should not allow resource action name beginning with space");
            Assert.AreEqual(String.Format(CultureInfo.CurrentCulture, Properties.AdminUIResources.ACTION_NAME_INVALID_CHAR, " ", "1"), errorMessage, "incorrect error on resource action name beginning with space");

            //invalid filename char
            errorMessage = null;
            validationResult = resourceListController.ValidateResourceActionName(@"A Property*Name", out errorMessage);
            Assert.IsFalse(validationResult, "Should not allow resource action name containing special file name chars");
            Assert.AreEqual(String.Format(CultureInfo.CurrentCulture, Properties.AdminUIResources.ACTION_NAME_INVALID_CHAR, "*", "11"), errorMessage, "incorrect error on resource action name containing special file name chars");

            //too long
            errorMessage = null;
            string name = @"A Resource Action Name that is too long cos there is a limit on exactly how long it can be and for very good reason";
            Assert.IsTrue(name.Length > ResourceListController.ACTION_NAME_MAX_LENGTH, "test setup failure - test name is not long enough");
            validationResult = resourceListController.ValidateResourceActionName(name, out errorMessage);
            Assert.IsFalse(validationResult, "Should not allow resource action name that is too long");
            Assert.AreEqual(String.Format(CultureInfo.CurrentCulture, Properties.AdminUIResources.ACTION_NAME_INVALID_LENGTH, ResourceListController.ACTION_NAME_MAX_LENGTH.ToString(CultureInfo.CurrentCulture)), errorMessage, "incorrect error on resource action name that is too long");

            //ah... just right
            errorMessage = null;
            validationResult = resourceListController.ValidateResourceActionName("A resource action name", out errorMessage);
            Assert.IsTrue(validationResult, "Should not complain about this resource action name");
            Assert.AreEqual(string.Empty, errorMessage, "incorrect error on valid resource action name");
        }
 public void Test_19_TestAllowPreAddNameChange()
 {
     ResourceListController resourceListController = new ResourceListController();
     IResourceAction resourceAction = ResourceManagerFactory.CreateResourceAction();
     resourceAction.Template = false;
     Assert.IsFalse(resourceListController.AllowPreAddNameChange(resourceAction), "Shouldn't allow pre-add name change on non-template action");
     resourceAction.Template = true;
     Assert.IsTrue(resourceListController.AllowPreAddNameChange(resourceAction), "Shouldn allow pre-add name change on non-template action");
 }