A game framework written with osu! in mind.
1// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
2// See the LICENCE file in the repository root for full licence text.
3
4using System;
5using System.Collections.Generic;
6using NUnit.Framework;
7using osu.Framework.Configuration;
8using osu.Framework.Testing;
9
10namespace osu.Framework.Tests.Configuration
11{
12 [TestFixture]
13 public class FrameworkConfigManagerTest
14 {
15 [Test]
16 public void TestDefault()
17 {
18 using (var storage = new TemporaryNativeStorage(new Guid().ToString()))
19 {
20 using (var configManager = new FrameworkConfigManager(storage))
21 {
22 var bindable = configManager.GetBindable<string>(FrameworkSetting.Locale);
23
24 Assert.AreEqual(string.Empty, bindable.Value);
25 Assert.AreEqual(string.Empty, bindable.Default);
26 Assert.IsTrue(bindable.IsDefault);
27 }
28 }
29 }
30
31 [Test]
32 public void TestSaveLoad()
33 {
34 const double test_volume = 0.65;
35
36 using (var storage = new TemporaryNativeStorage(new Guid().ToString()))
37 {
38 using (var configManager = new FrameworkConfigManager(storage))
39 {
40 var bindable = configManager.GetBindable<double>(FrameworkSetting.VolumeMusic);
41
42 Assert.AreEqual(bindable.Default, bindable.Value);
43 Assert.IsTrue(bindable.IsDefault);
44
45 bindable.Value = test_volume;
46 Assert.AreEqual(test_volume, bindable.Value);
47 }
48
49 using (var configManager = new FrameworkConfigManager(storage))
50 {
51 var bindable = configManager.GetBindable<double>(FrameworkSetting.VolumeMusic);
52
53 Assert.IsFalse(bindable.IsDefault);
54 Assert.AreEqual(test_volume, bindable.Value);
55 }
56 }
57 }
58
59 [Test]
60 public void TestDefaultOverrides()
61 {
62 const string test_locale = "override test";
63
64 using (var storage = new TemporaryNativeStorage(new Guid().ToString()))
65 {
66 using (var configManager = new FrameworkConfigManager(storage, new Dictionary<FrameworkSetting, object> { { FrameworkSetting.Locale, test_locale } }))
67 {
68 var bindable = configManager.GetBindable<string>(FrameworkSetting.Locale);
69 Assert.AreEqual(test_locale, bindable.Value);
70 Assert.AreEqual(test_locale, bindable.Default);
71 Assert.IsTrue(bindable.IsDefault);
72
73 bindable.Value = string.Empty;
74 Assert.IsFalse(bindable.IsDefault);
75 }
76
77 // ensure correct after save
78 using (var configManager = new FrameworkConfigManager(storage, new Dictionary<FrameworkSetting, object> { { FrameworkSetting.Locale, test_locale } }))
79 {
80 var bindable = configManager.GetBindable<string>(FrameworkSetting.Locale);
81 Assert.AreEqual(test_locale, bindable.Default);
82 Assert.AreEqual(string.Empty, bindable.Value);
83 Assert.IsFalse(bindable.IsDefault);
84
85 bindable.Value = test_locale;
86 Assert.IsTrue(bindable.IsDefault);
87 }
88
89 // ensure correct after save with default
90 using (var configManager = new FrameworkConfigManager(storage, new Dictionary<FrameworkSetting, object> { { FrameworkSetting.Locale, test_locale } }))
91 {
92 var bindable = configManager.GetBindable<string>(FrameworkSetting.Locale);
93 Assert.AreEqual(test_locale, bindable.Value);
94 Assert.AreEqual(test_locale, bindable.Default);
95 Assert.IsTrue(bindable.IsDefault);
96 }
97 }
98 }
99 }
100}