Esempio n. 1
0
        public void TestAdd()
        {
            var save =
                KspData.LoadKspFile(TestHelpers.BaseDataPath() + @"saves\KspPersistentSfswMods\persistent.sfs", Data.ProcRegistry.Create <SaveFile>());

            Data.Saves.Add(save, "Test-Save-001");
            Data.Saves["Test-Save-001"].Save();

            var savedSave01 = KspData.LoadKspFile <SaveFile>(TestHelpers.BaseDataTempPath() + @"saves\Test-Save-001\persistent.sfs");

            Assert.IsNotNull(savedSave01);
            Assert.AreEqual(save.Game.FlightState.Vessels.Count, savedSave01.Game.FlightState.Vessels.Count);

            Data.Saves["Test-Save-002"] = save;
            save.Save();

            var savedSave02 = KspData.LoadKspFile <SaveFile>(TestHelpers.BaseDataTempPath() + @"saves\Test-Save-002\persistent.sfs");

            Assert.IsNotNull(savedSave02);
            Assert.AreEqual(save.Game.FlightState.Vessels.Count, savedSave02.Game.FlightState.Vessels.Count);

            Data.Saves.Add((object)save, "Test-Save-003");
            Data.Saves["Test-Save-003"].Save();

            var savedSave03 = KspData.LoadKspFile <SaveFile>(TestHelpers.BaseDataTempPath() + @"saves\Test-Save-003\persistent.sfs");

            Assert.IsNotNull(savedSave03);
            Assert.AreEqual(save.Game.FlightState.Vessels.Count, savedSave03.Game.FlightState.Vessels.Count);
        }
        public void CloneTest()
        {
            var save  = KspData.LoadKspFile(TestHelpers.BaseDataTempPath() + @"saves\KspPersistentSfswMods\persistent.sfs", ProcessorRegistry.Create().Create <SaveFile>());
            var clone = save.Clone <SaveFile>();

            Assert.AreEqual(save.Game.Description, clone.Game.Description);
        }
Esempio n. 3
0
        private bool AllFilesMatch(DirectoryInfo dirInfo)
        {
            // Rigged to process all files possible before returing the result.
            var allFilesMatch = true;

#if NET45 || NET40
            foreach (var dir in dirInfo.EnumerateDirectories())
            {
                if (!AllFilesMatch(dir))
                {
                    allFilesMatch = false;
                }
            }

            var files = new List <string>();

            foreach (var file in dirInfo.EnumerateFiles())
            {
                files.Add(file.FullName);
            }
#elif NET35 || MONO210
            foreach (var dir in dirInfo.GetDirectories())
            {
                if (!AllFilesMatch(dir))
                {
                    allFilesMatch = false;
                }
            }

            var files = new List <string>();

            foreach (var file in dirInfo.GetFiles())
            {
                files.Add(file.FullName);
            }
#endif

            foreach (var file in files)
            {
                try
                {
                    var processedName = file + ".kspd";
                    var jobj          = KspData.LoadKspFile <JObject>(file);

                    jobj.ToString(Formatting.Indented, null).WriteToFile(file + ".json");
                    KspData.SaveFile(processedName, jobj);

                    if (!FilesAreEqual(file, processedName))
                    {
                        allFilesMatch = false;
                    }
                }
                catch (Exception ex)
                {
                    Assert.Fail(ex.Message, ex);
                }
            }

            return(allFilesMatch);
        }
Esempio n. 4
0
        public void CraftFileLoadTest()
        {
            var craft = KspData.LoadKspFile <CraftFile>(TestHelpers.BaseDataPath() + @"Ships\VAB\MultiSatMk1.craft");

            // Just a simple test to see if we can load a game
            Assert.IsNotNull(craft);
            Assert.IsNotNull(craft.DisplayName);
        }
Esempio n. 5
0
        /// <summary>
        /// Gets all objects managed by the repository
        /// </summary>
        /// <returns>object list</returns>
        public IList <T> Get()
        {
            var files = GetFiles();

            return(files != null
                ? files.FileNames.Cast <string>().Select(p => KspData.LoadKspFile(p, registry.Create <T>())).Where(obj => obj != null).ToList()
                : null);
        }
Esempio n. 6
0
        public void ConfigFileLoadTest()
        {
            var config =
                KspData.LoadKspFile <ConfigFile>(TestHelpers.BaseDataPath() + @"settings.cfg");

            // Just a simple test to see if we can load a game
            Assert.IsNotNull(config);
            Assert.IsNotNull(config.DisplayName);
        }
Esempio n. 7
0
        public void PartFileLoadTest()
        {
            var part =
                KspData.LoadKspFile <PartFile>(TestHelpers.BaseDataPath() + @"Parts\mumech_MechJeb\part.cfg");

            // Just a simple test to see if we can load a game
            Assert.IsNotNull(part);
            Assert.IsNotNull(part.DisplayName);
        }
Esempio n. 8
0
        public void TestUpdate()
        {
            var freshgame = KspData.LoadKspFile <SaveFile>(TestHelpers.BaseDataTempPath() + @"saves\freshgame\persistent.sfs");

            Data.Saves["KspPersistentSfswMods"] = freshgame;
            Data.Saves["KspPersistentSfswMods"].Save();

            var newFreshGame = KspData.LoadKspFile <SaveFile>(TestHelpers.BaseDataTempPath() + @"saves\KspPersistentSfswMods\persistent.sfs");

            Assert.AreEqual(freshgame.Game.Title, newFreshGame.Game.Title);
            Assert.AreEqual(freshgame.Game.FlightState, newFreshGame.Game.FlightState);
        }
