Example #1
0
        public T restoreObject <T>(Stream stream, SaverOutputType format)
        {
            stream = new NoCloseStream(stream);
            switch (format)
            {
            case SaverOutputType.Json:
                using (var reader = new JsonTextReader(new StreamReader(stream)))
                {
                    return(jsonSaver.Value.restoreObject <T>(reader));
                }

            case SaverOutputType.Bson:
                using (var reader = new BsonDataReader(stream)
                {
                    ReadRootValueAsArray = true
                })
                {
                    return(jsonSaver.Value.restoreObject <T>(reader));
                }

            case SaverOutputType.Xml:
                using (var reader = new XmlTextReader(stream))
                {
                    return((T)xmlSaver.Value.restoreObject(reader));
                }

            default:
                throw new NotImplementedException($"{nameof(SaverOutputType)} format {format} not supported.");
            }
        }
Example #2
0
        public void saveObject(Saveable save, Stream stream, SaverOutputType format)
        {
            stream = new NoCloseStream(stream);
            switch (format)
            {
            case SaverOutputType.Json:
                using (var writer = new JsonTextWriter(new StreamWriter(stream)))
                {
                    if (WritePretty)
                    {
                        writer.Formatting = Newtonsoft.Json.Formatting.Indented;
                    }
                    jsonSaver.Value.saveObject(save, writer);
                }
                break;

            case SaverOutputType.Bson:
                using (var writer = new BsonDataWriter(stream))
                {
                    jsonSaver.Value.saveObject(save, writer);
                }
                break;

            case SaverOutputType.Xml:
                using (var writer = new XmlTextWriter(stream, Encoding.Unicode))
                {
                    if (WritePretty)
                    {
                        writer.Formatting = System.Xml.Formatting.Indented;
                    }
                    xmlSaver.Value.saveObject(save, writer);
                }
                break;
            }
        }
Example #3
0
        public void Save(SaverOutputType type)
        {
            var saver = mockup.Get <Saver>();

            using (var stream = new MemoryStream())
            {
                saver.saveObject(data, stream, type);
            }
        }
Example #4
0
        public void Load(SaverOutputType type)
        {
            var saver = mockup.Get <Saver>();

            using (var stream = new MemoryStream())
            {
                saver.saveObject(data, stream, type);

                stream.Seek(0, SeekOrigin.Begin);

                var loaded = saver.restoreObject <SaveTest <int> >(stream, type);
                Assert.Equal(data.TheProp, loaded.TheProp);
            }
        }
Example #5
0
        public static SaverOutputType TypeFromFile(String file, bool throwOnError = false, SaverOutputType fallback = SaverOutputType.Json)
        {
            switch (Path.GetExtension(file).ToLowerInvariant())
            {
            case ".json":
                return(SaverOutputType.Json);

            case ".bson":
                return(SaverOutputType.Bson);

            case ".xml":
                return(SaverOutputType.Xml);
            }
            if (throwOnError)
            {
                throw new InvalidOperationException($"{file} is not a recognized output type for saver");
            }
            return(fallback);
        }