public async Task TestSaveWorkspace() { // Saving a workspace must save all solutions and projects it contains string dir = Util.CreateTmpDir("TestSaveWorkspace"); Workspace ws = new Workspace(); ws.FileName = Path.Combine(dir, "workspace"); Solution sol = new Solution(); sol.FileName = Path.Combine(dir, "thesolution"); ws.Items.Add(sol); DotNetProject p = Services.ProjectService.CreateDotNetProject("C#"); p.FileName = Path.Combine(dir, "theproject"); sol.RootFolder.Items.Add(p); await ws.SaveAsync(Util.GetMonitor()); Assert.IsTrue(File.Exists(ws.FileName)); Assert.IsTrue(File.Exists(sol.FileName)); Assert.IsTrue(File.Exists(p.FileName)); ws.Dispose(); }
public void Disposing() { List <MyData> d = new List <MyData> (); for (int n = 0; n < 7; n++) { d.Add(new MyData()); } DotNetProject it2, it3, it4; DummySolutionItem it1; Workspace ws = new Workspace(); Workspace cws = new Workspace(); ws.Items.Add(cws); Solution sol1 = new Solution(); cws.Items.Add(sol1); sol1.RootFolder.Items.Add(it1 = new DummySolutionItem()); sol1.RootFolder.Items.Add(it2 = new DotNetAssemblyProject("C#")); Solution sol2 = new Solution(); cws.Items.Add(sol2); SolutionFolder f = new SolutionFolder(); sol2.RootFolder.Items.Add(f); f.Items.Add(it3 = new DotNetAssemblyProject("C#")); f.Items.Add(it4 = new DotNetAssemblyProject("C#")); ws.ExtendedProperties ["data"] = d[0]; cws.ExtendedProperties ["data"] = d[1]; it1.ExtendedProperties ["data"] = d[2]; it2.ExtendedProperties ["data"] = d[3]; it3.ExtendedProperties ["data"] = d[4]; it4.ExtendedProperties ["data"] = d[5]; f.ExtendedProperties ["data"] = d[6]; ws.Dispose(); for (int n = 0; n < d.Count; n++) { Assert.AreEqual(1, d[n].Disposed, "dispose check " + n); } }
public void AddRemoveEvents() { int itemsAddedRoot = 0; int itemsRemovedRoot = 0; int descItemsAddedRoot = 0; int descItemsRemovedRoot = 0; Workspace ws = new Workspace(); ws.DescendantItemAdded += delegate { descItemsAddedRoot++; }; ws.DescendantItemRemoved += delegate { descItemsRemovedRoot++; }; ws.ItemAdded += delegate { itemsAddedRoot++; }; ws.ItemRemoved += delegate { itemsRemovedRoot++; }; // Direct events Workspace cws1 = new Workspace(); ws.Items.Add(cws1); Assert.AreEqual(1, descItemsAddedRoot); Assert.AreEqual(1, itemsAddedRoot); ws.Items.Remove(cws1); Assert.AreEqual(1, descItemsRemovedRoot); Assert.AreEqual(1, itemsRemovedRoot); ws.Items.Add(cws1); Assert.AreEqual(2, descItemsAddedRoot); Assert.AreEqual(2, itemsAddedRoot); // Indirect events Solution sol = new Solution(); cws1.Items.Add(sol); Assert.AreEqual(3, descItemsAddedRoot); Assert.AreEqual(2, itemsAddedRoot); cws1.Items.Remove(sol); Assert.AreEqual(2, descItemsRemovedRoot); Assert.AreEqual(1, itemsRemovedRoot); ws.Dispose(); }
public void Configurations() { int configChangedEvs = 0; int configChangedEvsSub = 0; Workspace ws = new Workspace(); ws.ConfigurationsChanged += delegate { configChangedEvs++; }; Workspace cws1 = new Workspace(); cws1.ConfigurationsChanged += delegate { configChangedEvsSub++; }; ws.Items.Add(cws1); Solution sol = new Solution(); cws1.Items.Add(sol); ReadOnlyCollection <string> configs = ws.GetConfigurations(); Assert.AreEqual(0, configs.Count); configs = cws1.GetConfigurations(); Assert.AreEqual(0, configs.Count); // Add configurations configChangedEvs = configChangedEvsSub = 0; sol.AddConfiguration("c1", false); Assert.AreEqual(1, configChangedEvs); Assert.AreEqual(1, configChangedEvsSub); configs = ws.GetConfigurations(); Assert.AreEqual(1, configs.Count); Assert.AreEqual("c1", configs[0]); configs = cws1.GetConfigurations(); Assert.AreEqual(1, configs.Count); Assert.AreEqual("c1", configs[0]); configChangedEvs = configChangedEvsSub = 0; sol.AddConfiguration("c2", false); Assert.AreEqual(1, configChangedEvs); Assert.AreEqual(1, configChangedEvsSub); configs = ws.GetConfigurations(); Assert.AreEqual(2, configs.Count); Assert.AreEqual("c1", configs[0]); Assert.AreEqual("c2", configs[1]); configs = cws1.GetConfigurations(); Assert.AreEqual(2, configs.Count); Assert.AreEqual("c1", configs[0]); Assert.AreEqual("c2", configs[1]); // Add another solution Solution sol2 = new Solution(); sol2.AddConfiguration("c3", false); sol2.AddConfiguration("c4", false); configChangedEvs = configChangedEvsSub = 0; cws1.Items.Add(sol2); Assert.AreEqual(1, configChangedEvs); Assert.AreEqual(1, configChangedEvsSub); configs = ws.GetConfigurations(); Assert.AreEqual(4, configs.Count); Assert.AreEqual("c1", configs[0]); Assert.AreEqual("c2", configs[1]); Assert.AreEqual("c3", configs[2]); Assert.AreEqual("c4", configs[3]); configs = cws1.GetConfigurations(); Assert.AreEqual(4, configs.Count); Assert.AreEqual("c1", configs[0]); Assert.AreEqual("c2", configs[1]); Assert.AreEqual("c3", configs[2]); Assert.AreEqual("c4", configs[3]); // Remove solution configChangedEvs = configChangedEvsSub = 0; cws1.Items.Remove(sol2); Assert.AreEqual(1, configChangedEvs); Assert.AreEqual(1, configChangedEvsSub); configs = ws.GetConfigurations(); Assert.AreEqual(2, configs.Count); Assert.AreEqual("c1", configs[0]); Assert.AreEqual("c2", configs[1]); configs = cws1.GetConfigurations(); Assert.AreEqual(2, configs.Count); Assert.AreEqual("c1", configs[0]); Assert.AreEqual("c2", configs[1]); // Remove configuration configChangedEvs = configChangedEvsSub = 0; sol.Configurations.RemoveAt(1); Assert.AreEqual(1, configChangedEvs); Assert.AreEqual(1, configChangedEvsSub); configs = ws.GetConfigurations(); Assert.AreEqual(1, configs.Count); Assert.AreEqual("c1", configs[0]); configs = cws1.GetConfigurations(); Assert.AreEqual(1, configs.Count); Assert.AreEqual("c1", configs[0]); // Remove child workspace configChangedEvs = configChangedEvsSub = 0; ws.Items.Remove(cws1); Assert.AreEqual(1, configChangedEvs); configs = ws.GetConfigurations(); Assert.AreEqual(0, configs.Count); ws.Dispose(); }
public void ModelQueries() { DotNetProject it2, it3, it4; DummySolutionItem it1; string someFile, someId; Workspace ws = new Workspace(); Workspace cws = new Workspace(); ws.Items.Add(cws); Solution sol1 = new Solution(); cws.Items.Add(sol1); sol1.RootFolder.Items.Add(it1 = new DummySolutionItem()); sol1.RootFolder.Items.Add(it2 = Services.ProjectService.CreateDotNetProject("C#")); Solution sol2 = new Solution(); cws.Items.Add(sol2); SolutionFolder f = new SolutionFolder(); sol2.RootFolder.Items.Add(f); f.Items.Add(it3 = Services.ProjectService.CreateDotNetProject("C#")); f.Items.Add(it4 = Services.ProjectService.CreateDotNetProject("C#")); it3.Name = "it3"; it4.FileName = "/test/it4"; someFile = it4.FileName; someId = it3.ItemId; Assert.IsFalse(string.IsNullOrEmpty(someId)); Assert.AreEqual(2, sol1.Items.Count); Assert.IsTrue(sol1.Items.Contains(it1)); Assert.IsTrue(sol1.Items.Contains(it2)); Assert.AreEqual(2, sol2.Items.Count); Assert.IsTrue(sol2.Items.Contains(it3)); Assert.IsTrue(sol2.Items.Contains(it4)); var its = ws.GetAllItems <SolutionFolderItem> ().ToList(); Assert.AreEqual(7, its.Count); Assert.IsTrue(its.Contains(it1)); Assert.IsTrue(its.Contains(it2)); Assert.IsTrue(its.Contains(it3)); Assert.IsTrue(its.Contains(it4)); Assert.IsTrue(its.Contains(sol1.RootFolder)); Assert.IsTrue(its.Contains(sol2.RootFolder)); Assert.IsTrue(its.Contains(f)); var its2 = ws.GetAllItems <DotNetProject> ().ToList(); Assert.AreEqual(3, its2.Count); Assert.IsTrue(its2.Contains(it2)); Assert.IsTrue(its2.Contains(it3)); Assert.IsTrue(its2.Contains(it4)); var its3 = ws.GetAllItems <Project> ().ToList(); Assert.AreEqual(3, its3.Count); Assert.IsTrue(its3.Contains(it2)); Assert.IsTrue(its3.Contains(it3)); Assert.IsTrue(its3.Contains(it4)); var its4 = ws.GetAllItems <Solution> ().ToList(); Assert.AreEqual(2, its4.Count); Assert.IsTrue(its4.Contains(sol1)); Assert.IsTrue(its4.Contains(sol2)); var its5 = ws.GetAllItems <WorkspaceItem> ().ToList(); Assert.AreEqual(4, its5.Count); Assert.IsTrue(its5.Contains(ws)); Assert.IsTrue(its5.Contains(cws)); Assert.IsTrue(its5.Contains(sol2)); Assert.IsTrue(its5.Contains(sol2)); var its6 = ws.GetAllItems <Workspace> ().ToList(); Assert.AreEqual(2, its6.Count); Assert.IsTrue(its6.Contains(ws)); Assert.IsTrue(its6.Contains(cws)); SolutionFolderItem si = sol2.GetSolutionItem(someId); Assert.AreEqual(it3, si); SolutionItem fi = sol2.FindSolutionItem(someFile); Assert.AreEqual(it4, fi); fi = sol2.FindProjectByName("it3"); Assert.AreEqual(it3, fi); fi = sol2.FindProjectByName("it4"); Assert.AreEqual(it4, fi); fi = sol2.FindProjectByName("it2"); Assert.IsNull(fi); ws.Dispose(); cws.Dispose(); }
public void Disposing () { List<MyData> d = new List<MyData> (); for (int n=0; n<7; n++) d.Add (new MyData ()); DotNetProject it2, it3, it4; DummySolutionItem it1; Workspace ws = new Workspace (); Workspace cws = new Workspace (); ws.Items.Add (cws); Solution sol1 = new Solution (); cws.Items.Add (sol1); sol1.RootFolder.Items.Add (it1 = new DummySolutionItem ()); sol1.RootFolder.Items.Add (it2 = Services.ProjectService.CreateDotNetProject ("C#")); Solution sol2 = new Solution (); cws.Items.Add (sol2); SolutionFolder f = new SolutionFolder (); sol2.RootFolder.Items.Add (f); f.Items.Add (it3 = Services.ProjectService.CreateDotNetProject ("C#")); f.Items.Add (it4 = Services.ProjectService.CreateDotNetProject ("C#")); ws.ExtendedProperties ["data"] = d[0]; cws.ExtendedProperties ["data"] = d[1]; it1.ExtendedProperties ["data"] = d[2]; it2.ExtendedProperties ["data"] = d[3]; it3.ExtendedProperties ["data"] = d[4]; it4.ExtendedProperties ["data"] = d[5]; f.ExtendedProperties ["data"] = d[6]; ws.Dispose (); for (int n=0; n<d.Count; n++) Assert.AreEqual (1, d[n].Disposed, "dispose check " + n); }