using System; using System.Text; using System.Collections.Generic; using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; using RainmeterStudio.Storage; using System.IO; using RainmeterStudio.Core.Model; namespace RainmeterStudio.Tests.Storage { /// /// Tests the ProjectStorage class /// [TestClass] public class ProjectStorageTest { private ProjectStorage ProjectStorage = new ProjectStorage(); public TestContext TestContext { get; set; } [TestInitialize] public void Initialize() { Directory.SetCurrentDirectory(TestContext.DeploymentDirectory); } [TestMethod] public void ProjectStorageSmokeTest() { string filename = TestContext.TestName + ".rsproj"; // Create project Project project = CreateProject(); // Save and load ProjectStorage.Save(filename, project); Project res = ProjectStorage.Load(filename); // Verify results Assert.IsNotNull(res); Assert.AreEqual(project, res); Assert.AreEqual(project.GetHashCode(), res.GetHashCode()); Assert.AreEqual(project.Author, res.Author); Assert.AreEqual(project.AutoLoadFile, res.AutoLoadFile); Assert.AreEqual(project.MinimumRainmeter, res.MinimumRainmeter); Assert.AreEqual(project.MinimumWindows, res.MinimumWindows); Assert.AreEqual(project.Name, res.Name); Assert.AreEqual(project.Root, res.Root); Assert.IsTrue(project.VariableFiles.SequenceEqual(res.VariableFiles)); Assert.AreEqual(project.Version, res.Version); } [TestMethod] public void ProjectStorageEmptyProjectSmokeTest() { string filename = TestContext.TestName + ".rsproj"; // Create a project Project project = new Project(); // Save and load project ProjectStorage.Save(filename, project); Project res = ProjectStorage.Load(filename); // Test results Assert.IsNotNull(res); Assert.AreEqual(project, res); Assert.AreEqual(project.GetHashCode(), res.GetHashCode()); Assert.AreEqual(project.Author, res.Author); Assert.AreEqual(project.AutoLoadFile, res.AutoLoadFile); Assert.AreEqual(project.MinimumRainmeter, res.MinimumRainmeter); Assert.AreEqual(project.MinimumWindows, res.MinimumWindows); Assert.AreEqual(project.Name, res.Name); Assert.AreEqual(project.Root, res.Root); Assert.IsTrue(project.VariableFiles.SequenceEqual(res.VariableFiles)); Assert.AreEqual(project.Version, res.Version); } private Project CreateProject() { // Create some file references Reference folder1 = new Reference("folder1"); Reference folder2 = new Reference("folder2"); Reference file1 = new Reference("file1.txt"); Reference file2 = new Reference("file2.ini"); Reference file3 = new Reference("file3.bmp"); // Create a project Project project = new Project(); project.Author = "Tiberiu Chibici"; project.MinimumRainmeter = new Version("3.1"); project.MinimumWindows = new Version("5.1"); project.Name = "My project"; project.Version = new Version("1.0.1"); project.AutoLoadFile = file2; project.VariableFiles.Add(file1); // Set project references project.Root.Add(folder1); project.Root.Add(folder2); project.Root[0].Add(file1); project.Root[1].Add(file2); project.Root.Add(file3); return project; } } }