File size: 2,958 Bytes
18a519f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using System.IO;
using NUnit.Framework;
using UnityEditor.SettingsManagement;

namespace UnityEngine.SettingsManagement.EditorTests
{
	class MultipleProjectSettings
	{
		const string k_MultipleSettingFilesPackageName = "com.unity.settings-manager.tests";
		const string k_SettingsFileA = "FileA";
		const string k_SettingsFileB = "FileB";

		[TearDown]
		public void Teardown()
		{
			var expectedPath = PackageSettingsRepository.GetSettingsPath(k_MultipleSettingFilesPackageName);
			var expectedPathA = PackageSettingsRepository.GetSettingsPath(k_MultipleSettingFilesPackageName, k_SettingsFileA);
			var expectedPathB = PackageSettingsRepository.GetSettingsPath(k_MultipleSettingFilesPackageName, k_SettingsFileB);

			if(File.Exists(expectedPath))
				File.Delete(expectedPath);

			if(File.Exists(expectedPathA))
				File.Delete(expectedPathA);

			if(File.Exists(expectedPathB))
				File.Delete(expectedPathB);
		}

		[Test]
		public void NewSettingsInstance_CreatesUserAndProjectSettings()
		{
			var expectedPath = PackageSettingsRepository.GetSettingsPath(k_MultipleSettingFilesPackageName);

			Assume.That(File.Exists(expectedPath), Is.False);

			var settings = new Settings(k_MultipleSettingFilesPackageName);
			settings.Save();

			Assert.That(File.Exists(expectedPath), Is.True);
		}

		[Test]
		public void NewSettingsInstance_SupportsMultipleProjectRepositories()
		{
			var expectedPathA = PackageSettingsRepository.GetSettingsPath(k_MultipleSettingFilesPackageName, "FileA");
			var expectedPathB = PackageSettingsRepository.GetSettingsPath(k_MultipleSettingFilesPackageName, "FileB");

			Assume.That(File.Exists(expectedPathA), Is.False);
			Assume.That(File.Exists(expectedPathB), Is.False);

			var settings = new Settings(new ISettingsRepository[]
			{
				new PackageSettingsRepository(k_MultipleSettingFilesPackageName, "FileA"),
				new PackageSettingsRepository(k_MultipleSettingFilesPackageName, "FileB")
			});

			settings.Save();

			Assert.That(File.Exists(expectedPathA), Is.True);
			Assert.That(File.Exists(expectedPathB), Is.True);
		}

		[Test]
		public void MultipleNamedProjectSettings_StoreSettingsSeparately()
		{
			var expectedPathA = PackageSettingsRepository.GetSettingsPath(k_MultipleSettingFilesPackageName, "FileA");
			var expectedPathB = PackageSettingsRepository.GetSettingsPath(k_MultipleSettingFilesPackageName, "FileB");

			Assume.That(File.Exists(expectedPathA), Is.False);
			Assume.That(File.Exists(expectedPathB), Is.False);

			var settings = new Settings(new ISettingsRepository[]
			{
				new PackageSettingsRepository(k_MultipleSettingFilesPackageName, "FileA"),
				new PackageSettingsRepository(k_MultipleSettingFilesPackageName, "FileB")
			});

			settings.Set<int>("value_a", 32, "FileA");
			settings.Set<int>("value_a", 64, "FileB");

			Assert.That(settings.Get<int>("value_a", "FileA"), Is.EqualTo(32));
			Assert.That(settings.Get<int>("value_a", "FileB"), Is.EqualTo(64));
		}
	}
}