public void CorrectlyHandlesValuesWithDefaults(string configurationKey, bool setValueBeforeRetrieving, object valueToSet, object defaultValue, object expectedValue)
            {
                var workspace = new Workspace();

                if (setValueBeforeRetrieving)
                {
                    workspace.SetConfigurationValue(configurationKey, valueToSet);
                }

                var currentValue = workspace.GetWorkspaceValue(configurationKey, defaultValue);

                Assert.AreEqual(expectedValue, currentValue);
            }
        public void SynchronizesWorkspaces()
        {
            var workspaceA = new Workspace();
            workspaceA.SetWorkspaceValue("A", 1);
            workspaceA.SetWorkspaceValue("B", 2);
            workspaceA.SetWorkspaceValue("C", 3);

            var workspaceB = new Workspace();
            workspaceB.SetWorkspaceValue("D", 4);
            workspaceB.SetWorkspaceValue("E", 5);
            workspaceB.SetWorkspaceValue("F", 6);

            workspaceA.SynchronizeWithWorkspace(workspaceB);

            Assert.AreEqual(0, workspaceA.GetWorkspaceValue("A", 0));
            Assert.AreEqual(0, workspaceA.GetWorkspaceValue("B", 0));
            Assert.AreEqual(0, workspaceA.GetWorkspaceValue("C", 0));
            Assert.AreEqual(4, workspaceA.GetWorkspaceValue("D", 0));
            Assert.AreEqual(5, workspaceA.GetWorkspaceValue("E", 0));
            Assert.AreEqual(6, workspaceA.GetWorkspaceValue("F", 0));
        }
            public async Task CorrectlyRemovesProviderWhenStoringWorkspace()
            {
                var workspaceManager = Factories.WorkspaceManager.WithEmptyInitializer();
                var workspace = new Workspace
                {
                    Title = WorkspaceNameHelper.GetRandomWorkspaceName()
                };

                await workspaceManager.AddAsync(workspace, true);

                var workspaceProvider = new WorkspaceProvider("key1", "value1");
                workspaceManager.AddProvider(workspaceProvider);
                workspaceManager.RemoveProvider(workspaceProvider);

                await workspaceManager.StoreWorkspaceAsync();

                Assert.AreEqual("expected", workspace.GetWorkspaceValue("key1", "expected"));
            }