public void DeserializeTest(DistributedPropertySet data, ISettingsSerializer serializer) { IDistributedPropertySet result = null; var config = TestStartup.Configuration; try { result = serializer.Deserialize(serializer.Serialize(data)); } catch (Exception e) { _output.WriteLine(e.ToString()); e.Data.Keys.Cast <string>().ToList().ForEach(key => _output.WriteLine(e.Data[key].ToString())); throw; } Assert.NotNull(result); foreach (var key in data.Keys) { Assert.True(result.ContainsKey(key)); _output.WriteLine($"{key}: {data[key]} {(data[key].Equals(result[key]) ? "==" : "!=")} {result[key]}"); Assert.Equal(data[key], result[key]); } }
public void BuildTests(DistributedPropertySet dataSet, ISettingsSerializer serializer) { Startup = TestStartup.Build(fileType: serializer switch { BinarySettingsSerializer binary => FileTypes.Binary, XmlSettingsSerializer xml => FileTypes.XML, YamlSettingsSerializer yaml => FileTypes.Other, _ => FileTypes.JSON });
public IDistributedPropertySet Deserialize(byte[] source) { using var stream = new MemoryStream(source); using var xmlReader = new XmlTextReader(stream); var data = new DistributedPropertySet(); data.ReadXml(xmlReader); return(data); }
public void AddOrUpdateTest_AddFactory(string name, object value) { var flag = false; var set = new DistributedPropertySet(); set.MapChanged += (sender, args) => { Assert.Equal(DistributedCollectionChange.ItemInserted, args.DistributedCollectionChange); flag = true; }; Assert.Equal(value, set.AddOrUpdate(name, n => value, null)); Assert.True(flag); }
public void ClearTest() { var set = new DistributedPropertySet(); set.TryAdd("string", "0"); set.TryAdd("int", int.MaxValue); set.TryAdd("uint", uint.MaxValue); set.TryAdd("double", double.MaxValue); Assert.NotEmpty(set); set.Clear(); Assert.Empty(set); }
public void TryAddTest(string name, object value) { var flag = false; var set = new DistributedPropertySet(); set.MapChanged += (sender, args) => { if (args.DistributedCollectionChange == DistributedCollectionChange.ItemInserted) { flag = true; } }; Assert.True(set.TryAdd(name, value)); Assert.Equal(value, set[name]); Assert.True(flag); }
public void GetOrAddTest_AddFactoryWithArgument(string name, object value) { var flag = false; var set = new DistributedPropertySet(); set.MapChanged += (sender, args) => { if (args.DistributedCollectionChange == DistributedCollectionChange.ItemInserted) { flag = true; } }; Assert.Equal(value, set.GetOrAdd(name, (n, arg) => arg, value)); Assert.Equal(value, set.TryGetValue(name, out var outValue) ? outValue : null); Assert.True(flag); }
public void AddOrUpdateTest_UpdateFactory(string name, object addValue, object updateValue) { var flag = false; var set = new DistributedPropertySet(); set.MapChanged += (sender, args) => { if (args.DistributedCollectionChange == DistributedCollectionChange.ItemChanged) { flag = true; } }; Assert.True(set.TryAdd(name, addValue)); Assert.Equal(updateValue, set.AddOrUpdate(name, n => addValue, (n, v) => updateValue)); Assert.True(flag); }
public void TryRemoveTest(string name, object value) { var flag = false; var set = new DistributedPropertySet(); set.MapChanged += (sender, args) => { if (args.DistributedCollectionChange == DistributedCollectionChange.ItemRemoved) { flag = true; } }; Assert.True(set.TryAdd(name, value)); Assert.True(set.TryRemove(name, out var outValue)); Assert.Equal(value, outValue); Assert.False(set.ContainsKey(name)); Assert.True(flag); }
public IDistributedPropertySet Deserialize(byte[] source) { var yaml = Encoding.UTF8.GetString(source); var valueKindDictionary = new Deserializer().Deserialize <Dictionary <string, Pair> >(yaml); if (valueKindDictionary == null) { return(null); } var results = new DistributedPropertySet(); valueKindDictionary.ToList().ForEach(pair => { try { var toParse = pair.Value.Value.ToString(); results.TryAdd(pair.Key, Type.GetType(pair.Value.Key)?.Name switch { nameof(String) => toParse, nameof(Int16) => short.TryParse(toParse, out var parsed) ? parsed : default,
public void NameNotFoundTryGetTest() { var set = new DistributedPropertySet(); Assert.False(set.TryGetValue("string", out _)); }
public void NameNotFoundIndexerTest() { var set = new DistributedPropertySet(); Assert.Throws <KeyNotFoundException>((Action)(() => _ = set["string"])); }
public void NullNameTest() { var set = new DistributedPropertySet(); Assert.Throws <ArgumentNullException>((Action)(() => set.TryAdd(null, null))); }
public FilePersistenceManager(IServiceProvider provider , IConfiguration configuration , ISettingsMetadata metadata , IFilePersistenceProvider persistenceProvider) { _current = this; Configuration = configuration; Metadata = metadata; PersistenceProvider = persistenceProvider; LocalPath ??= configuration[SETTINGS_SYNC_DEFAULT_PATH_LOCAL] ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), metadata.AppName); if (!File.Exists(Path.Combine(LocalPath, Metadata.AppName + $".{PersistenceProvider.FileExtension}"))) { var fileWriter = PersistenceProvider.FileType switch { FileTypes.Binary => (IFilePersistenceProvider)provider.GetService <BinaryPersistenceProvider>(), FileTypes.XML => (IFilePersistenceProvider)provider.GetService <XmlPersistenceProvider>(), FileTypes.Other => (IFilePersistenceProvider)provider.GetService( Assembly .Load(configuration[SETTINGS_SYNC_SETTINGS_FILE_OTHER_PROVIDER_ASSEMBLY]) .GetType(configuration[SETTINGS_SYNC_SETTINGS_FILE_OTHER_PROVIDER])), _ => (IFilePersistenceProvider)provider.GetService <JsonPersistenceProvider>() }; var blankFile = new DistributedPropertySet(); blankFile.SetValues(Metadata.BlankFile[SettingsScopes.Local]); fileWriter.WriteFile(Metadata.AppName, LocalPath, SettingsScopes.Local, blankFile); } var localData = PersistenceProvider.OpenFile(Metadata.AppName, LocalPath, SettingsScopes.Local); AddApplicationData(localData, SettingsScopes.Local); RoamingPath ??= configuration[SETTINGS_SYNC_DEFAULT_PATH_ROAMING] ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "One Drive", metadata.AppName); if (!File.Exists(Path.Combine(RoamingPath, Metadata.AppName + $".{PersistenceProvider.FileExtension}"))) { var fileWriter = PersistenceProvider.FileType switch { FileTypes.Binary => (IFilePersistenceProvider)provider.GetService <BinaryPersistenceProvider>(), FileTypes.XML => (IFilePersistenceProvider)provider.GetService <XmlPersistenceProvider>(), FileTypes.Other => (IFilePersistenceProvider)provider.GetService( Assembly .Load(configuration[SETTINGS_SYNC_SETTINGS_FILE_OTHER_PROVIDER_ASSEMBLY]) .GetType(configuration[SETTINGS_SYNC_SETTINGS_FILE_OTHER_PROVIDER])), _ => (IFilePersistenceProvider)provider.GetService <JsonPersistenceProvider>() }; var blankFile = new DistributedPropertySet(); blankFile.SetValues(Metadata.BlankFile[SettingsScopes.Roaming]); fileWriter.WriteFile(Metadata.AppName, RoamingPath, SettingsScopes.Roaming, blankFile); } var roamingData = PersistenceProvider.OpenFile(Metadata.AppName, RoamingPath, SettingsScopes.Roaming); AddApplicationData(localData, SettingsScopes.Roaming); }