Esempio n. 9
0
        public void DataTypeConvertTest()
        {
            var data = (new StreamReader(File.Open(TestHelpers.BaseDataPath() + @"Ships\VAB\MultiSatMk1.craft", FileMode.Open))).ReadToEnd();

            var convertedCraft  = KspData.Convert(data, ProcessorRegistry.Create().Create <CraftFile>()); // Bit ugly to test this use case, would never be this way in the real world as this is what happens internally
            var convertedCraft2 = KspData.Convert <CraftFile>(data);
            var craft           = KspData.LoadKspFile <CraftFile>(TestHelpers.BaseDataPath() + @"Ships\VAB\MultiSatMk1.craft");

            Assert.NotNull(convertedCraft);
            Assert.NotNull(convertedCraft2);
            Assert.AreEqual(craft.Parts.Count, convertedCraft.Parts.Count);
            Assert.AreEqual(craft.Parts.Count, convertedCraft2.Parts.Count);
        }
Esempio n. 10
0
        public void SaveFileLoadTest()
        {
            var save =
                KspData.LoadKspFile <SaveFile>(TestHelpers.BaseDataPath() + @"saves\KspPersistentSfswMods\persistent.sfs");

            // Just a simple test to see if we can load a game
            Assert.IsNotNull(save);
            Assert.IsNotNull(save.DisplayName);
            Assert.IsNotNull(save.Game);
            Assert.IsNotNull(save.Game.FlightState);
            Assert.IsNotNull(save.Game.FlightState.Vessels);
            Assert.AreEqual(180, save.Game.FlightState.Vessels.Count);
        }
Esempio n. 11
0
        /// <summary>
        /// Gets an object with a particular Id
        /// </summary>
        /// <param name="id">object id to retrieve</param>
        /// <returns>de-serialized object</returns>
        public T Get(string id)
        {
            if (!NameExists(id))
            {
                return(null);
            }

            T obj = KspData.LoadKspFile <T>(GetFileInfo(id).FullName, registry.Create <T>());

            (obj as StorableObject).Uri = GetFileInfo(id).DirectoryName;

            return(obj);
        }
Esempio n. 12
0
        public void TestSaveAll()
        {
            var description = "HELLO WORLD!";

            Data.Saves["KspPersistentSfswMods"].Game.Description = description;
            Data.Saves["freshgame"].Game.Description             = description;
            Data.Saves.Save();

            var save1 = KspData.LoadKspFile <SaveFile>(TestHelpers.BaseDataTempPath() + @"saves\KspPersistentSfswMods\persistent.sfs");
            var save2 = KspData.LoadKspFile <SaveFile>(TestHelpers.BaseDataTempPath() + @"saves\freshgame\persistent.sfs");

            Assert.AreEqual(description, save1.Game.Description);
            Assert.AreEqual(description, save2.Game.Description);
        }
        public void SingleFileSaveTest()
        {
            var save = KspData.LoadKspFile(TestHelpers.BaseDataTempPath() + @"saves\KspPersistentSfswMods\persistent.sfs", ProcessorRegistry.Create().Create <SaveFile>());

            save.Game.Description = "HELLO WORLD!";
            save.Save();

            var changed = KspData.LoadKspFile(TestHelpers.BaseDataTempPath() + @"saves\KspPersistentSfswMods\persistent.sfs", ProcessorRegistry.Create().Create <SaveFile>());

            Assert.AreEqual(save.Game.Description, changed.Game.Description);

            changed.Save(TestHelpers.BaseDataTempPath() + @"saves\KspPersistentSfswMods\newname.sfs");

            var newsave = KspData.LoadKspFile(TestHelpers.BaseDataTempPath() + @"saves\KspPersistentSfswMods\newname.sfs", ProcessorRegistry.Create().Create <SaveFile>());

            Assert.AreEqual(save.Game.Description, newsave.Game.Description);
        }
Esempio n. 14
0
        /// <summary>
        /// Adds/Updates an object of a particular ID
        /// </summary>
        /// <param name="id">Id to put</param>
        /// <param name="obj">object data</param>
        /// <returns>true=success;false=failure</returns>
        public bool Put(string id, T obj)
        {
            var info     = GetFileInfo(id);
            var savePath = info != null ? info.FullName : null;

            if (savePath != null && backup)
            {
                var count      = 0;
                var backupPath = savePath + "-BACKUP-" + DateTime.Now.ToString("yyyyMMdd_hhmmss");

                do
                {
                    count++;
                } while (File.Exists(backupPath + "_" + count));
                File.Copy(savePath, backupPath + "_" + count);
            }
            else if (savePath == null)
            {
                if (mode == FileMode.DirPerFile)
                {
                    var files   = GetFiles();
                    var saveDir = BaseUri + "\\" + id;
                    Directory.CreateDirectory(saveDir);
                    savePath = saveDir + "\\" + fileName;
                }
                else
                {
                    var files = GetFiles();
                    savePath = BaseUri + "\\" + id + fileName;
                }
            }

            KspData.SaveFile(savePath, obj, registry.Create <T>());

            return(true);
        }