コード例 #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="FileSystemRepository{T}" /> class.
        /// </summary>
        /// <remarks>
        /// Required constructor signature for all classes implementing <see cref="IKerbalDataRepo{T}"/>
        /// </remarks>
        public FileSystemRepository(ProcessorRegistry registry, IDictionary <string, object> parameters)
        {
            if (parameters == null ||
                !parameters.ContainsKey(IncludeParamName) ||
                !parameters.ContainsKey(UriParamName) ||
                !parameters.ContainsKey(FileNameParamName) ||
                !parameters.ContainsKey(FileModeParamName))
            {
                throw new KerbalDataException("The KspInstallFileRepo requires a search filter at minimum");
            }

            this.registry = registry;

            BaseUri = GetParameter(UriParamName, parameters).ToString();

            includes = GetParameter(IncludeParamName, parameters).ToString().Split(PathSeparator).Select(i => i).ToArray();

            excludes = GetParameter(ExcludeParamName, parameters) != null
                ? GetParameter(ExcludeParamName, parameters).ToString().Split(PathSeparator).Select(i => i).ToArray() : null;

            fileName = GetParameter(FileNameParamName, parameters).ToString();

            mode = GetParameter(FileModeParamName, parameters) != null
                ? (FileMode)Enum.Parse(typeof(FileMode), GetParameter(FileModeParamName, parameters).ToString()) : FileMode.Flat;

            backup = GetParameter(BackupParamName, parameters) == null || (bool)GetParameter(BackupParamName, parameters);
        }
コード例 #2
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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }